Hinzufügen von Zeilen mithilfe von INSERT und SELECT
Es gibt folgende Möglichkeiten, um mit den Anweisungen INSERT und SELECT einer Tabelle Zeilen hinzuzufügen:
- Verwenden der INSERT-Anweisung, um Werte direkt oder aus einer Unterabfrage anzugeben.
- Verwenden der SELECT-Anweisung mit der INTO-Klausel.
Verwenden von INSERT
Die INSERT-Anweisung fügt mindestens eine neue Zeile zu einer Tabelle hinzu. In einem vereinfachten Fall weist INSERT die folgende Form auf:
INSERT [INTO] table_or_view [(column_list)] data_values
Die INSERT-Anweisung fügt die mit data_values angegebenen Datenwerte als eine oder mehrere Zeilen in die angegebene Tabelle oder Sicht ein. column_list ist eine Liste von durch Kommas getrennten Spaltennamen, die zum Angeben der Spalten verwendet werden kann, für die Daten bereitgestellt werden. Falls column_list nicht angegeben wird, erhalten alle Spalten in der Tabelle oder Sicht Daten.
Wenn column_list nicht alle Spalten in einer Tabelle oder Sicht angibt, wird entweder der Standardwert (wenn ein Standard für die Spalte definiert wurde) oder NULL in jede Spalte eingefügt, die nicht in der Liste angegeben ist. Alle nicht in der Spaltenliste angegebenen Spalten müssen entweder NULL-Werte zulassen, oder es muss ihnen ein Standardwert zugewiesen sein.
INSERT-Anweisungen geben keine Werte für die folgenden Spaltentypen an, da die Werte für diese Spalten von SQL Server 2005-Datenbankmodul generiert werden:
Spalten mit einer IDENTITY-Eigenschaft, die die Werte für die Spalte generiert.
Spalten mit einem Standard, der die NEWID-Funktion zum Generieren eines eindeutigen GUID-Wertes verwendet.
Berechnete Spalten.
Berechnete Spalten sind virtuelle Spalten, die als Ausdruck definiert werden, der aus mindestens einer anderen Spalte in derCREATE TABLE
-Anweisung berechnet wird. Beispiel:CREATE TABLE TestTable (ColA INT PRIMARY KEY, ColB INT NOT NULL, ColC AS (ColA + ColB) * 2)
Das folgende Beispiel zeigt, wie in eine Tabelle mit Spalten, die automatisch einen Wert generieren oder einen Standardwert besitzen, Zeilen eingefügt werden. Die INSERT
-Anweisungen fügen Zeilen ein, die Werte für einige (aber nicht alle) Spalten enthalten. In der letzten INSERT
-Anweisung werden keine Spalten angegeben, und nur die Standardwerte werden eingefügt.
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
Verwenden von INSERT mit der VALUE-Klausel und einer SELECT-Unterabfrage
Die angegebenen Datenwerte müssen mit den Angaben der Spaltenliste übereinstimmen. Die Anzahl der Datenwerte muss identisch mit der Anzahl der Spalten sein. Datentyp, Genauigkeit sowie die Anzahl der Dezimalstellen jedes Datenwertes müssen mit den entsprechenden Angaben der jeweiligen Spalte übereinstimmen. Es gibt folgende Möglichkeiten, um die Datenwerte anzugeben:
Verwenden einer
VALUES
-Klausel zum Angeben der Datenwerte für eine Zeile. Beispiel:INSERT INTO MyTable (PriKey, Description) VALUES (123, 'A description of part 123.')
Weitere Informationen finden Sie unter Einfügen einer Zeile durch Verwenden von INSERT mit Werten.
Verwenden einer
SELECT
-Unterabfrage zum Angeben der Datenwerte für eine oder mehrere Zeilen, wie z. B.:INSERT INTO MyTable (PriKey, Description) SELECT ForeignKey, Description FROM SomeView
Weitere Informationen finden Sie unter Einfügen von Reihen mithilfe der Unterabfragen INSERT und SELECT.
Verwenden von SELECT mit INTO
Mit SELECT INTO
können Sie aus Werten in einer anderen Tabelle eine neue Tabelle erstellen. Beispiel:
SELECT LastName, FirstName, Phone
INTO dbo.PhoneList492
FROM Person.Contact
WHERE Phone LIKE '492%'
Weitere Informationen finden Sie unter Einfügen von Zeilen mit SELECT INTO.
Siehe auch
Andere Ressourcen
SELECT (Transact-SQL)
INSERT (Transact-SQL)
Einfügen von Daten in eine Tabelle