Instruction MySQL INSERT INTO SELECT
L'instruction MySQL INSERT INTO SELECT
L' INSERT INTO SELECT
instruction copie les données d'une table et les insère dans une autre table.
L' INSERT INTO SELECT
instruction requiert que les types de données des tables source et cible correspondent.
Remarque : Les enregistrements existants dans la table cible ne sont pas affectés.
Syntaxe INSERT INTO SELECT
Copiez toutes les colonnes d'une table vers une autre :
INSERT INTO table2
SELECT * FROM table1
WHERE condition;
Copiez uniquement certaines colonnes d'une table dans une autre table :
INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;
Base de données de démonstration
Dans ce didacticiel, nous utiliserons la célèbre base de données d'exemples Northwind.
Voici une sélection du tableau "Clients":
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 |
Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
Et une sélection du tableau "Fournisseurs":
SupplierID | SupplierName | ContactName | Address | City | Postal Code | Country |
---|---|---|---|---|---|---|
1 | Exotic Liquid | Charlotte Cooper | 49 Gilbert St. | Londona | EC1 4SD | UK |
2 | New Orleans Cajun Delights | Shelley Burke | P.O. Box 78934 | New Orleans | 70117 | USA |
3 | Grandma Kelly's Homestead | Regina Murphy | 707 Oxford Rd. | Ann Arbor | 48104 | USA |
MySQL INSERT INTO SELECT Exemples
L'instruction SQL suivante copie "Fournisseurs" dans "Clients" (les colonnes qui ne sont pas remplies de données contiendront NULL) :
Exemple
INSERT INTO Customers (CustomerName,
City, Country)
SELECT SupplierName, City, Country FROM Suppliers;
L'instruction SQL suivante copie "Fournisseurs" dans "Clients" (remplissez toutes les colonnes) :
Exemple
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode,
Country)
SELECT SupplierName, ContactName, Address, City, PostalCode,
Country FROM Suppliers;
L'instruction SQL suivante copie uniquement les fournisseurs allemands dans "Clients" :
Exemple
INSERT INTO Customers (CustomerName,
City, Country)
SELECT SupplierName, City, Country FROM Suppliers
WHERE Country='Germany';