Microsoft SQL Server
EINFÜGEN IN
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