TOP

SQL-Leçon 13. Ajout de données (INSERT INTO)

Dans les sections précédentes, nous avons examiné le travail de récupération de données à partir de tables créées précédemment. Il est maintenant temps de comprendre comment créer/supprimer des tables, ajouter de nouveaux enregistrements et supprimer les anciens.

À ces fins, il existe des opérateurs SQL tels que :

  • CREATE - crée une table ;
  • ALTER - modifie la structure de la table ;
  • DROP - supprime une table ou un champ ;
  • INSERT - ajoute des données à la table.
  • Commençons par nous familiariser avec ce groupe d'opérateurs avec l'opérateur INSERT.


    1. Ajout de lignes entières

    Comme son nom l'indique, l'opérateur INSERT INTO est utilisé pour insérer (ajouter) des lignes à une table de base de données.

    L'ajout peut se faire de plusieurs manières :

  • ajoutez une ligne complète ;
  • ajouter une partie d'une nouvelle ligne ;
  • ajouter des résultats de requête.
  • Ainsi, pour ajouter une nouvelle ligne à la table, nous devons spécifier le nom de la table, lister les noms de colonnes et spécifier les valeurs de chaque colonne en utilisant INSERT INTO table_name(field1, field2 ...) VALUES (value1, valeur2 ...) construction. Prenons un exemple.

    INSERT INTO Sellers (ID, Address, City, Seller_name, Country) 
    VALUES ('6', '1st Street', 'Los Angeles', 'Harry Monroe', 'USA')
    

    Vous pouvez également modifier l'ordre des noms de colonnes, mais vous devez en même temps modifier l'ordre des valeurs dans le paramètre VALUES.

    2. Ajout d'une partie des lignes

    Dans l'exemple précédent, lors de l'utilisation de l'opérateur INSERT, nous avons explicitement spécifié les noms des colonnes du tableau. En utilisant cette syntaxe, nous pouvons sauter certaines colonnes. Cela signifie que vous saisissez des valeurs pour certaines colonnes et ne les fournissez pas pour d'autres. Exemple:

    INSERT INTO Sellers (ID, City, Seller_name) 
    VALUES ('6', 'Los Angeles', 'Harry Monroe')
    

    Dans cet exemple, nous n'avons pas spécifié de valeurs pour les deux colonnes Address et Country. Vous pouvez exclure certaines colonnes de l'instruction aaa si cela vous permet de définir la table. Dans ce cas, une des conditions suivantes doit être remplie : cette colonne est définie comme autorisant une valeur nulle (absence de valeur) ou une valeur par défaut est spécifiée dans la définition de la table. Cela signifie que si aucune valeur n'est spécifiée, la valeur par défaut sera utilisée. Si vous omettez une colonne d'une table qui n'autorise pas les valeurs NULL à apparaître dans ses lignes et n'a pas de valeur définie pour une utilisation par défaut, le SGBD émettra un message d'erreur et la ligne ne sera pas ajoutée.

    3. Ajout des données sélectionnées

    Dans les exemples précédents, nous avons inséré des données dans la table en les saisissant manuellement dans la requête. Cependant, l'opérateur INSERT INTO nous permet d'automatiser ce processus si nous souhaitons insérer des données d'une autre table. Pour cela, il existe une construction en SQL telle que INSERT INTO ... SELECT ... . Cette conception vous permet de sélectionner simultanément des données dans une table et de les insérer dans une autre. Supposons que nous ayons une autre table Sellers_EU avec une liste de vendeurs de notre produit en Europe et que nous devions les ajouter à la table générale Sellers. La structure de ces tableaux est la même (même nombre de colonnes et mêmes noms), mais les données sont différentes. Pour ce faire, nous pouvons écrire la requête suivante :

    INSERT INTO Sellers (ID, Address, City, Seller_name, Country) 
                 SELECT ID, Address, City, Seller_name, Country 
                 FROM Sellers_EU
    

    Il faut faire attention à ce que les valeurs des clés internes ne soient pas répétées (champ ID), sinon une erreur se produira. L'instruction SELECT peut également inclure une clause WHERE pour filtrer les données. A noter également que le SGBD ne fait pas attention aux noms des colonnes contenues dans l'opérateur SELECT, il se soucie uniquement de l'ordre de leur emplacement. Par conséquent, les données de la première colonne spécifiée qui a été sélectionnée via SELECT seront dans tous les cas renseignées dans la première colonne de la table Sellers spécifiée après l'opérateur INSERT INTO, quel que soit le nom du champ.

    4. Copier des données d'une table à une autre

    Souvent, lorsque l'on travaille avec des bases de données, il est nécessaire de créer des copies de n'importe quelle table, à des fins de sauvegarde ou de modification. Pour faire une copie complète de la table en SQL, un opérateur distinct SELECT INTO est fourni. Par exemple, nous devons créer une copie de la table Sellers, nous devrons écrire la requête comme suit :

    SELECT * INTO Sellers_new 
    FROM Sellers
    

    Contrairement à la construction précédente INSERT INTO ... SELECT ... lorsque des données sont ajoutées à une table existante, la construction SELECT ... INTO ... FROM ... copie les données dans une nouvelle table. On peut aussi dire que la première construction importe des données et la seconde les exporte.

    Lors de l'utilisation de la construction SELECT ... INTO ... FROM ... les éléments suivants doivent être pris en compte :

  • vous pouvez utiliser n'importe quelle clause dans l'instruction SELECT, telle que GROUP BY et HAVING ;
  • vous pouvez utiliser une union pour ajouter des données de plusieurs tables ;
  • les données ne peuvent être ajoutées qu’à une seule table, quel que soit le nombre de tables dont elles proviennent.