Ajout de lignes à l'aide d'INSERT et SELECT
Vous pouvez utiliser les instructions INSERT et SELECT pour ajouter des lignes à une table des manières suivantes :
- Utilisez l'instruction INSERT pour spécifier des valeurs directement ou à partir d'une sous-requête.
- Utilisez l'instruction SELECT avec la clause INTO.
Utilisation d'INSERT
L'instruction INSERT permet d'ajouter une ou plusieurs nouvelles lignes à une table. Dans un traitement simplifié, la forme d'INSERT est la suivante :
INSERT [INTO] table_or_view [(column_list)] data_values
L'instruction INSERT insère les data_values sous la forme d'une ou de plusieurs lignes dans la table ou la vue spécifiée. L'argument column_list est une liste de noms de colonnes, séparés par des virgules, qui permet de spécifier les colonnes pour lesquelles les données sont fournies. Si l'argument column_list n'est pas spécifié, toutes les colonnes de la table ou de la vue reçoivent des données.
Lorsqu'un argument column_list ne spécifie pas toutes les colonnes d'une table ou d'une vue, une valeur NULL (ou une valeur par défaut si elle a été définie pour la colonne) est insérée dans toute colonne ne figurant pas dans la liste. Toutes les colonnes non spécifiées dans la liste de colonnes doivent soit admettre des valeurs NULL, soit se voir affecter une valeur par défaut.
Les instructions INSERT ne spécifient pas de valeurs pour les types de colonnes suivants car le moteur de base de données SQL Server 2005 génère les valeurs pour les colonnes suivantes :
les colonnes dotées d'une propriété IDENTITY qui génère les valeurs pour la colonne ;
les colonnes dotées d'une valeur par défaut qui utilise la fonction NEWID pour générer une valeur GUID unique ;
les colonnes calculées.
Les colonnes calculées sont des colonnes virtuelles définies sous la forme d'une expression calculée à partir d'une ou de plusieurs autres colonnes dans l'instructionCREATE TABLE
, telles que :CREATE TABLE TestTable (ColA INT PRIMARY KEY, ColB INT NOT NULL, ColC AS (ColA + ColB) * 2)
L'exemple suivant montre comment insérer des lignes dans une table dont les colonnes génèrent automatiquement une valeur ou possèdent une valeur par défaut. Les instructions INSERT
insèrent des lignes qui contiennent des valeurs pour certaines colonnes mais pas pour toutes. Dans la dernière instruction INSERT
, aucune colonne n'est spécifiée et seules les valeurs par défaut sont insérées.
USE AdventureWorks;
GO
IF OBJECT_ID ('dbo.T1', 'U') IS NOT NULL
DROP TABLE dbo.T1;
GO
CREATE TABLE dbo.T1
(
column_1 int IDENTITY,
column_2 varchar(30)
CONSTRAINT default_name DEFAULT ('my column default'),
column_3 timestamp,
column_4 varchar(40) NULL
);
GO
INSERT INTO dbo.T1 (column_4)
VALUES ('Explicit value');
INSERT INTO dbo.T1 (column_2, column_4)
VALUES ('Explicit value', 'Explicit value');
INSERT INTO dbo.T1 (column_2)
VALUES ('Explicit value');
INSERT INTO T1 DEFAULT VALUES;
GO
SELECT column_1, column_2, column_3, column_4
FROM dbo.T1;
GO
Utilisation d'INSERT avec la clause VALUE et une sous-requête SELECT
Les valeurs de données fournies doivent correspondre à la liste de colonnes. Le nombre de valeurs de données doit être identique à celui des colonnes, tandis que le type de données, la précision et l'échelle de chaque valeur de données doivent correspondre à ceux de la colonne correspondante. Vous pouvez spécifier les valeurs des données de différentes manières :
En utilisant une clause
VALUES
pour spécifier les valeurs de données pour une ligne. Exemple :INSERT INTO MyTable (PriKey, Description) VALUES (123, 'A description of part 123.')
Pour plus d'informations, consultez Insertion d’une ligne à l'aide de l’instruction INSERT et VALUES.
En utilisant une sous-requête
SELECT
pour spécifier les valeurs de données pour une ou plusieurs lignes, par exemple :INSERT INTO MyTable (PriKey, Description) SELECT ForeignKey, Description FROM SomeView
Pour plus d'informations, consultez Insertion de lignes à l'aide des sous-requêtes INSERT et SELECT
Utilisation de SELECT avec INTO
Pour créer une table à partir de valeurs dans une autre table, vous pouvez utiliser SELECT INTO
. Exemple :
SELECT LastName, FirstName, Phone
INTO dbo.PhoneList492
FROM Person.Contact
WHERE Phone LIKE '492%'
Pour plus d'informations, consultez Insertion de lignes au moyen de l'instruction SELECT INTO.
Voir aussi
Autres ressources
SELECT (Transact-SQL)
INSERT (Transact-SQL)
Insertion de données dans une table