Transact-SQL - insertion de données. Requête SQL INSERT INTO - remplir la base de données avec des informations Version démo de la base de données

En plus de l'instruction SELECT évoquée précédemment, le langage de manipulation de données (DML) contient trois autres instructions : INSERT, UPDATE et DELETE. Comme l'instruction SELECT, ces trois instructions opèrent soit sur des tables, soit sur des vues. Cet article couvre l'instruction INSERT et les deux autres instructions sont couvertes dans l'article suivant.

Instruction INSÉRER insère des lignes (ou des parties de lignes) dans un tableau. Il existe deux formes différentes de cette instruction :

INSÉRER tab_name [(col_list)] VALEURS PAR DÉFAUT | VALEURS (( DEFAULT | NULL | expression ) [ ,...n]) INSERT INTO tab_name | view_name [(col_list)] (select_statement |execute_statement) Conventions de syntaxe

La première forme de l'instruction vous permet d'insérer une ligne (ou une partie de celle-ci) dans le tableau. Et la deuxième forme de l'instruction INSERT vous permet d'insérer dans une table le jeu de résultats d'une instruction SELECT ou d'une procédure stockée exécutée par une instruction EXECUTE. La procédure stockée doit renvoyer des données à insérer dans la table. Lorsqu'elle est utilisée avec une instruction INSERT, une instruction SELECT peut sélectionner des valeurs d'une table différente ou identique dans laquelle les données sont insérées, à condition que les types de données des colonnes correspondantes soient compatibles.

Pour les deux formulaires, le type de données de chaque valeur insérée doit être compatible avec le type de données de la colonne du tableau correspondante. Toutes les chaînes et données temporaires doivent être placées entre guillemets ; Les valeurs numériques n'ont pas besoin d'être placées entre guillemets.

Insérer une seule ligne

Pour les deux formes de l'instruction INSERT, la spécification explicite de la liste de colonnes est facultative. Ne pas lister les colonnes revient à spécifier toutes les colonnes du tableau.

Paramètre VALEURS PAR DÉFAUT insère des valeurs par défaut pour toutes les colonnes. Les colonnes avec le type de données TIMESTAMP ou la propriété IDENTITY sont insérées par défaut avec des valeurs automatiquement générées par le système. Pour les colonnes d'autres types de données, la valeur par défaut non nulle correspondante est insérée si elle est disponible, ou NULL dans le cas contraire. Si une colonne n'autorise pas les valeurs NULL et n'a pas de valeur par défaut définie, l'instruction INSERT échoue et un message s'affiche.

L'exemple ci-dessous insère des lignes dans la table Employee de la base de données SampleDb, démontrant l'utilisation d'une instruction INSERT pour insérer une petite quantité de données dans la base de données :

UTILISER SampleDb ; INSÉRER DANS LES VALEURS DE L'employé (34990, "Andrey", "Batonov", "d1"); INSÉRER DANS LES VALEURS DE L'employé (38640, "Alexey", "Vasin", "d3");

Il existe deux manières différentes d'insérer des valeurs dans une nouvelle ligne. L'instruction INSERT dans l'exemple ci-dessous utilise explicitement le mot-clé NULL et insère une valeur NULL dans la colonne correspondante :

UTILISER SampleDb ; INSÉRER DANS LES VALEURS DES EMPLOYÉS (34991, "Andrey", "Batonov", NULL);

Pour insérer des valeurs dans certaines colonnes (mais pas toutes) d'un tableau, vous devez généralement spécifier explicitement ces colonnes. Les colonnes non spécifiées doivent soit autoriser les valeurs NULL, soit avoir une valeur par défaut définie.

UTILISER SampleDb ; INSERT INTO Employee(Id, FirstName, LastName) VALUES (34992, "Andrey", "Batonov");

Les deux exemples précédents sont équivalents. Dans la table Employee, la seule colonne qui autorise les valeurs NULL est la colonne DepartmentNumber, et toutes les autres colonnes ont été désactivées par la clause NOT NULL dans l'instruction CREATE TABLE.

