Contacts

Transact-SQL - insertion de données. Requête SQL INSERT INTO - remplir la base de données avec des informations Sql insert query

Dans les sections précédentes, nous avons examiné le travail d'obtention de données à partir de tables pré-créées. Il est maintenant temps de comprendre comment créer/supprimer des tables, ajouter de nouveaux enregistrements et supprimer les anciens. A ces fins dans SQL il y a des opérateurs comme : CRÉER- crée un tableau, MODIFIER- modifie la structure du tableau, TOMBER- supprime une table ou un champ, INSÉRER- ajoute des données à la table. Commençons notre connaissance avec ce groupe d'opérateurs de l'opérateur INSÉRER.

1. Ajouter des lignes entières

Comme son nom l'indique, l'opérateur INSÉRER utilisé pour insérer (ajouter) des lignes dans une table de base de données. L'ajout peut se faire de plusieurs manières :

  • - ajouter une ligne complète
  • - ajouter une partie de la ligne
  • - ajouter des résultats de requête.

Donc pour ajouter nouvelle ligne dans la table, nous devons indiquer le nom de la table, lister les noms des colonnes et indiquer la valeur pour chaque colonne en utilisant la construction INSÉRER DANS nom_table (champ1, champ2 ...) VALEURS (valeur1, valeur2 ...)... Regardons un exemple.

INSÉRER DANS LES VALEURS des vendeurs (ID, adresse, ville, nom du vendeur, pays)("6", "1st Street", "Los Angeles", "Harry Monroe", "USA")

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

2. Ajout d'une partie des lignes

Dans l'exemple précédent, lorsque vous utilisez l'opérateur INSÉRER nous avons marqué explicitement les noms des colonnes de la table. En utilisant cette syntaxe, nous pouvons sauter certaines colonnes. Cela signifie que vous entrez des valeurs pour certaines colonnes, mais ne les suggérez pas pour d'autres. Par exemple:

INSERT INTO Vendeurs (ID, Ville, Seller_name) VALUES("6", "Los Angeles", "Harry Monroe")

V cet exemple nous n'avons pas fourni de valeur pour deux colonnes Adresse et Pays... Vous pouvez exclure certaines colonnes de la déclaration INSÉRER DANS si la définition de la table le permet. Dans ce cas, une des conditions doit être remplie : cette colonne est définie comme acceptant une valeur NUL(absence de valeur) ou dans la définition de la table la valeur par défaut spécifiée. Cela signifie que si aucune valeur n'est spécifiée, la valeur par défaut sera utilisée. S'il vous manque une colonne d'un tableau qui ne permet pas aux valeurs d'apparaître dans ses lignes NUL et peu importe la valeur par défaut, le SGBD donnera un message d'erreur et cette 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 des tables en les écrivant manuellement dans une requête. Cependant, l'opérateur INSÉRER DANS vous permet d'automatiser ce processus si nous voulons insérer des données d'une autre table. Pour cela, en SQL, il existe une structure telle que INSÉRER DANS ... SÉLECTIONNER ...... 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 Vendeurs_EU avec une liste de vendeurs de nos produits en Europe et nous devons les ajouter au tableau général Les vendeurs... La structure de ces tables est la même (même nombre de colonnes et mêmes noms), mais des données différentes. Pour ce faire, nous pouvons écrire la requête suivante :

INSÉRER DANS Vendeurs (ID, adresse, ville, nom du vendeur, pays) SÉLECTIONNERID, adresse, ville, nom du vendeur, pays FROM Sellers_EU

Il faut faire attention à ce que la valeur des clés internes ne se répète pas (champ identifiant), sinon une erreur se produira. Opérateur SÉLECTIONNER peut également inclure des suggestions pour filtrer les données. Il faut aussi noter que le SGBD ne fait pas attention aux noms des colonnes contenus dans l'opérateur SÉLECTIONNER, pour elle, seul l'ordre de leur arrangement est important. Par conséquent, les données de la première colonne spécifiée qui a été sélectionnée en raison de SÉLECTIONNER, sera quand même renseigné dans la première colonne du tableau Les vendeurs spécifié après l'opérateur INSÉRER DANS, quel que soit le nom du champ.

4. Copie de données d'une table à une autre

