Cet article contient du SQL de base INSERT
instructions que les débutants peuvent utiliser pour insérer des données dans leurs tables de base de données.
Syntaxe de base
La syntaxe de base pour insérer des données dans SQL ressemble à ceci :
INSERT INTO TableName (Column1, Column2, Column3, ...)
VALUES (Value1, Value2, Value3, ...);
Où :
TableName
est le nom de la table dans laquelle vous souhaitez insérer des donnéesColumn1
, etc sont les noms des colonnes dans lesquelles vous souhaitez insérer des donnéesValue1
, etc sont les valeurs que vous insérez dans ces colonnes. L'ordre de ces valeurs doit correspondre à l'ordre dans lequel vous avez répertorié les colonnes (c'est-à-direValue1
va dansColumn1
, etc.).
Vous pouvez omettre les noms de colonne si vous insérez des valeurs dans toutes les colonnes. Dans ce cas, vous pouvez utiliser la syntaxe suivante :
INSERT INTO TableName
VALUES (Value1, Value2, Value3, ...);
Notez que certains SGBD utilisent une syntaxe plus complexe que celle-ci (c'est-à-dire qu'ils offrent plus d'options), mais c'est généralement la syntaxe de base requise pour insérer des données dans une table.
Insérer dans toutes les colonnes
Voici un exemple de base qui insère des données dans toutes les colonnes du tableau :
INSERT INTO PetTypes
VALUES( 1, 'Bird' );
Dans ce cas, il y a deux colonnes dans PetTypes
table, et nous insérons des valeurs dans les deux colonnes, par conséquent, nous n'avons pas besoin de spécifier les noms de colonne.
La déclaration ci-dessus revient à faire ceci :
INSERT INTO PetTypes( PetTypeId, PetType )
VALUES( 1, 'Bird' );
Nous pouvons vérifier nos données en exécutant un SELECT
déclaration.
SELECT * FROM PetTypes;
Résultat :
+-------------+-----------+ | PetTypeId | PetType | |-------------+-----------| | 1 | Bird | +-------------+-----------+
Insérer dans certaines colonnes
Voici un exemple simple qui insère des données dans certaines colonnes du tableau :
INSERT INTO Users( UserId, FirstName, LastName )
VALUES( 1, 'Lansell', 'Letterman' );
Ce tableau comporte en fait quatre colonnes, mais nous n'insérons des données que dans trois de ces colonnes. Nous pouvons le voir lorsque nous exécutons un SELECT
déclaration par rapport à la table après avoir inséré les données.
SELECT * FROM Users;
Résultat :
+----------+-------------+------------+-----------------------------+ | UserId | FirstName | LastName | DateInserted | |----------+-------------+------------+-----------------------------| | 1 | Lansell | Letterman | 2020-11-21 05:18:50.0029455 | +----------+-------------+------------+-----------------------------+
Comment insérer des valeurs dans le mauvais ordre
La méthode de liste de colonnes vous permet d'insérer des données qui ne sont pas dans le même ordre :
INSERT INTO Users( LastName, FirstName, UserId )
VALUES( 'Pitt', 'Bart', 2 );
Dans cet exemple, j'ai réorganisé l'ordre des colonnes et leurs valeurs respectives. Heureusement, la liste des colonnes fournit au SGBD des indications sur l'endroit où chaque valeur doit être insérée.
Alors maintenant, si nous sélectionnons nos données, nous verrons qu'elles ont été insérées dans les bonnes colonnes.
SELECT * FROM Users;
Résultat :
+----------+-------------+------------+-----------------------------+ | UserId | FirstName | LastName | DateInserted | |----------+-------------+------------+-----------------------------| | 1 | Lansell | Letterman | 2020-11-21 05:18:50.0029455 | | 2 | Bart | Pitt | 2020-11-21 05:30:07.4456867 | +----------+-------------+------------+-----------------------------+
Insérer le résultat d'une requête
Il est également possible d'insérer le jeu de résultats d'une requête dans une table. Il existe plusieurs approches que vous pouvez adopter avec cela.
- Utilisez le
INSERT INTO... SELECT
déclaration. Dans ce cas, vous devez d'abord créer la table avant d'y insérer un jeu de résultats de requête. - Utilisez l'instruction CREATE TABLE … AS SELECT. Cette méthode crée automatiquement une nouvelle table basée sur le jeu de résultats de la requête, puis insère ces résultats dans la table. Bien que cette méthode soit conforme au standard SQL, elle n'est pas prise en charge par tous les SGBD.
- Utilisez le
SELECT INTO
déclaration. Ceci est similaire à l'option précédente. Il crée automatiquement une nouvelle table basée sur le jeu de résultats de la requête, puis insère ces résultats dans la table. Si la méthode précédente (CREATE TABLE ... AS SELECT
) n'est pas pris en charge par votre SGBD, essayez cette méthode.