Ordre des valeurs dans Offre VALEURS Les instructions INSERT peuvent différer de l'ordre spécifié dans l'instruction CREATE TABLE. Dans ce cas, leur ordre doit correspondre à l'ordre dans lequel les colonnes correspondantes sont répertoriées dans la liste des colonnes. Vous trouverez ci-dessous un exemple d'insertion de données dans un ordre différent de celui d'origine :

UTILISER SampleDb ; INSERT INTO Employee(DepartamentNumber, LastName, Id, FirstName) VALUES ("d1", "Batonov", 34993, "Andrey");

Insérer plusieurs lignes

La deuxième forme de l'instruction INSERT insère une ou plusieurs lignes sélectionnées par une sous-requête dans la table. L'exemple ci-dessous montre comment insérer des lignes dans un tableau à l'aide de la deuxième forme de l'instruction INSERT. Dans ce cas, une requête est exécutée pour sélectionner les numéros et les noms des départements situés à Moscou, et l'ensemble de résultats résultant est chargé dans une nouvelle table créée précédemment.

La nouvelle table MoscowDepartment créée dans l'exemple ci-dessus comporte les mêmes colonnes que la table Department existante, à l'exception de la colonne Location manquante. La sous-requête de l'instruction INSERT sélectionne toutes les lignes de la table Department pour lesquelles la valeur de la colonne Location est « Moscou », qui sont ensuite insérées dans la nouvelle table créée au début de la requête.

L'exemple ci-dessous montre une autre façon d'insérer des lignes dans un tableau en utilisant la deuxième forme de l'instruction INSERT. Dans ce cas, une requête est exécutée pour sélectionner les matricules, les numéros de projet et les dates de début du projet pour tous les employés occupant le poste « Manager » qui travaillent sur le projet p2, puis charge l'ensemble de résultats résultant dans une nouvelle table créée au début de la requête:

UTILISER SampleDb ; CREATE TABLE ManagerTeam (EmpId INT NOT NULL, ProjectNumber CHAR (4) NOT NULL, EnterDate DATE); INSÉRER DANS ManagerTeam (EmpId, ProjectNumber, EnterDate) SELECT EmpId, ProjectNumber, EnterDate FROM Works_on WHERE Job = "Manager" ;

Avant d'insérer des lignes à l'aide de l'instruction INSERT, les tables MoscowDepartment et ManagerTeam (dans les exemples ci-dessus) étaient vides. Si le tableau existait déjà et contenait des lignes contenant des données, de nouvelles lignes y seraient ajoutées.

Qu’est-ce que INSÉRER DANS ?

L'objectif principal des systèmes de bases de données est de stocker les données dans des tables. Les données sont généralement fournies par des programmes d'application qui s'exécutent au-dessus de la base de données. À cette fin, SQL dispose de la commande INSERT utilisée pour stocker des données dans une table. Le La commande INSERT crée une nouvelle ligne dans le tableau pour stocker les données.

Syntaxe de base

Examinons la syntaxe de base de la commande SQL INSERT présentée ci-dessous.

INSERT INTO `table_name`(column_1,column_2,...) VALUES (value_1,value_2,...);

  • INSÉRER DANS `nom_table` est la commande qui indique au serveur MySQL d'ajouter une nouvelle ligne dans une table nommée `table_name`.
  • (colonne_1, colonne_2,...) spécifie les colonnes à mettre à jour dans la nouvelle ligne
  • VALEURS (valeur_1,valeur_2,...) précise les valeurs à ajouter dans la nouvelle ligne

Lors de la fourniture des valeurs de données à insérer dans le nouveau tableau, les éléments suivants doivent être pris en compte lors du traitement des différents types de données.

  • Types de données de chaîne- toutes les valeurs de chaîne doivent être placées entre guillemets simples.
  • Types de données numériques- toutes les valeurs numériques doivent être fournies directement sans les mettre entre guillemets simples ou doubles.
  • Types de données de dates- entourez les valeurs de date entre guillemets simples au format "AAAA-MM-JJ".

Exemple:

Supposons que nous ayons la liste suivante de nouveaux membres de bibliothèque qui doivent être ajoutés à la base de données.

