INSERT pour ajouter des donnéesUPDATE pour modifier des données existantesDELETE pour supprimer des donnéesTous les attributs sont spécifiés dans l'ordre de la table.
INSERT INTO MATIERE
VALUES ('INF121', 'Algorithmique 1 Bis', 2.1, 'INF');
On spécifie uniquement les colonnes qu'on souhaite remplir.
INSERT INTO MATIERE (codeMatiere, nomMatiere, codeModule)
VALUES ('INF122', 'Algorithmique 1 Ter', 'INF');
UPDATE nomTable
SET colonne1 = valeur1, colonne2 = valeur2
WHERE condition;
UPDATE MATIERE
SET nomMatiere = 'SQL for ever'
WHERE codeMatiere = 'INF121';
Modifie uniquement la matière dont le code est 'INF121'.
UPDATE MATIERE
SET nomMatiere = 'Bases de données', coefficient = 3.0
WHERE codeMatiere = 'INF220';
UPDATE MATIERE
SET nomMatiere = 'SQL pour toutes les matières';
Modifie TOUTES les lignes de la table ! Toujours vérifier la clause WHERE.
WHERE sauf si vous voulez vraiment modifier toutes les lignesSELECT pour voir quelles lignes seront affectéesDELETE FROM nomTable
WHERE condition;
DELETE FROM MATIERE
WHERE codeMatiere = 'CIM421';
DELETE FROM ETUDIANT
WHERE ville = 'Paris';
DELETE FROM ENSEIGNANT;
Supprime TOUTES les lignes de la table ! La table existe toujours mais est vide.
| 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 |
Une clé étrangère est une colonne qui référence la clé primaire d'une autre table.
codeClasse est une clé étrangère vers CLASSEcodeClasse est la clé primaireLors 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 |
-- 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
La suppression en cascade peut supprimer beaucoup plus de données que prévu ! Toujours vérifier les dépendances avant.
-- 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
UPDATE table SET colonne = valeur WHERE conditionDELETE FROM table WHERE condition-- 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';