📚 Fiche Résumé - Séance 7 : SQL INSERT, UPDATE, DELETE

🎯 Objectifs de la séance

➕ 1. INSERT - Ajouter des données

Syntaxe 1 : Insertion avec tous les attributs

Tous les attributs sont spécifiés dans l'ordre de la table.

INSERT INTO MATIERE 
VALUES ('INF121', 'Algorithmique 1 Bis', 2.1, 'INF');
⚠️ Important : L'ordre des valeurs doit correspondre exactement à l'ordre des colonnes dans la table.

Syntaxe 2 : Insertion avec attributs spécifiques

On spécifie uniquement les colonnes qu'on souhaite remplir.

INSERT INTO MATIERE (codeMatiere, nomMatiere, codeModule) 
VALUES ('INF122', 'Algorithmique 1 Ter', 'INF');
💡 Avantage : Plus flexible, permet d'omettre les colonnes optionnelles ou avec valeurs par défaut.

Cas particuliers

✏️ 2. UPDATE - Modifier des données

Syntaxe de base

UPDATE nomTable 
SET colonne1 = valeur1, colonne2 = valeur2
WHERE condition;

Exemple 1 : Modifier une ligne spécifique

UPDATE MATIERE 
SET nomMatiere = 'SQL for ever' 
WHERE codeMatiere = 'INF121';

Modifie uniquement la matière dont le code est 'INF121'.

Exemple 2 : Modifier plusieurs colonnes

UPDATE MATIERE 
SET nomMatiere = 'Bases de données', coefficient = 3.0 
WHERE codeMatiere = 'INF220';
⚠️ DANGER : UPDATE sans WHERE
UPDATE MATIERE 
SET nomMatiere = 'SQL pour toutes les matières';

Modifie TOUTES les lignes de la table ! Toujours vérifier la clause WHERE.

Bonnes pratiques

🗑️ 3. DELETE - Supprimer des données

Syntaxe de base

DELETE FROM nomTable 
WHERE condition;

Exemple 1 : Supprimer une ligne spécifique

DELETE FROM MATIERE 
WHERE codeMatiere = 'CIM421';

Exemple 2 : Supprimer plusieurs lignes

DELETE FROM ETUDIANT 
WHERE ville = 'Paris';
⚠️ DANGER : DELETE sans WHERE
DELETE FROM ENSEIGNANT;

Supprime TOUTES les lignes de la table ! La table existe toujours mais est vide.

Différence avec TRUNCATE et DROP

Commande Effet Utilisation
DELETE FROM table Supprime toutes les lignes Table vide mais existe
TRUNCATE table Vide complètement la table Plus rapide que DELETE
DROP TABLE table Supprime la table entière Table n'existe plus

🔗 4. Contraintes d'intégrité référentielle

Qu'est-ce qu'une clé étrangère ?

Une clé étrangère est une colonne qui référence la clé primaire d'une autre table.

Exemple :

Règles d'intégrité

Lors d'une suppression ou modification, plusieurs comportements sont possibles :

Règle Comportement
RESTRICT Empêche la suppression si des données dépendantes existent
CASCADE Supprime automatiquement les données dépendantes
SET NULL Met à NULL les clés étrangères des données dépendantes
NO ACTION Similaire Ă  RESTRICT

Exemple avec CASCADE

-- Si la table ENSEIGNEMENT a ON DELETE CASCADE :
DELETE FROM ENSEIGNANT WHERE numEnseignant = 'E001';

-- Résultat :
-- 1. L'enseignant E001 est supprimé de ENSEIGNANT
-- 2. Toutes les lignes de ENSEIGNEMENT avec cet enseignant sont automatiquement supprimées
⚠️ Attention CASCADE :

La suppression en cascade peut supprimer beaucoup plus de données que prévu ! Toujours vérifier les dépendances avant.

Exemple avec RESTRICT

-- Si la table ETUDIANT a ON DELETE RESTRICT :
DELETE FROM CLASSE WHERE codeClasse = 'CLAS0001';

-- Résultat : ERREUR !
-- Impossible de supprimer car des étudiants sont liés à cette classe

✅ Points clés à retenir

INSERT

UPDATE

DELETE

📝 Exemples complets

-- INSERT : Ajouter un étudiant
INSERT INTO ETUDIANT (numEtudiant, nom, prenom, dateNaissance, codeClasse) 
VALUES ('E12345', 'DUPONT', 'Marie', '2005-03-15', 'CLAS0001');

-- UPDATE : Changer la classe d'un étudiant
UPDATE ETUDIANT 
SET codeClasse = 'CLAS0002' 
WHERE numEtudiant = 'E12345';

-- UPDATE : Augmenter tous les coefficients de 0.5
UPDATE MATIERE 
SET coefficient = coefficient + 0.5;

-- DELETE : Supprimer un étudiant
DELETE FROM ETUDIANT 
WHERE numEtudiant = 'E12345';

-- DELETE : Supprimer tous les étudiants d'une classe
DELETE FROM ETUDIANT 
WHERE codeClasse = 'CLAS0003';

-- Vérifier avant de supprimer
SELECT * FROM ETUDIANT WHERE codeClasse = 'CLAS0003';
-- Puis supprimer
DELETE FROM ETUDIANT WHERE codeClasse = 'CLAS0003';

⚠️ Erreurs courantes à éviter