Noms complets Date de naissance genre Adresse physique adresse postale Numéro de contact Adresse e-mail
Léonard Hofstadter Mâle Crête des bois 0845738767
Sheldon Cooper Mâle Crête des bois 0976736763
Rajesh Koothrappali Mâle Fairview 0938867763
Leslie Winkle 14/02/1984 Mâle 0987636553
Howard Wolowitz 24/08/1981 Mâle Parc du Sud P.O. Boîte 4563 0987786553

Insérons les données une par une. Nous commencerons par Leonard Hofstadter. Nous traiterons le numéro de contact comme un type de données numérique et ne mettrons pas le numéro entre guillemets simples.

INSÉRER DANS LES `membres` (`noms_complets`,`genre`,`adresse_physique`,`numéro_contact`) VALEURS ("Leonard Hofstadter", "Homme", "Woodcrest", 0845738767);

L'exécution du script ci-dessus supprime le 0 du numéro de contact de Leonard. En effet, la valeur sera traitée comme une valeur numérique et le zéro (0) au début est supprimé car il n'est pas significatif.

Afin d'éviter de tels problèmes, la valeur doit être placée entre guillemets simples comme indiqué ci-dessous :

INSÉRER DANS LES `membres` (`noms_complets`,`genre`,`adresse_physique`,`numéro_contact`) VALEURS ("Sheldon Cooper", "Homme", "Woodcrest", "0976736763");

Dans le cas ci - dessus, zero(0) ne sera pas supprimé

La modification de l'ordre des colonnes n'a aucun effet sur la requête INSERT tant que les valeurs correctes ont été mappées aux colonnes correctes.

La requête ci-dessous démontre le point ci-dessus.

INSÉRER DANS `membres` (`numéro_contact`,`genre`,`noms_complets`,`adresse_physique`)VALUES ("0938867763", "Homme", "Rajesh Koothrappali", "Woodcrest");

Les requêtes ci-dessus ont ignoré la colonne date de naissance, par défaut, MySQL insérera les valeurs NULL dans les colonnes ignorées dans la requête INSERT.

Insérons maintenant le dossier de Leslie sur lequel la date de naissance est fournie. La valeur de la date doit être placée entre guillemets simples au format « AAAA-MM-JJ ».

