All guides
IntermediateSelf-pacedFree GuideSection 24/95

SQL — INSERT, UPDATE, DELETE et schéma

Practise development foundations: programming, web, APIs, data and AI tools. Work through sections and exercises to build your first projects.

The full lessons for this course are currently available in French. Use the section menu to navigate the French course.

💡

Free content, available without an account. Tools and models change: use the current model guide to check their versions. Models and 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'
Quick Check

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

Quick Check

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

Your progress

Progress is self-reported and stored in your browser. The final completion record is not a qualification or an independent assessment.

View progress and completion record

Learn AI, from prompts to agents

15 free guidesQuizzes, diagrams and workshopsNo account needed

One practical AI workflow in your inbox

Methods, resources and new exercises. Free, unsubscribe at any time.