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

Hilfe und Informationen

Informationsquellen für SQL Server 2005