INSÉRER DANS `membres` (`noms_complets`,`date_de_naissance`,`genre`,`adresse_physique`,`numéro_de-contact`) VALEURS ("Leslie Winkle", "1984-02-14", "Mâle", "Woodcrest", 0987636553");

Toutes les requêtes ci-dessus ont spécifié les colonnes et les ont mappées aux valeurs de l'instruction d'insertion. Si nous fournissons des valeurs pour TOUTES les colonnes du tableau, nous pouvons alors omettre les colonnes de la requête d'insertion.

INSÉRER DANS LES VALEURS des « membres » (9, « Howard Wolowitz », « Homme », « 1981-08-24 », « SouthPark », « P.O. Box 4563 », « 0987786553 », « lwolowitzemail.me »);

Utilisons maintenant l'instruction SELECT pour afficher toutes les lignes de la table des membres.SELECT * FROM `members`;

numéro de membrenoms completsgenredate de naissanceadresse physiqueadresse postalenuméro_de-contacte-mail
1 Janet JonesFemelle21-07-1980 Terrain de la première rue n°4Sac privé0759 253 542 Cette adresse e-mail est protégée du spam. Vous devez activer Javascript pour le visualiser.
2 Janet Smith JonesFemelle23-06-1980 Melrose 123NULNULCette adresse e-mail est protégée du spam. Vous devez activer Javascript pour le visualiser.
3 Robert PhilMâle12-07-1989 3e rue 34NUL12345 Cette adresse e-mail est protégée du spam. Vous devez activer Javascript pour le visualiser.
4 Gloria WilliamsFemelle14-02-1984 2e rue 23NULNULNUL
5 Léonard HofstadterMâleNULCrête des boisNUL845738767 NUL
6 Sheldon CooperMâleNULCrête des boisNUL976736763 NUL
7 Rajesh KoothrappaliMâleNULCrête des boisNUL938867763 NUL
8 Leslie WinkleMâle14-02-1984 Crête des boisNUL987636553 NUL
9 Howard WolowitzMâle24-08-1981 Parc du SudP.O. Boîte 4563987786553 Cette adresse e-mail est protégée du spam. Vous devez activer Javascript pour le visualiser.

Notez que le numéro de contact de Leonard Hofstadter a supprimé le zéro (0) du numéro de contact. Les autres numéros de contact n'ont pas laissé tomber le zéro (0) au début.

Insertion dans une table à partir d'une autre table

La commande INSERT peut également être utilisée pour insérer des données dans une table à partir d'une autre table. La syntaxe de base est la suivante.

INSERT INTO table_1 SELECT * FROM table_2;

Regardons maintenant un exemple pratique, nous allons créer une table factice pour les catégories de films à des fins de démonstration. Nous appellerons la nouvelle table des catégories catégories_archive. Le script ci-dessous crée la table.

CREATE TABLE `categories_archive` (`category_id` int(11) AUTO_INCREMENT, `category_name` varchar(150) DEFAULT NULL, `remarks` varchar(500) DEFAULT NULL, PRIMARY KEY (`category_id`))

Exécutez le script ci-dessus pour créer la table.

Insérons maintenant toutes les lignes de la table des catégories dans la table d'archive des catégories. Le script ci-dessous nous aide à y parvenir.

INSERT INTO `categories_archive` SELECT * FROM `categories` ;

L'exécution du script ci-dessus insère toutes les lignes de la table des catégories dans la table d'archive des catégories. Notez que les structures des tables devront être les mêmes pour que le script fonctionne. Un script plus robuste est celui qui mappe les noms de colonnes de la table d'insertion à ceux de la table contenant les données.

La requête ci-dessous démontre son utilisation.

INSERT INTO `categories_archive`(category_id,category_name,remarks) SELECTcategory_id,category_name,remarks FROM `categories` ;

Exécution de la requête SELECT

SELECT * FROM `categories_archive`

donne les résultats suivants présentés ci-dessous.

id_catégorieNom de catégorieremarques
1 ComédieFilms avec humour
2 RomantiqueHistoires d'amour
3 ÉpiqueHistoire de films anciens
4 HorreurNUL
5 La science-fictionNUL
6 ThrillerNUL
7 ActionNUL
8 Comédie romantiqueNUL
9 Les dessins animésNUL
10 Les dessins animésNUL

Résumé

  • La commande INSERT est utilisée pour ajouter de nouvelles données dans une table
  • Les valeurs de date et de chaîne doivent être placées entre guillemets simples.
  • Les valeurs numériques n'ont pas besoin d'être placées entre guillemets.
  • La commande INSERT peut également être utilisée pour insérer des données d'une table dans une autre.

L'instruction INSERT insère de nouveaux enregistrements dans une table. Dans ce cas, les valeurs des colonnes peuvent être des constantes littérales ou être le résultat de l'exécution d'une sous-requête. Dans le premier cas, une instruction INSERT distincte est utilisée pour insérer chaque ligne ; dans le second cas, autant de lignes seront insérées que retournées par la sous-requête.

La syntaxe de l'opérateur est la suivante :

    INSÉRER DANS [ (,...) ]

    (VALEURS(,…))

  1. | (LES VALEURS PAR DÉFAUT)

Comme vous pouvez le voir dans la syntaxe présentée, la liste des colonnes est facultative (les crochets dans la description de la syntaxe l'indiquent). Si elle est manquante, la liste des valeurs insérées doit être complète, c'est-à-dire fournir des valeurs pour toutes les colonnes du tableau. Dans ce cas, l'ordre des valeurs doit correspondre à l'ordre spécifié par l'instruction CREATE TABLE pour le tableau dans lequel les lignes sont insérées. De plus, ces valeurs doivent être du même type de données que les colonnes dans lesquelles elles sont saisies. À titre d'exemple, envisagez d'insérer une ligne dans la table Product créée par l'instruction CREATE TABLE suivante :

    Produit CRÉER UNE TABLE

    maker char (1) NON NULL,

    modèle varchar(4) NON NULL,

    tapez varchar(7) NON NULL

Supposons que vous souhaitiez ajouter le modèle de PC 1157 du fabricant B à ce tableau. Cela peut être fait avec l'instruction suivante :

    INSÉRER DANS LE PRODUIT

    VALEURS ("B" , 1157 , "PC" ) ;

Si vous spécifiez une liste de colonnes, vous pouvez modifier leur ordre « naturel » :

    INSÉRER DANS LE Produit (type, modèle, fabricant)

    VALEURS ("PC" , 1157 , "B" ) ;

Il semblerait qu'il s'agisse d'une fonctionnalité totalement inutile, qui ne fait que rendre la conception plus encombrante. Cependant, il gagne si les colonnes ont des valeurs par défaut. Considérez la structure de tableau suivante :

    CREATE TABLE produit_D

    fabricant char (1) NULL,

    modèle varchar(4) NULL,

    tapez varchar (7) NON NULL PAR DÉFAUT "PC"

Notez qu'ici les valeurs de toutes les colonnes ont des valeurs par défaut (les deux premières sont NULL et la dernière colonne est de type - PC). On pourrait maintenant écrire :

    INSERT INTO Product_D (modèle, fabricant)

    VALEURS(1157, "B");

Dans ce cas, la valeur manquante lors de l'insertion d'une ligne sera remplacée par la valeur par défaut - PC. Notez que si une colonne ne reçoit pas de valeur par défaut dans une instruction CREATE TABLE et qu'une contrainte NOT NULL est spécifiée pour interdire l'utilisation de NULL dans cette colonne de table, alors la valeur par défaut de NULL est supposée.

La question se pose : est-il possible de ne pas spécifier de liste de colonnes et néanmoins d'utiliser les valeurs par défaut ? La réponse est oui. Pour cela, au lieu de préciser explicitement la valeur, utilisez le mot réservé DEFAULT :

    INSÉRER DANS Produit_D

    VALEURS ("B" , 1158 , PAR DEFAUT ) ;

Puisque toutes les colonnes ont des valeurs par défaut, pour insérer une ligne avec des valeurs par défaut vous pouvez écrire :

    INSÉRER DANS Produit_D

    VALEURS(DÉFAUT, DÉFAUT, DÉFAUT);

Cependant, dans ce cas, il existe une construction spéciale VALEURS PAR DÉFAUT (voir la syntaxe de l'opérateur), avec laquelle l'opérateur ci-dessus peut être réécrit sous la forme

    INSÉRER DANS LES VALEURS PAR DÉFAUT Product_D ;

Notez que lors de l'insertion d'une ligne dans un tableau, toutes les restrictions imposées sur ce tableau sont vérifiées. Il peut s'agir de contraintes de clé primaire ou d'index unique, de contraintes CHECK ou de contraintes d'intégrité référentielle. Si une contrainte n’est pas respectée, l’insertion de ligne sera rejetée. Considérons maintenant le cas de l'utilisation d'une sous-requête. Supposons que nous devions insérer dans la table Product_D toutes les lignes de la table Product liées aux modèles d'ordinateurs personnels (type = 'PC'). Étant donné que les valeurs dont nous avons besoin se trouvent déjà dans un tableau, la génération manuelle des lignes insérées est, d'une part, inefficace et, d'autre part, peut permettre des erreurs de saisie. L'utilisation d'une sous-requête résout ces problèmes :

L'utilisation du symbole « * » dans la sous-requête est justifiée dans ce cas, puisque l'ordre des colonnes est le même pour les deux tables. Si ce n'était pas le cas, une liste de colonnes devrait être appliquée soit dans l'instruction INSERT, soit dans la sous-requête, soit dans les deux, qui correspondrait à l'ordre des colonnes :

Ici, comme auparavant, vous ne pouvez pas spécifier toutes les colonnes si vous souhaitez utiliser les valeurs par défaut existantes, par exemple :

Dans ce cas, la colonne type de la table Product_D sera remplacée par la valeur par défaut PC pour toutes les lignes insérées.

Notez que lors de l'utilisation d'une sous-requête contenant un prédicat, seules les lignes pour lesquelles la valeur du prédicat est VRAI (et non INCONNU !) seront insérées. En d’autres termes, si la colonne type de la table Product était NULLable et que cette valeur était présente dans un certain nombre de lignes, ces lignes ne seraient pas insérées dans la table Product_D.

La technique artificielle consistant à utiliser une sous-requête qui forme une ligne avec la clause UNION ALL vous permet de surmonter la limitation de l'insertion d'une ligne dans l'instruction INSERT lors de l'utilisation du constructeur de ligne dans la clause VALUES. Ainsi, si nous devons insérer plusieurs lignes à l’aide d’une seule instruction INSERT, nous pouvons écrire :

    INSÉRER DANS Produit_D

    SELECT "B" AS maker, modèle 1158 AS, type "PC" AS

    UNION TOUS

    SELECT "C", 2190, "Ordinateur portable"

    UNION TOUS

    SELECT "D" , 3219 , "Imprimante" ;

L'utilisation de UNION ALL est préférable à UNION même si l'absence de lignes en double est garantie, puisque dans ce cas aucune vérification ne sera effectuée pour éliminer les doublons.

Il convient de noter que l'insertion de plusieurs tuples à l'aide du constructeur de lignes est déjà implémentée dans Système de gestion de bases de données relationnelles (SGBD), développé par Microsoft Corporation.Structured Query Language) est un langage informatique universel utilisé pour créer, modifier et manipuler des données dans des bases de données relationnelles. serveur SQL 2008. Compte tenu de cette possibilité, la dernière requête peut être réécrite comme suit :

    INSÉRER DANS LES VALEURS Product_D

    ("B", 1158, "PC"),

    ("C", 2190, "Ordinateur portable"),

Équipe ajoute des lignes au tableau ou vue de la table principale.

Syntaxe de la commande SQL INSERT

Insérer une syntaxe de commande


Mots-clés et paramètres de base de la commande INSERT
  • schéma- identifiant d'autorisation, correspondant généralement au nom d'un utilisateur
  • Vue de tableau- le nom du tableau dans lequel les lignes doivent être insérées ; si une vue est spécifiée, les lignes sont insérées dans la table principale de la vue
  • sous-requête_1- une sous-requête que le serveur traite de la même manière qu'une vue
  • colonne- une colonne de tableau ou de vue dans laquelle la valeur de la phrase est saisie pour chaque ligne insérée VALEURS ou sous-requête ; si l'une des colonnes de la table est omise de cette liste, la valeur de colonne de la ligne insérée est la valeur de colonne par défaut définie lors de la création de la table. Si une liste de colonnes est complètement omise, la clause VALEURS ou la requête doit déterminer les valeurs de toutes les colonnes du tableau
  • VALEURS- définit une chaîne de valeurs qui sera insérée dans la table ou la vue ; le sens doit être défini dans la phrase VALEURS pour chaque colonne de la liste des colonnes
  • sous-requête_2- une sous-requête qui renvoie les lignes insérées dans la table ; la liste de sélection de cette sous-requête doit avoir le même nombre de colonnes que la liste des colonnes de l'instruction

Déclaration avec la phrase VALEURS ajoute une seule ligne au tableau. Cette ligne contient les valeurs définies par la phrase VALEURS.
Déclaration avec sous-requête au lieu d'une phrase VALEURS ajoute toutes les lignes renvoyées par la sous-requête à la table. Le serveur traite sous-requête et insère chaque ligne renvoyée dans le tableau. Si la sous-requête ne sélectionne aucune ligne, le serveur n'insère aucune ligne dans la table.
Sous-requête peut accéder à n'importe quelle table ou vue, y compris la table d'assertion cible . Le serveur attribue des valeurs aux champs des nouvelles lignes en fonction de la position interne des colonnes dans le tableau et de l'ordre des valeurs des expressions. VALEURS ou dans la liste de sélection des requêtes. Si des colonnes manquent dans la liste des colonnes, le serveur leur attribue les valeurs par défaut définies lors de la création de la table. Si l'une de ces colonnes a une contrainte NOT NULL, le serveur renvoie une erreur indiquant que la contrainte a été violée et abandonne l'instruction INSERT.
Lorsqu'une instruction INSERT est émise, tout déclencheur INSERT défini sur la table est activé.

INSÉRER DANS Exemple 1

INSÉRER DANS département VALEURS(50, "PRODUITS", "SAN FRANCISCO");

INSÉRER DANS Clients (ville, cname, cnum) VALEURS(« Londres », « Hoffman », 2001) ;

INSÉRER DANS Exemple 2
La commande suivante copie les données des salariés de l'entreprise dont les commissions dépassent 25 % des revenus dans le tableau des bonus :

INSÉRER DANS bonus SELECT ename, job, sal, comm FROM emp WHERE comm > 0,25 * sal;

INSÉRER DANS Exemple 3
Si vous devez insérer NUL-value, vous devez la spécifier comme valeur normale comme suit :

INSÉRER DANS VALEURS des vendeurs (1001, 'Peel', NULL, 12) ;

INSÉRER DANS Exemple 4
La commande peut être utilisée pour récupérer les valeurs d'une table et les placer dans une autre à l'aide d'une requête. Pour ce faire, il suffit de remplacer la phrase VALEURSà la demande correspondante :

INSÉRER DANS Londonstaff SELECT * FROM Vendeurs WHERE city = 'Londres';

INSÉRER MySQL

Pour insérer de nouvelles lignes dans une base de données MySQL, utilisez Commande INSÉRER, exemples de commandes sont donnés ci-dessous :
INSÉRER DANS L'exemple 1.
Insertion d'une nouvelle ligne dans la table nom_table.

INSÉRER DANS

INSÉRER DANS L'exemple 2.
Insérer une nouvelle ligne dans la table nom_table indiquant l'insertion des données dans les colonnes dont nous avons besoin.

INSÉRER DANS nom_table VALUES('1','165','0','nom');

Dans la base de données MySQL Il est possible d'insérer plusieurs nouvelles lignes à l'aide d'une seule commande.
INSÉRER DANS L'exemple 3.
Insertion de plusieurs lignes dans la table nom_table.

INSÉRER DANS nom_table (tbl_id, chislo, chislotwo, nom) VALEURS ('1′,'159′,'34','nom1′), ('2′,'14','61','nom2′), ('3 ','356','8','nom3');

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

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

INSERT table_name [(column_list)] 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 auxquelles les données doivent être ajoutées, et à la fin, après le mot VALEURS, les valeurs à ajouter pour les colonnes sont répertoriées dans parenthèses.

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

CRÉER UNE BASE DE DONNÉES produitsdb ; ALLEZ UTILISER productsdb ; Produits CREATE TABLE (Id INT IDENTITY PRIMARY KEY, ProductName NVARCHAR(30) NOT NULL, Fabricant 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 SQL Server Management Studio, le message « 1 ligne(s) affectée(s) » doit apparaître dans le champ du message :

Il convient de considérer que les valeurs des colonnes entre parenthèses après le mot-clé VALUES 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 comme l'attribut IDENTITY est spécifié pour cela, la valeur de cette colonne est automatiquement générée et peut être omise. La deuxième colonne représente ProductName, donc la première valeur, la chaîne « iPhone 7 », sera transmise à cette colonne. La deuxième valeur - la chaîne "Apple" sera transmise à la troisième colonne Fabricant et ainsi de suite. Autrement dit, les valeurs sont transmises aux colonnes comme suit :

    Nom du produit : « iPhone 7 »

    Fabricant : "Apple"

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 est spécifiée pour seulement trois colonnes. De plus, désormais les valeurs sont transmises dans l'ordre des colonnes :

    Nom du produit : "iPhone 6S"

    Fabricant : "Apple"

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

On peut également 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 colonne doit avoir une valeur par défaut à l'aide du mot-clé DEFAULT, ou une valeur NULL :

INSERT INTO Products (ProductName, Manufacturer, ProductCount, Price) VALEURS ("Mi6", "Xiaomi", DEFAULT, 28000)

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

Si toutes les colonnes ont un attribut DEFAULT qui spécifie une valeur 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 nous prenons la table Products, une telle commande échouera avec une erreur, car plusieurs champs n'ont pas l'attribut DEFAULT et n'autorisent en même temps pas la valeur NULL.

Partager