Jointures et sous-requêtes : modification de données
Voici un petit chapitre bonus sur les jointures et les sous-requêtes.
Vous allez apprendre ici à utiliser ces outils, non pas dans le cadre de la sélection de données comme on l'a fait jusqu'à présent,
mais pour :
l'insertion : les sous-requêtes vont permettre d'insérer des données dans une table à partir de données venant d'autres
tables (mais pas exclusivement) ;
la modification : jointures et sous-requêtes vont permettre non seulement d'utiliser des critères de sélection complexes
mais également d'aller chercher les nouvelles valeurs dans d'autres tables ;
la suppression de données : comme pour la modification, les critères de sélection pourront être plus complexes grâce aux
jointures et sous-requêtes.
Insertion
Pour l'insertion nous n'allons nous servir que de sous-requêtes, pas de jointures. Quoique… La sous-requête pourrait très bien
contenir une jointure !
Sous-requête pour l'insertion
Vous venez d'acquérir un magnifique Maine Coon chez un éleveur voisin. Vous vous apprêtez à l'insérer dans votre base de
données, mais vous ne vous souvenez absolument pas de l'id de la race Maine Coon, ni de celui de l'espèce Chat. Du coup, deux
possibilités s'offrent à vous.
Vous pouvez faire une requête pour sélectionner l'id de la race et de l'espèce, puis faire ensuite une requête d'insertion
avec les données que vous venez d'afficher.
Vous pouvez utiliser une sous-requête pour insérer directement l'id de la race et de l'espèce à partir du nom de la race.
Je ne sais pas ce que vous en pensez, mais moi je trouve la seconde option bien plus sexy !
Donc, allons-y. Qu'avons-nous comme information ?
Nom : Yoda
Date de naissance : 2010-11-09
Sexe : mâle
Espèce : chat
Race : Maine coon
De quoi avons-nous besoin en plus pour l'insérer dans notre table ? L'id de l'espèce et de la race.
Comment récupérer ces deux id ? Ça, vous savez faire : une simple requête suffit.
Code : SQL
SELECT id AS race_id, espece_id FROM Race WHERE nom = 'Maine coon';
race_id espece_id
5
2
Bien, mais le but était de tout faire en une seule requête, pas d'insérer nous-mêmes 5 et 2 après les avoir récupérés.
C'est ici que les sous-requêtes interviennent. Nous allons utiliser une nouvelle syntaxe d'insertion.
INSERT INTO... SELECT
Cette syntaxe permet de sélectionner des éléments dans des tables, afin de les insérer directement dans une autre.
Code : SQL
INSERT INTO nom_table
Partie 2 : Index, jointures et sous-requêtes
123/414
www.openclassrooms.com
Voici un petit chapitre bonus sur les jointures et les sous-requêtes.
Vous allez apprendre ici à utiliser ces outils, non pas dans le cadre de la sélection de données comme on l'a fait jusqu'à présent,
mais pour :
l'insertion : les sous-requêtes vont permettre d'insérer des données dans une table à partir de données venant d'autres
tables (mais pas exclusivement) ;
la modification : jointures et sous-requêtes vont permettre non seulement d'utiliser des critères de sélection complexes
mais également d'aller chercher les nouvelles valeurs dans d'autres tables ;
la suppression de données : comme pour la modification, les critères de sélection pourront être plus complexes grâce aux
jointures et sous-requêtes.
Insertion
Pour l'insertion nous n'allons nous servir que de sous-requêtes, pas de jointures. Quoique… La sous-requête pourrait très bien
contenir une jointure !
Sous-requête pour l'insertion
Vous venez d'acquérir un magnifique Maine Coon chez un éleveur voisin. Vous vous apprêtez à l'insérer dans votre base de
données, mais vous ne vous souvenez absolument pas de l'id de la race Maine Coon, ni de celui de l'espèce Chat. Du coup, deux
possibilités s'offrent à vous.
Vous pouvez faire une requête pour sélectionner l'id de la race et de l'espèce, puis faire ensuite une requête d'insertion
avec les données que vous venez d'afficher.
Vous pouvez utiliser une sous-requête pour insérer directement l'id de la race et de l'espèce à partir du nom de la race.
Je ne sais pas ce que vous en pensez, mais moi je trouve la seconde option bien plus sexy !
Donc, allons-y. Qu'avons-nous comme information ?
Nom : Yoda
Date de naissance : 2010-11-09
Sexe : mâle
Espèce : chat
Race : Maine coon
De quoi avons-nous besoin en plus pour l'insérer dans notre table ? L'id de l'espèce et de la race.
Comment récupérer ces deux id ? Ça, vous savez faire : une simple requête suffit.
Code : SQL
SELECT id AS race_id, espece_id FROM Race WHERE nom = 'Maine coon';
race_id espece_id
5
2
Bien, mais le but était de tout faire en une seule requête, pas d'insérer nous-mêmes 5 et 2 après les avoir récupérés.
C'est ici que les sous-requêtes interviennent. Nous allons utiliser une nouvelle syntaxe d'insertion.
INSERT INTO... SELECT
Cette syntaxe permet de sélectionner des éléments dans des tables, afin de les insérer directement dans une autre.
Code : SQL
INSERT INTO nom_table
Partie 2 : Index, jointures et sous-requêtes
123/414
www.openclassrooms.com