Souvent, lorsque vous travaillez avec des bases de données, il devient nécessaire de créer des copies de toutes les tables, dans le but de les sauvegarder ou de les modifier. Pour faire une copie complète d'une table en SQL, une instruction distincte est fournie SÉLECTIONNER DANS... Par exemple, nous devons créer une copie de la table Les vendeurs, vous devrez rédiger la demande comme suit :

SÉLECTIONNER * DANS Sellers_new FROM Vendeurs

Contrairement à la conception précédente INSÉRER DANS ... SÉLECTIONNER ... lorsque des données sont ajoutées à tableau existant, la construction copie les données dans une nouvelle table. Vous pouvez également dire que la première construction importe des données et que la seconde les exporte. Lors de l'utilisation de la conception SÉLECTIONNER ... DANS ... DE ... Considérer ce qui suit:

  • - vous pouvez utiliser toutes les suggestions dans l'opérateur SÉLECTIONNER, tel que PAR GROUPE et AYANT
  • - la jointure peut être utilisée 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.

Cette instruction ajoute un ou plusieurs enregistrements à la table (exécute une requête d'ajout).

Syntaxe

Demande d'ajout de plusieurs enregistrements :

INSÉRER DANS destination_objet [(champ1[, champ2[, ...]])]
SÉLECTIONNER [ une source.]champ1[, champ2[, ...]
DE expression_table

Demande d'ajout d'un enregistrement :

INSÉRER DANS destination_objet [(champ1[, champ2[, ...]])]
VALEURS ( champ1[, champ2[, ...])

L'instruction INSERT INTO se compose des éléments suivants :

Partie

La description

destination_objet

Nom de la table ou de la requête à laquelle les enregistrements sont ajoutés.

champ1, champ2

Après la dispute destination_objet- les noms des champs auxquels les données sont ajoutées ; après la dispute une source- les noms des champs dont les données sont extraites.

base_de_données_externe

Le chemin d'accès à la base de données externe. Pour une description du chemin, consultez l'article sur la clause IN.

une source

Nom de la table ou de la requête à partir de laquelle les enregistrements sont copiés.

expression_table

Un ou plusieurs noms de table à partir desquels récupérer les enregistrements. Cet argument peut être le nom d'une table individuelle, une expression de résultat construite à l'aide de INNER JOIN, LEFT JOIN ou RIGHT JOIN, ou une requête stockée.

valeur1, valeur2

Valeurs à ajouter à des champs spécifiques nouvelle entrée... Chaque valeur est insérée dans le champ correspondant à sa position dans la liste : valeur1 ajouté à champ1 nouvelle entrée, valeur2-v champ2 etc. Séparez les valeurs par une virgule et placez les champs de texte entre guillemets ("").

Remarques

Avec l'instruction INSERT INTO, vous pouvez ajouter un seul enregistrement à une table en utilisant la syntaxe ci-dessus. Dans ce cas, des noms et des valeurs sont fournis pour chaque champ de l'enregistrement. Vous devez spécifier tous les champs de l'enregistrement auxquels vous attribuez des valeurs et les valeurs correspondantes. Si vous ne spécifiez pas de valeur de champ, une valeur par défaut ou NULL lui sera attribuée. Les enregistrements sont ajoutés à la fin du tableau.

Vous pouvez également utiliser INSERT INTO pour ajouter un jeu d'enregistrements à partir d'une autre table ou requête à l'aide de la clause SELECT ... FROM, comme indiqué ci-dessus (voir la syntaxe d'une requête pour ajouter plusieurs enregistrements). Dans ce cas clause SELECTIONNER définit les champs à ajouter au spécifié destination_objet.

Une source ou destination_objet peut être une table ou une requête. Si une requête est donnée, le moteur de base de données Microsoft Access ajoute des enregistrements à toutes les tables qu'il renvoie.

L'utilisation de l'instruction INSERT INTO est facultative. S'il est spécifié, il doit précéder l'instruction SELECT.

Si la table de destination contient une clé primaire, assurez-vous que les valeurs que vous ajoutez à un ou plusieurs champs clé primaire, sont uniques et différents de NUL; sinon, aucune entrée ne sera ajoutée.

Si vous ajoutez des enregistrements à une table avec un champ Compteur et que vous souhaitez les renuméroter, n'incluez pas le champ Compteur dans votre requête. Incluez le champ Compteur dans votre requête si vous souhaitez conserver les valeurs d'origine du champ.

Vous pouvez ajouter des enregistrements à une table dans une autre base de données à l'aide de la clause IN.

Pour créer une table, utilisez une instruction SELECT ... INTO pour obtenir une requête pour créer une table.

Avant d'exécuter une requête d'ajout, utilisez une requête de sélection avec les mêmes critères de sélection pour déterminer quels enregistrements seront ajoutés en fonction des résultats obtenus.

Une requête d'ajout copie les enregistrements d'une ou plusieurs tables vers une autre table. Dans le même temps, les tables contenant les enregistrements ajoutés restent inchangées.

Au lieu d'ajouter des enregistrements d'une autre table, vous pouvez spécifier la valeur de chaque champ dans un nouvel enregistrement distinct à l'aide de la clause VALUES. Si la liste des champs est omise, la clause VALUES doit inclure les valeurs correspondantes pour chaque champ de la table ; sinon, l'opération INSERT échouera. Utilisez l'instruction INSERT INTO avec la clause VALUES pour chaque enregistrement supplémentaire que vous souhaitez créer.

Dernière mise à jour : 13/07/2017

Pour ajouter des données, la commande INSERT est utilisée, qui a la syntaxe formelle suivante :

INSÉRER nom_table [(liste_colonnes)] VALEURS (valeur1, valeur2, ... valeurN)

Vient d'abord l'expression INSERT INTO, puis entre parenthèses, vous pouvez spécifier une liste de colonnes séparées par des virgules pour ajouter des données, et à la fin, après le mot VALUES, les valeurs ajoutées pour les colonnes sont répertoriées entre parenthèses.

Par exemple, supposons que la base de données suivante ait été créée précédemment :

CRÉER LA BASE DE DONNÉES productsdb; ALLEZ UTILISER productsdb; CREATE TABLE Products (Id INT IDENTITY PRIMARY KEY, ProductName NVARCHAR (30) NOT NULL, Manufacturer NVARCHAR (20) NOT NULL, ProductCount INT DEFAULT 0, Price MONEY NOT NULL)

Ajoutons-y une ligne à l'aide de la commande INSERT :

INSÉRER LES VALEURS DES PRODUITS ("iPhone 7", "Apple", 5, 52000)

Après une exécution réussie dans serveur SQL Management Studio, le message "1 ligne(s) affectée(s)" doit apparaître dans le champ message :

Il convient de garder à l'esprit que les valeurs des colonnes entre parenthèses après mot-clé Les VALEURS sont transmises dans l'ordre dans lequel elles sont déclarées. Par exemple, dans l'instruction CREATE TABLE ci-dessus, vous pouvez voir que la première colonne est Id. Mais puisque l'attribut IDENTITY est défini pour cela, la valeur de cette colonne est automatiquement générée et elle peut être omise. La deuxième colonne représente ProductName, donc la première valeur, la chaîne "iPhone 7", sera transmise à cette colonne particulière. La deuxième valeur est la chaîne "Apple" qui sera transmise à la troisième colonne Fabricant, et ainsi de suite. C'est-à-dire que les valeurs sont transmises aux colonnes comme suit :

    Nom du produit : "iPhone 7"

    Fabricant : "Pomme"

De plus, lors de la saisie des valeurs, vous pouvez spécifier les colonnes immédiates auxquelles les valeurs seront ajoutées :

INSÉRER DANS LES VALEURS des produits (nom du produit, prix, fabricant) ("iPhone 6S", 41000, "Apple")

Ici, la valeur n'est spécifiée que pour trois colonnes. Et maintenant les valeurs sont passées dans l'ordre des colonnes :

    Nom du produit : "iPhone 6S"

    Fabricant : "Pomme"

Pour les colonnes non spécifiées (dans ce cas ProductCount), une valeur par défaut sera ajoutée si l'attribut DEFAULT est défini, ou NULL. Cependant, les colonnes non spécifiées doivent être NULL ou DEFAULT.

On peut aussi ajouter plusieurs lignes à la fois :

INSÉRER DANS LES VALEURS DES PRODUITS ("iPhone 6", "Apple", 3, 36000), ("Galaxy S8", "Samsung", 2, 46000), ("Galaxy S8 Plus", "Samsung", 1, 56000)

Dans ce cas, trois lignes seront ajoutées au tableau.

De plus, lors de l'ajout, nous pouvons spécifier que la valeur par défaut de la colonne est utilisée à l'aide du mot-clé DEFAULT ou NULL :

INSÉRER DANS LES VALEURS des produits (Nom du produit, fabricant, nombre de produits, prix) ("Mi6", "Xiaomi", DEFAULT, 28000)

Dans ce cas, la valeur par défaut sera utilisée pour la colonne ProductCount (si elle est définie, si elle ne l'est pas, alors NULL).

Si toutes les colonnes ont un attribut DEFAULT par défaut, ou sont nullables, vous pouvez insérer des valeurs par défaut pour toutes les colonnes :

INSÉRER DANS LES VALEURS PAR DÉFAUT des produits

Mais si vous prenez la table Products, une telle commande échouera, car plusieurs champs n'ont pas l'attribut DEFAULT et, en même temps, n'autorisent pas les valeurs NULL.

Les instructions SQL INSERT INTO et INSERT SELECT sont utilisées pour insérer de nouvelles lignes dans une table. Il y a deux façons d'utiliser les instructions :

  1. Valeurs uniquement : la première méthode consiste à spécifier uniquement les valeurs de données à insérer sans les noms de colonne.

Syntaxe:

INSERT INTO table_name VALUES (valeur1, valeur2, valeur3, ...); table_name : le nom de la table. valeur1, valeur2, .. : valeurs de première colonne, deuxième colonne, ... pour nouvel enregistrement

  1. Noms et valeurs des colonnes: La deuxième méthode spécifie les noms de colonnes et les valeurs de lignes à insérer :

Syntaxe:

INSERT INTO nom_table (colonne1, colonne2, colonne3, ..) VALUES (valeur1, valeur2, valeur3, ...); table_name : le nom de la table. colonne1 : nom de la première colonne, deuxième colonne... valeur1, valeur2, .. : valeurs de la première colonne, deuxième colonne, ... pour nouvel enregistrement

Demandes :

Méthode 1 ( insérer uniquement des valeurs):

INSÉRER DANS LES VALEURS DES ÉTUDIANTS ("5", "HARSH", "WEST BENGAL", "8759770477", "19");

Résultat :

Après avoir utilisé INSERT INTO SELECT, la table Student ressemblera maintenant à ceci :

ROLL_NO NOM ADRESSE TÉLÉPHONE Âge
1 RAM Delhi 9455123451 18
2 RAMESH GOURGAON 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 SURESH Delhi 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GOURGAON 9562431543 18
5 RUDE BENGALE-OCCIDENTAL 8759770477 19

Méthode 2 ( insérer des valeurs dans des colonnes spécifiées uniquement):

INSÉRER DANS LES VALEURS Élève (ROLL_NO, NAME, Age) ("5", "PRATIK", "19");

Résultat :

La table Student ressemblera maintenant à ceci :

ROLL_NO NOM ADRESSE TÉLÉPHONE Âge
1 RAM Delhi 9455123451 18
2 RAMESH GOURGAON 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 SURESH Delhi 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GOURGAON 9562431543 18
5 PRATIK nul nul 19

Notez que les colonnes sans valeurs sont définies sur null.

Utilisation de SELECT dans une instruction INSERT INTO

Vous pouvez utiliser l'instruction MySQL INSERT SELECT pour copier des lignes d'une table et les insérer dans une autre.

L'utilisation de cet opérateur revient à utiliser INSERT INTO. La différence est que l'instruction SELECT est utilisée pour extraire des données d'une autre table. Ci-dessous se trouvent les différentes façons en utilisant INSERT INTO SELECT :

  • Insérer toutes les colonnes d'un tableau: vous pouvez copier toutes les données de la table et les coller dans une autre table.

Syntaxe:

INSERT INTO first_table SELECT * FROM second_table; first_table : le nom de la première table. second_table : le nom de la seconde table.

Nous avons utilisé une instruction SELECT pour copier les données d'une table et une instruction INSERT INTO pour les insérer dans une autre.

  • Insérer des colonnes de tableau individuelles... Vous ne pouvez copier que les colonnes de table que vous souhaitez coller dans une autre table.

Syntaxe:

INSERT INTO first_table (column_names1) SELECT column_names2 FROM second_table; first_table : le nom de la première table. second_table : nom de la seconde table. nom_colonne1 : noms de colonne séparés par une virgule (,) pour la table 1.noms_colonne2 : noms de colonne séparés par une virgule (,) pour la table 2.

Nous avons utilisé une instruction SELECT pour copier les données uniquement à partir des colonnes sélectionnées de la deuxième table et une instruction MySQL INSERT INTO SELECT pour les insérer dans la première table.

  • Copier des lignes spécifiques d'une table... Vous pouvez copier des lignes spécifiques d'une table pour une insertion ultérieure dans une autre table à l'aide d'une clause WHERE avec une instruction SELECT. Dans ce cas, vous devez utiliser la condition correspondante dans le WHERE.

Syntaxe:

Tableau 2 : LatéralÉtudiant

ROLL_NO NOM ADRESSE TÉLÉPHONE Âge
7 SOUVIK DUM DUM 9876543210 18
8 NIRAJ NOIDA 9786543210 19
9 QUELQUES ROHTAK 9687543210 20

Demandes :

Méthode 1 ( insérer toutes les lignes et colonnes):

INSERT INTO Student SELECT * FROM LateralStudent;

Résultat :

Cette requête insérera toutes les données de la table LateralStudent dans la table Student. Après avoir appliqué SQL INSERT INTO SELECT, la table Student ressemblera à ceci :

ROLL_NO NOM ADRESSE TÉLÉPHONE Âge
1 RAM Delhi 9455123451 18
2 RAMESH GOURGAON 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 SURESH Delhi 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GOURGAON 9562431543 18
7 SOUVIK DUM DUM 9876543210 18
8 NIRAJ NOIDA 9786543210 19
9 QUELQUES ROHTAK 9687543210 20

Méthode 2 ( insertion de colonnes individuelles):

INSÉRER DANS L'Étudiant (ROLL_NO, NAME, Age) SÉLECTIONNER ROLL_NO, NAME, Age FROM LateralStudent;

Résultat :

Cette requête insère les données des colonnes ROLL_NO, NAME et Age de la table LateralStudent dans la table Student. Le reste des colonnes de la table Student sera défini sur null. Après avoir appliqué SQL INSERT SELECT, la table ressemblera à ceci :

ROLL_NO NOM ADRESSE TÉLÉPHONE Âge
1 RAM Delhi 9455123451 18
2 RAMESH GOURGAON 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 SURESH Delhi 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GOURGAON 9562431543 18
7 SOUVIK Nul nul 18
8 NIRAJ Nul nul 19
9 QUELQUES Nul nul 20
  • Sélection de lignes spécifiques à insérer:

Résultat :

Cette requête sélectionnera uniquement la première ligne de la table LateralStudent à insérer dans la table Student. Après avoir appliqué INSERT SELECT, la table ressemblera à ceci.

AVEC en utilisant SQL vous pouvez copier des informations d'une table à une autre.

L'instruction INSERT INTO SELECT copie les données d'une table et les insère dans une table existante.

Instruction SQL INSERT INTO SELECT,

INSERT INTO SELECT, l'instruction récupère les données d'une table et les insère dans une table existante. Les lignes existantes dans la table cible ne sont pas modifiées.

SQL INSERT INTO SELECT, Syntaxe

On peut copier toutes les colonnes d'une table à une autre, table existante :

INSÉRER DANS Tableau 2
SÉLECTIONNER * DE Tableau 1;

Ou nous pouvons copier uniquement les colonnes que nous voulons dans une autre table existante :

INSÉRER DANS Tableau 2
(nom_colonne (s))
SÉLECTIONNER nom_colonne (s)
DE Tableau 1;

Version démo de la base de données

Dans ce tutoriel, nous utiliserons la célèbre base de données Northwind.

Vous trouverez ci-dessous une sélection du tableau « Clients » :

Identifiant d'utilisateurNom du clientLa personne de contactAdressevilleCode postalPays
1 Alfreds futterkiste Maria Anders Obere Str. 57 Berlin 12209 Allemagne
2 Ana trujillo emparedados y helados Ana Trujillo Avda. de la Constitution 2222 Mexique D.F. 05021 Mexique
3 Antonio Moreno Taqueria Antonio Moreno Matadéros 2312 Mexique D.F. 05023 Mexique

Et une sélection du tableau "Fournisseurs":

SQL INSERT INTO SELECT Exemples

Copier seulement quelques colonnes de "Fournisseurs" dans "Clients":

Copier uniquement les fournisseurs allemands vers les « clients ».



Vous avez aimé l'article ? Partagez-le