INSERT-Anweisung
Verwenden Sie die INSERT-Anweisung, um Datensätze in einer Datenbanktabelle zu erstellen. Sie können angeben:
-
Eine oder mehrere Listen mit Werten, die als neue Datensätze eingefügt werden sollen
-
Eine
SELECT-Anweisung, die Daten aus einer anderen Tabelle kopiert, die als neuer Satz von Datensätzen einfügt werden
Die Formate der INSERT-Anweisung sind:
INSERT INTO tabellenname [(spaltenname, ...)] VALUES (ausdr, ...), ...]
INSERT INTO tabellenname [(spaltenname, ...)] SELECT spaltenname, ... FROM tabellenname [WHERE ausdr]
Mit VALUES
spaltenname ist eine optionale Liste von Spaltennamen, die den Namen und die Reihenfolge der Spalten angibt, deren Werte in der VALUES-Klausel angegeben sind. Wenn Sie spaltenname nicht angeben, muss die Liste der Ausdrücke (ausdr) Werte für alle in der Tabelle definierten Spalten angeben und in der gleichen Reihenfolge sein wie die für die Tabelle definierten Spalten.
Die Liste der Ausdrücke (ausdr) gibt die Werte für die Spalten eines neuen Datensatzes an. Um mehrere Datensätze hinzuzufügen, geben Sie für jeden Datensatz eine Liste von Ausdrücken in Klammern an, die durch Kommas getrennt sind. Normalerweise besteht eine Liste von Ausdrücken aus einem konstanten Wert für jede Spalte (die Liste kann jedoch auch eine Unterabfrage sein). Sie müssen Zeichenfolgenwerte in einfachen Anführungszeichen (') angeben. Um ein einfaches Anführungszeichen in einer Zeichenfolge, die durch einfache Anführungszeichen eingeschlossen ist, aufzunehmen, verwenden Sie zwei einfache Anführungszeichen (z. B. 'geht''s').
Unterabfragen müssen in Klammern angegeben werden.
Beispiel
Fügen Sie zwei Listen mit Ausdrücken ein.
INSERT INTO ang (nachname, vorname, ang_id, gehalt, einst_datum)
VALUES ('Smith', 'John', 'E22345', 27500, DATE '2028-06-05'),
('Marks', 'Alea', 'E24682', 28500, DATE '2029-09-30')
Diese INSERT-Anweisung fügt für jede angegebene Werteliste einen Datensatz zur Datenbanktabelle hinzu. In diesem Fall wurden zwei Datensätze zur Angestellten-Datenbanktabelle ang hinzugefügt. Werte werden für fünf Spalten angegeben. Den restlichen Spalten in der Tabelle wird ein leerer Wert, also null, zugeordnet.
Mit SELECT
Die SELECT-Anweisung ist eine Abfrage, die Werte für jeden in der Spaltenname-Liste angegebenen Wert spaltenname zurückgibt. Die Verwendung einer SELECT-Anweisung anstelle einer Liste von Wertausdrücken ermöglicht Ihnen, eine Menge von Zeilen aus einer Tabelle auszuwählen und sie in eine andere Tabelle mit einer einzelnen INSERT-Anweisung einzufügen.
Beispiel
Fügen Sie mit einer SELECT-Anweisung ein.
INSERT INTO ang1 (vorname, nachname, ang_id, abt, gehalt)
SELECT vorname, nachname, ang_id, abt, gehalt FROM ang
WHERE abt = 'D050'
In dieser Art von INSERT-Anweisung muss die Anzahl der einzufügenden Spalten der Anzahl der Spalten in der SELECT-Anweisung entsprechen. Die Liste der einzufügenden Spalten muss den Spalten in der SELECT-Anweisung so entsprechen, wie sie einer Liste von Wertausdrücken in einer anderen Art von INSERT-Anweisung entsprechen würde. Zum Beispiel entspricht die erste eingefügte Spalte der ersten ausgewählten Spalte, die zweite eingefügte der zweiten usw.
Größe und Datentyp dieser entsprechenden Spalten müssen kompatibel sein. Jede Spalte in der SELECT-Liste sollte über einen Datentyp verfügen, den der ODBC- bzw. JDBC-Treiber bei einem regulären INSERT/UPDATE der entsprechenden Spalte in der INSERT-Liste akzeptiert. Werte werden abgeschnitten, wenn die Größe des Werts in der SELECT-Listenspalte größer als die Größe der entsprechenden INSERT-Listenspalte ist.
Die SELECT-Anweisung wird vor allen eingefügten Werten ausgewertet.
Hinweise
-
In Containerfeldern können Sie nur Text mittels
INSERTeinsetzen, wenn Sie keine parametrisierte Anweisung vorbereiten und die Daten aus Ihrer Anwendung streamen. Um Binärdaten zu verwenden, können Sie einfach den Dateinamen zuordnen, indem Sie ihn in einfachen Anführungszeichen angeben, oder Sie verwenden die FunktionPutAs(). Wenn Sie den Dateinamen angeben, wird der Dateityp aus der Dateierweiterung abgeleitet:KopierenINSERT INTO tabellenname (containername) VALUES (? AS 'dateiname.dateierweiterung')Nicht unterstützte Dateitypen werden als Typ FILE eingefügt.
Bei Verwendung der Funktion
PutAs()geben Sie den Typ an:PutAs(col, 'typ'), wobei der Typwert ein unterstützter Dateityp ist, wie unter Abrufen des Inhalts eines Containerfelds: CAST()-Funktion und GetAs()-Funktion beschrieben. -
spaltennamekann auch eine Feldwiederholung angeben, beispielsweiselastDates[4].