INSERT, UPDATE, DELETE
Modifier les données d'une base : ajouter des lignes avec INSERT, les changer avec UPDATE, les retirer avec DELETE, le piège du WHERE oublié et le respect des clés étrangères.
- 26 cartes
- 6 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Les chiffres
- Mises en situation
- Comprendre
Quelques cartes du deck
INSERT INTO … VALUES : de quoi s'agit-il ?
Voir la réponse
Instruction SQL qui ajoute à une table une ou plusieurs lignes dont on écrit soi-même les valeurs, colonne par colonne.
Mieux vaut nommer les colonnes :
INSERT INTO client (nom, ville) VALUES ('Léa', 'Lyon')reste juste si la table gagne une colonne. Plusieurs lignes s'écriventVALUES (...), (...). Les colonnes omises prennent leur valeur par défaut, ou NULL.Un développeur veut baisser de 10 % le prix des livres et lance cette instruction. Que se passe-t-il ?
```sql
UPDATE produit SET prix = prix * 0.9;`- Le prix de tous les produits baisse de 10 %, toutes catégories confondues
- Rien n'est modifié : SQL refuse un UPDATE sans clause WHERE
- Seule la première ligne de la table est modifiée
- Seuls les livres sont modifiés, car ce sont eux que la phrase du besoin désigne
Voir la réponse
Le prix de tous les produits baisse de 10 %, toutes catégories confondues
Sans
WHERE, l'instruction vise toutes les lignes, et SQL ne demande pas confirmation. Il fallait écrireWHERE categorie = 'livre'.Dans un UPDATE, la clause … donne les nouvelles valeurs et la clause … choisit les lignes à modifier.
Voir la réponse
Dans un UPDATE, la clause SET donne les nouvelles valeurs et la clause WHERE choisit les lignes à modifier.
Les deux ont des rôles distincts :
UPDATE produit SET stock = 0 WHERE categorie = 'jouet'met le stock à 0 uniquement pour les jouets.INSERT … SELECT : de quoi s'agit-il ?
Voir la réponse
Ajout à une table de toutes les lignes que rend une requête, en une seule instruction.
La requête remplace la liste de valeurs :
INSERT INTO archive (id, date_commande) SELECT id, date_commande FROM commande WHERE .... La table source n'est pas modifiée, les lignes sont copiées.