Suche…


Einführung

Die Anweisung INSERT INTO wird verwendet, um neue Datensätze in eine Tabelle einzufügen.

INSERT Hello World INTO-Tabelle

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

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

INSERT für bestimmte Spalten

Um bestimmte Spalten (nicht alle Spalten) einzufügen, müssen Sie die Spalten angeben, die Sie aktualisieren möchten.

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

Dies funktioniert nur, wenn die Spalten, die Sie nicht auflisten, Nullwerte, Identität, Zeitstempeldatentyp oder berechnete Spalten sind. oder Spalten mit einer Standardwerteinschränkung. Wenn einer dieser Spalten nicht nullfähige, nicht identifizierte, nicht zeitgesteuerte, nicht berechnete und nicht standardmäßige Spalten enthält, wird beim Versuch, diese Art des Einfügens zu versuchen, eine Fehlernachricht ausgegeben, die Sie dazu auffordert, eine Wert für das / die zutreffenden Feld (e).

FÜGEN Sie mehrere Datenzeilen ein

So fügen Sie mehrere Datenzeilen in SQL Server 2008 oder höher ein:

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

Um mehrere Datenzeilen in früheren Versionen von SQL Server einzufügen, verwenden Sie "UNION ALL" wie folgt:

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

Beachten Sie, dass das Schlüsselwort "INTO" in INSERT-Abfragen optional ist. Eine weitere Warnung ist, dass der SQL Server nur 1000 Zeilen in einer INSERT unterstützt. Sie müssen also in Stapel aufgeteilt werden.

FÜGEN Sie eine einzelne Datenzeile ein

Eine einzelne Datenzeile kann auf zwei Arten eingefügt werden:

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

Oder

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

Beachten Sie, dass die zweite Einfügeanweisung nur die Werte in genau derselben Reihenfolge wie die Tabellenspalten zulässt, während in der ersten Einfügung die Reihenfolge der Werte wie folgt geändert werden kann:

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

Verwenden Sie OUTPUT, um die neue ID zu erhalten

Beim EINFÜGEN können Sie OUTPUT INSERTED.ColumnName , um Werte aus der neu eingefügten Zeile OUTPUT INSERTED.ColumnName , z. B. die neu generierte Id - nützlich, wenn Sie eine IDENTITY Spalte oder eine Art Standard- oder berechneten Wert haben.

Wenn Sie dies programmgesteuert aufrufen (z. B. von ADO.net), würden Sie es als normale Abfrage behandeln und die Werte lesen, als hätten Sie eine SELECT -Anweisung gemacht.

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

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

Wenn die ID der kürzlich hinzugefügten Zeile innerhalb derselben Abfrage- oder gespeicherten Prozedur erforderlich ist.

-- 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)

EINFÜGEN aus SELECT-Abfrageergebnissen

So fügen Sie aus einer SQL-Abfrage abgerufene Daten ein (einzelne oder mehrere Zeilen)

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

Beachten Sie, dass 'student' in SELECT eine String-Konstante ist, die in jede Zeile eingefügt wird.

Bei Bedarf können Sie Daten aus derselben Tabelle auswählen und einfügen



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow