Ricerca…


introduzione

L'istruzione INSERT INTO viene utilizzata per inserire nuovi record in una tabella.

INSERISCI Hello World INTO table

CREATE TABLE MyTableName
(
    Id INT,
    MyColumnName NVARCHAR(1000)
)
GO

INSERT INTO MyTableName (Id, MyColumnName)
VALUES (1, N'Hello World!')
GO    

INSERISCI su colonne specifiche

Per fare un inserimento su colonne specifiche (a differenza di tutte loro) devi specificare le colonne che vuoi aggiornare.

INSERT INTO USERS (FIRST_NAME, LAST_NAME)
VALUES ('Stephen', 'Jiang');

Funzionerà solo se le colonne che non hai elencato sono annullabili, identità, tipo di data e ora o colonne calcolate; o colonne che hanno un vincolo di valore predefinito. Pertanto, se qualcuno di questi è non nullable, non-identità, non-timestamp, colonne di valore non calcolate, non predefinite ... allora il tentativo di questo tipo di inserimento attiverà un messaggio di errore che ti dice che devi fornire un valore per i campi applicabili.

INSERISCI più righe di dati

Per inserire più righe di dati in SQL Server 2008 o versioni successive:

INSERT INTO USERS VALUES
(2, 'Michael', 'Blythe'),
(3, 'Linda', 'Mitchell'),
(4, 'Jillian', 'Carson'),
(5, 'Garrett', 'Vargas');

Per inserire più righe di dati nelle versioni precedenti di SQL Server, utilizzare "UNION ALL" in questo modo:

INSERT INTO USERS (FIRST_NAME, LAST_NAME)
SELECT 'James', 'Bond' UNION ALL
SELECT 'Miss', 'Moneypenny' UNION ALL
SELECT 'Raoul', 'Silva'

Nota, la parola chiave "INTO" è facoltativa nelle query INSERT. Un altro avviso è che il server SQL supporta solo 1000 righe in un unico INSERT, quindi è necessario dividerli in lotti.

INSERISCI una singola riga di dati

Una singola riga di dati può essere inserita in due modi:

INSERT INTO USERS(Id, FirstName, LastName)
VALUES (1, 'Mike', 'Jones');

O

INSERT INTO USERS
VALUES (1, 'Mike', 'Jones');

Si noti che la seconda istruzione di inserimento consente solo i valori esattamente nello stesso ordine delle colonne della tabella mentre nel primo inserimento, l'ordine dei valori può essere modificato come:

INSERT INTO USERS(FirstName, LastName, Id)
VALUES ('Mike', 'Jones', 1);

Usa OUTPUT per ottenere il nuovo ID

Quando INSERISCI, puoi utilizzare OUTPUT INSERTED.ColumnName per ottenere i valori dalla riga appena inserita, ad esempio l'Id appena generato, utile se hai una colonna IDENTITY o qualsiasi tipo di valore predefinito o calcolato.

Quando si chiama in modo programmatico questo (ad esempio, da ADO.net) lo si considererebbe una query normale e si leggeranno i valori come se avessi fatto un SELECT -statement.

-- CREATE TABLE OutputTest ([Id] INT NOT NULL PRIMARY KEY IDENTITY, [Name] NVARCHAR(50))

INSERT INTO OutputTest ([Name])
OUTPUT INSERTED.[Id]
VALUES ('Testing')

Se l'ID della riga aggiunta recentemente è richiesto all'interno della stessa serie di query o stored procedure.

-- CREATE a table variable having column with the same datatype of the ID

DECLARE @LastId TABLE ( id int);

INSERT INTO OutputTest ([Name])
OUTPUT INSERTED.[Id] INTO @LastId
VALUES ('Testing')

SELECT id FROM @LastId

-- We can set the value in a variable and use later in procedure

DECLARE @LatestId int = (SELECT id FROM @LastId)

INSERISCI dai risultati della query SELECT

Per inserire i dati recuperati dalla query SQL (righe singole o multiple)

INSERT INTO Table_name (FirstName, LastName, Position)
SELECT FirstName, LastName, 'student' FROM Another_table_name

Nota, 'studente' in SELECT è una costante di stringa che verrà inserita in ogni riga.

Se necessario, è possibile selezionare e inserire dati da / nella stessa tabella



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow