logo oujood
🔍

Comment copier ou importer des données dans une table SQL avec l'instruction INSERT INTO SELECT

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.