Aggiunta di righe con INSERT e SELECT
È possibile utilizzare le istruzioni INSERT e SELECT per aggiungere righe a una tabella eseguendo le operazioni seguenti:
- Utilizzare l'istruzione INSERT per specificare direttamente i valori o per ottenerli da una subquery.
- Utilizzare l'istruzione SELECT con la clausola INTO.
Utilizzo di INSERT
L'istruzione INSERT inserisce una o più righe in una tabella. La forma semplificata dell'istruzione è la seguente:
INSERT [INTO] table_or_view [(column_list)] data_values
Quando si esegue questa istruzione, i valori data_values vengono inseriti in una o più righe della tabella o vista specificata. column_list è un elenco delimitato da virgole dei nomi delle colonne in cui si desidera inserire i dati. Se column_list viene omesso, i dati vengono inseriti in tutte le colonne della tabella o della vista.
Se in column_list non sono elencate tutte le colonne di una tabella o di una vista, nelle colonne non specificate viene inserito il valore NULL o l'eventuale valore predefinito associato a ogni colonna. È necessario che per tutte le colonne non incluse nell'elenco sia previsto il supporto di valori Null o un valore predefinito.
Nelle istruzioni INSERT non vengono specificati valori per i tipi di colonne seguenti, poiché in Motore di database di SQL Server 2005 i valori di tali colonne vengono generati in modo automatico:
Colonne con la proprietà IDENTITY che genera valori per la colonna.
Colonne a cui è associato un valore predefinito che utilizza la funzione NEWID per generare un valore GUID univoco.
Colonne calcolate.
Le colonne calcolate sono colonne virtuali, ognuna delle quali viene definita come espressione calcolata in base a una o più colonne specificate nell'istruzioneCREATE TABLE
, ad esempio:CREATE TABLE TestTable (ColA INT PRIMARY KEY, ColB INT NOT NULL, ColC AS (ColA + ColB) * 2)
Nell'esempio seguente viene illustrato l'inserimento di righe in una tabella con colonne per le quali viene generato automaticamente un valore o è specificato un valore predefinito. Le istruzioni INSERT
inseriscono righe che contengono valori solo per alcune delle colonne. Nell'ultima istruzione INSERT
non sono specificate colonne e vengono inseriti solo i valori predefiniti.
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
Utilizzo di INSERT con la clausola VALUE e una subquery SELECT
I valori specificati devono corrispondere alle colonne elencate. Il numero dei valori deve essere uguale a quello delle colonne, mentre il tipo di dati, la precisione e la scala di ogni valore devono corrispondere a quelli previsti per i dati della colonna corrispondente. È possibile specificare i valori dei dati nei modi seguenti:
Utilizzando una clausola
VALUES
per specificare i valori per una riga, come illustrato di seguito:INSERT INTO MyTable (PriKey, Description) VALUES (123, 'A description of part 123.')
Per ulteriori informazioni, vedere Inserimento di una riga tramite INSERT e Values.
Utilizzando una subquery
SELECT
per specificare i valori per una o più righe, ad esempio:INSERT INTO MyTable (PriKey, Description) SELECT ForeignKey, Description FROM SomeView
Per ulteriori informazioni, vedere Inserimento di righe con subquery INSERT e SELECT.
Utilizzo di SELECT con INTO
Per creare una nuova tabella da valori di un'altra tabella, è possibile utilizzare SELECT INTO
. Ad esempio:
SELECT LastName, FirstName, Phone
INTO dbo.PhoneList492
FROM Person.Contact
WHERE Phone LIKE '492%'
Per ulteriori informazioni, vedere Inserimento di righe con l'istruzione SELECT INTO.
Vedere anche
Altre risorse
SELECT (Transact-SQL)
INSERT (Transact-SQL)
Inserimento di dati in una tabella