Limitations
Les limitations sur DELETE sont les mêmes que pour UPDATE : on ne peut pas supprimer des lignes d'une table qui est utilisée
dans une sous-requête.
Suppression avec jointure
Pour les jointures, c'est le même principe. Si je reprends le même problème que ci-dessus, voici comment supprimer la ligne
voulue avec une jointure :
Code : SQL
DELETE Animal
-- Je précise
de quelles tables les données doivent être supprimées
FROM Animal
-- Table
principale
INNER JOIN Espece ON Animal.espece_id = Espece.id
-- Jointure
WHERE Animal.nom = 'Carabistouille' AND Espece.nom_courant = 'Chat';
Vous remarquez une petite différence avec la syntaxe "classique" de DELETE (sans jointure) : je précise le nom de la table dans
laquelle les lignes doivent être supprimées juste après le DELETE. En effet, comme on utilise plusieurs tables, cette précision est
obligatoire. Ici, on ne supprimera que les lignes d'Animal correspondantes.
En résumé
INSERT INTO ... SELECT ... permet d'insérer dans une table des données provenant directement d'une autre
(ou un mélange de données provenant d'une table, et de constantes définies par l'utilisateur).
On peut utiliser des jointures et des sous-requêtes pour créer des critères de sélection complexes pour une modification
ou une suppression de données.
Dans le cas d'une suppression avec jointure, il est indispensable de préciser de quelle(s) table(s) les données doivent
être supprimées
On peut utiliser une sous-requête dans la clause SET d'une modification de données, pour définir la nouvelle valeur d'un
champ à partir d'une autre table.
Partie 2 : Index, jointures et sous-requêtes
128/414
www.openclassrooms.com
Les limitations sur DELETE sont les mêmes que pour UPDATE : on ne peut pas supprimer des lignes d'une table qui est utilisée
dans une sous-requête.
Suppression avec jointure
Pour les jointures, c'est le même principe. Si je reprends le même problème que ci-dessus, voici comment supprimer la ligne
voulue avec une jointure :
Code : SQL
DELETE Animal
-- Je précise
de quelles tables les données doivent être supprimées
FROM Animal
-- Table
principale
INNER JOIN Espece ON Animal.espece_id = Espece.id
-- Jointure
WHERE Animal.nom = 'Carabistouille' AND Espece.nom_courant = 'Chat';
Vous remarquez une petite différence avec la syntaxe "classique" de DELETE (sans jointure) : je précise le nom de la table dans
laquelle les lignes doivent être supprimées juste après le DELETE. En effet, comme on utilise plusieurs tables, cette précision est
obligatoire. Ici, on ne supprimera que les lignes d'Animal correspondantes.
En résumé
INSERT INTO ... SELECT ... permet d'insérer dans une table des données provenant directement d'une autre
(ou un mélange de données provenant d'une table, et de constantes définies par l'utilisateur).
On peut utiliser des jointures et des sous-requêtes pour créer des critères de sélection complexes pour une modification
ou une suppression de données.
Dans le cas d'une suppression avec jointure, il est indispensable de préciser de quelle(s) table(s) les données doivent
être supprimées
On peut utiliser une sous-requête dans la clause SET d'une modification de données, pour définir la nouvelle valeur d'un
champ à partir d'une autre table.
Partie 2 : Index, jointures et sous-requêtes
128/414
www.openclassrooms.com
