OUJOOD.COM
Tuto SQL : INSERT INTO SELECT: Introduction
L'instruction SQL INSERT INTO SELECT est une instruction qui permet d'insérer des données dans une table à partir des résultats d'une requête. Cette instruction est très utile pour copier des données d'une table à une autre, ou pour mettre à jour les données d'une table en fonction des résultats d'une requête.
Définition
L'instruction INSERT INTO SELECT a la syntaxe suivante :
INSERT INTO table_dest SELECT * FROM table_src
table_dest est le nom de la table dans laquelle les données seront insérées.
table_src est le nom de la table à partir de laquelle les données seront sélectionnées.
* signifie que toutes les colonnes de la table table_src seront sélectionnées.
Utilisation
L'instruction INSERT INTO SELECT peut être utilisée pour copier des données d'une table à une autre. Par exemple, pour copier toutes les données de la table clients dans la table clients_copie, on peut utiliser la requête suivante :
INSERT INTO clients_copie SELECT * FROM clients
Cette requête insérera une nouvelle ligne dans la table clients_copie pour chaque ligne de la table clients.
Syntaxes alternatives
En plus de la syntaxe générale, l'instruction INSERT INTO SELECT peut utiliser les syntaxes suivantes :
-
INSERT INTO table_dest (colonne1, colonne2, ...) SELECT colonne1, colonne2, ... FROM table_src
Cette syntaxe permet d'insérer uniquement certaines colonnes des résultats de la requête.
-
INSERT INTO table_dest (colonne1, colonne2, ...) SELECT expression1, expression2, ... FROM table_src
Cette syntaxe permet d'insérer des valeurs calculées à partir des résultats de la requête.
Exemples pratiques
Voici quelques exemples pratiques d'utilisation de l'instruction INSERT INTO SELECT :
Copier des données d'une table à une autre
Exemple : 📋 Copier le code
INSERT INTO clients_copie SELECT * FROM clients
Mettre à jour les données d'une table en fonction des résultats d'une requête
Exemple : 📋 Copier le code
UPDATE clients SET nom = nom FROM ( SELECT id, nom, age FROM clients WHERE age > 18 ) as t WHERE clients.id = t.id
Insérer uniquement certaines colonnes des résultats d'une requête
Exemple : 📋 Copier le code
INSERT INTO clients_copie (nom, email) SELECT nom, email FROM clients
Insérer des valeurs calculées à partir des résultats d'une requête
Exemple : 📋 Copier le code
INSERT INTO clients_copie (nom, age) SELECT nom, age + 1 FROM clients
Astuces et conseils
- L'instruction INSERT INTO SELECT peut être utilisée pour copier des données d'une table à une autre, ou pour mettre à jour les données d'une table en fonction des résultats d'une requête.
- L'instruction INSERT INTO SELECT peut utiliser différentes syntaxes pour spécifier les colonnes à insérer et les valeurs à utiliser.
- L'instruction INSERT INTO SELECT peut être utilisée pour insérer uniquement certaines colonnes des résultats d'une requête, ou pour insérer des valeurs calculées à partir des résultats d'une requête.
- Utiliser la clause DISTINCT pour éviter les doublons.
Si vous souhaitez éviter d'insérer des doublons dans la table_dest, vous pouvez utiliser la clause DISTINCT dans la requête SELECT. - Utiliser la clause WHERE pour filtrer les données.
Si vous souhaitez uniquement insérer certaines données dans la table_dest, vous pouvez utiliser la clause WHERE dans la requête SELECT. - Utiliser la clause ORDER BY pour trier les données
Si vous souhaitez insérer les données dans un ordre particulier dans la table_dest, vous pouvez utiliser la clause ORDER BY dans la requête SELECT.
Conclusion
L'instruction INSERT INTO SELECT est une instruction très utile pour copier des données d'une table à une autre, ou pour mettre à jour les données d'une table en fonction des résultats d'une requête.