Tous les guides
IntermédiaireÀ votre rythmeGuide gratuitSection 24/95

SQL — INSERT, UPDATE, DELETE et schéma

Pratiquez les fondations du développement : programmation, web, API, données et usages de l’IA. Des sections et exercices pour construire vos premiers projets.

💡

Contenu gratuit, accessible sans compte. Les outils et modèles évoluent : consultez le dossier actuel pour vérifier leurs versions. Modèles et sources

Section 11.2.4 : SQL — INSERT, UPDATE, DELETE et schéma

🎯 Objectif pédagogique

Maîtriser les opérations d'écriture SQL (INSERT, UPDATE, DELETE) et la définition de schéma (CREATE TABLE). Vous serez capable de créer des tables, insérer des données, les mettre à jour et les supprimer en toute sécurité.


Les opérations CRUD

CRUD = Create, Read, Update, Delete — les 4 opérations fondamentales sur les données :

OpérationSQLHTTPDescription
CreateINSERTPOSTAjouter des données
ReadSELECTGETLire des données
UpdateUPDATEPUT/PATCHModifier des données
DeleteDELETEDELETESupprimer des données

CREATE TABLE — Définir la structure

CREATE TABLE applications (
  id SERIAL PRIMARY KEY,          -- Auto-increment (PostgreSQL)
  user_id INTEGER NOT NULL,       -- Obligatoire
  company VARCHAR(100) NOT NULL,
  position VARCHAR(100) NOT NULL,
  status VARCHAR(20) DEFAULT 'applied',
  salary_min INTEGER,
  salary_max INTEGER,
  applied_date DATE DEFAULT CURRENT_DATE,
  notes TEXT,
  created_at TIMESTAMP DEFAULT NOW(),
  
  -- Contrainte : user_id doit exister dans users
  FOREIGN KEY (user_id) REFERENCES users(id),
  
  -- Contrainte : salaire max > salaire min
  CHECK (salary_max IS NULL OR salary_max >= salary_min)
);

Types de données courants :

TypeUsageExemple
INTEGERNombres entiersid, age, quantité
SERIALAuto-incrementid (clé primaire)
VARCHAR(n)Texte limité à n caractèresname, email
TEXTTexte illimitédescription, notes
BOOLEANVrai/Fauxis_active
DATEDateapplied_date
TIMESTAMPDate + heurecreated_at
DECIMAL(10,2)Nombre décimal précisprix
JSONBJSON binaire (PostgreSQL)metadata

INSERT — Ajouter des données

-- Insérer une ligne
INSERT INTO applications (user_id, company, position, status, salary_min)
VALUES (1, 'Mistral AI', 'ML Engineer', 'applied', 90000);

-- Insérer plusieurs lignes
INSERT INTO applications (user_id, company, position, salary_min) VALUES
(1, 'Datadog', 'Backend Python', 65000),
(1, 'Doctolib', 'Full-Stack', 60000),
(2, 'OVH', 'DevOps', 45000);

-- Insérer et retourner l'ID créé (PostgreSQL)
INSERT INTO applications (user_id, company, position)
VALUES (1, 'Vercel', 'Frontend')
RETURNING id, company;

UPDATE — Modifier des données

-- Modifier une candidature spécifique
UPDATE applications 
SET status = 'interview', notes = 'Entretien le 20 mars'
WHERE id = 5;

-- Modifier plusieurs lignes
UPDATE applications 
SET status = 'rejected'
WHERE applied_date < '2026-01-01' AND status = 'applied';

TOUJOURS un WHERE avec UPDATE et DELETE !

UPDATE applications SET status = 'rejected' sans WHERE modifie TOUTES les lignes. C'est l'erreur la plus destructrice en SQL. Marc a failli rejeter toutes ses candidatures par erreur. Règle de survie : écrivez le WHERE AVANT le SET.

DELETE — Supprimer des données

-- Supprimer une candidature
DELETE FROM applications WHERE id = 3;

-- Supprimer les candidatures anciennes refusées
DELETE FROM applications 
WHERE status = 'rejected' 
  AND applied_date < '2026-01-01';

-- ⚠️ JAMAIS sans WHERE !
-- DELETE FROM applications;  -- Supprime TOUT

ALTER TABLE — Modifier la structure

-- Ajouter une colonne
ALTER TABLE applications ADD COLUMN url TEXT;

-- Renommer une colonne
ALTER TABLE applications RENAME COLUMN url TO job_url;

-- Supprimer une colonne
ALTER TABLE applications DROP COLUMN job_url;

-- Ajouter un index (performance)
CREATE INDEX idx_applications_status ON applications(status);
CREATE INDEX idx_applications_user ON applications(user_id);

🏋️ Exercice pratique (20 minutes)

-- Pratiquez le CRUD complet
-- 1. Créez une table 'skills' (id, name, category, level)
-- 2. Insérez 5 compétences
-- 3. Modifiez le niveau de Python de 'beginner' à 'intermediate'
-- 4. Supprimez les skills avec level = 'unknown'
-- 5. Ajoutez une colonne 'learned_date'
Vérification rapide

Que se passe-t-il si vous exécutez : UPDATE users SET active = false; ?

Vérification rapide

Quel type de donnée est recommandé pour les prix en SQL ?

Votre progression

Cette progression est déclarative et conservée dans votre navigateur. L’attestation finale ne constitue pas un diplôme ni une évaluation indépendante.

Voir ma progression et mon attestation

Apprendre l’IA, du premier prompt aux agents

15 guides gratuitsQuiz, schémas et ateliersSans compte

Un cas pratique IA dans votre boîte mail

Méthodes, ressources et nouveaux exercices. Gratuit, avec désinscription à tout moment.