INSERT INTO <Tabellenname>(<Spaltenname> [, weitere Spaltennamen]) VALUES (<Wert für die erste Spalte> [, weitere Werte])Einfache Form: Hinter VALUES werden alle einzufügenden Werte der Reihe nach aufgelistet. Es wird genau eine neue Zeile erzeugt.
INSERT INTO <Tabellenname>(<Spaltenname> [, weitere Spaltennamen]) SELECT <Spalte-1> [, weitere Ausgaben] [FROM ...] [WHERE ...] [GROUP BY ...] [HAVING ...]Einfügen mehrerer Zeilen. Als Select-Anweisung ist jede beliebige Anweisung möglich, sofern die Zahl der Ausgabespalten mit der Zahl der Zielspalten sowie die Datentypen übereinstimmen. Das Select-Recordset kann auch keine Zeilen zurückliefern, dies ist kein Fehler, es werden keine Zeilen hinzugefügt.
INSERT INTO ARTIKEL(A_NR, A_NAME, A_PREIS) VALUES(12, 'Oberhemd', 39.80)Dies fügt in die Tabelle Artikel die erste Zeile aus der Artikel.txt ein. Dies gelingt allerdings nur deshalb, da die Spalte A_NR keine automatisch erzeugte fortlaufende Nummer enthält und deshalb der Wert für den Primärschlüssel per Hand festgelegt werden muß.
CREATE TABLE [Artikel-mit-Id] (A_NR int Identity(1, 1) Primary Key, A_Name varchar(50), A_Preis money)Dies erzeugt eine Tabelle, bei welcher der ersten Spalte ein automatisch erstellter Wert zugewiesen wird
INSERT INTO [Artikel-mit-Id](A_NAME, A_PREIS) VALUES ('Oberhemd', 39.80)In die neue Tabelle wird eine Zeile eingetragen. Ist die Tabelle soeben neu erstellt worden, so erhält die neue Zeile den Wert 1 als Primärschlüssel.
INSERT INTO ARTIKEL(A_NR, A_NAME, A_PREIS) SELECT 12, 'Oberhemd', 39.80 UNION SELECT 22, 'Mantel', 360.00 UNION SELECT 11, 'Oberhemd', 44.20 UNION SELECT 13, 'Hose', 110.50Dies fügt Daten ein, die über eine Dummy-Select-Anweisung mit UNION zusammengestellt wurden. Beachten Sie, daß eine solche Konstruktion mit Ms-Access nicht gelingt. Dort kann man mit dem Einfügen einer Dummy-Tabelle sowie der TOP 1 - Klausel erreichen, daß eine Zeile zurückgegeben wird. Die UNION-Anweisung läßt sich jedoch nicht direkt in eine Tabelle einfügen, sie muß in einer Unterabfrage versteckt werden. Die folgende Anweisung ist möglich:
CREATE TABLE ATest(A_NR int, A_NAME varchar(50), A_PREIS money)
INSERT INTO ATest(A_Nr, A_NAME,A_PREIS) SELECT A.A_Nr, A.A_Name, A.A_Preis From ( SELECT Top 1 12 As A_NR, 'Oberhemd' AS A_NAME, 39.80 AS A_PREIS From Artikel UNION SELECT Top 1 22, 'Mantel', 360.00 From Artikel UNION SELECT Top 1 11, 'Oberhemd', 44.20 From Artikel UNION SELECT Top 1 13, 'Hose', 110.50 From Artikel Order By A_Nr) As A
INSERT INTO ARTIKEL(A_NR, A_NAME, A_PREIS) SELECT A.A_NR + 100, A.A_NAME, A.A_PREIS * 1.1 FROM ARTIKEL As ADies fügt in die Tabelle Artikel vier neue Zeilen ein, die Artikel-Nummer ist um 100, der Artikelpreis um 10% erhöht.
SELECT A.A_NR, A.A_NAME, A.A_PREIS As Gesamt INTO ArtikelAuswertung FROM ARTIKEL As A WHERE 0 = 1 INSERT INTO ArtikelAuswertung (A_NR, A_NAME, Gesamt) SELECT A.A_NR, A.A_NAME, SUM(A.A_PREIS * U.A_STUECK) FROM ARTIKEL As A INNER JOIN UMSATZ As U On A.A_NR = U.A_NR GROUP BY A.A_NR, A.A_NAMEDies ist eine typische Anwendung der INSERT-Anweisung, um Daten unabhängig von der Hauptdatenbank auswerten oder weiterverarbeiten zu können. Zunächst wird die gewünschte Zieltabelle erstellt, indem eine passende SELECT-Anweisung mit INTO in eine neue Tabelle umgelenkt und in diese mit '0 = 1' keine Daten übertragen werden. Anschließend werden die tatsächlich gewünschten Nutzdaten aggregiert und kopiert. Eine solche Trennung anstelle eines direkten SELECT ... INTO ... FROM kann hilfreich sein, falls die Tabelle auf jeden Fall erstellt werden soll, es jedoch bsp. zu Laufzeitfehlern bei der SELECT-Abfrage kommen kann, so daß diese nicht ausgeführt wird.
CREATE PROCEDURE up_ins_Artikel @A_NR int, @A_NAME nvarchar(50), @A_PREIS money As INSERT INTO ARTIKEL(A_NR, A_NAME, A_PREIS) VALUES (@A_NR, @A_NAME, @A_PREIS) Execute up_ins_Artikel 50, 'Schlapphut', 49.90Dies ist die Standard-Syntax zur Erzeugung gespeicherter Prozeduren mit Parametern. Die Prozedur nutzt die Parameterwerte, um eine Zeile einzufügen. Ms-Access hat seine eigene Syntax. Hier dürfen - bei der Verwendung über .NET - die Parameter nicht deklariert werden und sind nach Position anzusprechen. Mit ADO ist eine Syntax möglich, wie sie innerhalb DAO verwendet wird:
PARAMETERS [@a_nr] int, [@a_name] nvarchar(50), [@a_preis] money; CREATE ...