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 Trennzeichen 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 Database Engine (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-Werts verwendet.

  • Berechnete Spalten.

    Berechnete Spalten sind virtuelle Spalten, die als Ausdruck definiert werden, der aus mindestens einer anderen Spalte in der CREATE 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 AdventureWorks2008R2;
GO
IF OBJECT_ID ('dbo.T1', 'U') IS NOT NULL
    DROP TABLE dbo.T1;
GO
CREATE TABLE dbo.T1 
(
    column_1 AS 'Computed column ' + column_2, 
    column_2 varchar(30) 
        CONSTRAINT default_name DEFAULT ('my column default'),
    column_3 rowversion,
    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 Datenwerts müssen mit den entsprechenden Angaben der jeweiligen Spalte übereinstimmen. Es gibt folgende Möglichkeiten, um die Datenwerte anzugeben:

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 dbo.Customers
WHERE Phone LIKE '492%'

Weitere Informationen finden Sie unter Einfügen von Zeilen mit SELECT INTO.