INSERT-Anweisung

Verwenden Sie die INSERT-Anweisung, um Datensätze in einer Datenbanktabelle zu erstellen. Sie können angeben:

  • Eine Liste von Werten, die als neuer Datensatz eingefügt werden

  • Eine SELECT-Anweisung, die als neuen Satz von Datensätzen einzufügende Daten aus einer anderen Tabelle kopiert

Das Format der INSERT-Anweisung ist:

Kopieren
INSERT INTO tabellenname [(spaltenname, ...)] VALUES (ausdr, ...)

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, müssen die Werteausdrü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. spaltenname kann auch eine Feldwiederholung, zum Beispiel lastDates[4], angeben.

ausdr ist die Liste der Ausdrücke, die Werte für die Spalten des neuen Datensatzes zur Verfügung stellt. Gewöhnlich sind die Ausdrücke konstante Werte für die Spalten (sie können aber auch Unterabfragen 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. 'ist''s').

Unterabfragen müssen in Klammern angegeben werden.

Beispiel

Fügen Sie eine Liste von Ausdrücken ein.

Kopieren
INSERT INTO ang (nachname, vorname, angnr, gehalt, einst_datum)
   VALUES ('Schmidt, 'Johann', 'E22345', 27500, DATE '05.06.2028')

Jede INSERT-Anweisung fügt der Datenbanktabelle einen Datensatz hinzu. In diesem Fall wurde der Angestellten-Datenbanktabelle ang ein Datensatz hinzugefügt. Werte werden für fünf Spalten angegeben. Den restlichen Spalten in der Tabelle wird ein leerer Wert, also null, zugeordnet.

Wichtig  

In Containerfeldern können Sie nur Text mittels INSERT einsetzen, 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 Funktion PutAs(). Wenn Sie den Dateinamen angeben, wird der Dateityp aus der Dateierweiterung abgeleitet:

Kopieren
INSERT INTO tabellenname (containername) VALUES(? AS 'dateiname.dateierweiterung')

Nicht unterstützte Dateitypen werden als Typ FILE eingefügt.

Wenn Sie die Funktion PutAs() verwenden, geben Sie den Typ an: PutAs(col, ‘typ’), wobei der Typwert ein Typ ist, der unter Abrufen des Inhalts eines Containerfelds: CAST()-Funktion und GetAs()-Funktion.

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.

Kopieren
INSERT INTO ang1 (vorname, nachname, angnr, abt, gehalt)
   SELECT vorname, nachname, angnr, 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.