Articles

6.1. Einfügen von Daten

Wenn eine Tabelle erstellt wird, enthält sie noch keine Daten. Das erste, was zu tun ist, bevor eine Datenbank von großem Nutzen sein kann, ist das Einfügen von Daten. Daten werden konzeptionell eine Zeile nach der anderen eingefügt. Natürlich können Sie auch mehr als eine Zeile einfügen, aber es gibt keine Möglichkeit, weniger als eine Zeile einzufügen. Auch wenn Sie nur einige Spaltenwerte kennen, muss eine komplette Zeile erstellt werden.

Um eine neue Zeile zu erstellen, verwenden Sie den Befehl INSERT. Der Befehl benötigt den Tabellennamen und die Spaltenwerte. Betrachten Sie zum Beispiel die Tabelle Produkte aus Kapitel 5:

CREATE TABLE products ( product_no integer, name text, price numeric);

Ein Beispielbefehl zum Einfügen einer Zeile wäre:

INSERT INTO products VALUES (1, 'Cheese', 9.99);

Die Datenwerte werden in der Reihenfolge aufgelistet, in der die Spalten in der Tabelle erscheinen, getrennt durch Kommas. Normalerweise werden die Datenwerte Literale (Konstanten) sein, aber auch skalare Ausdrücke sind erlaubt.

Die obige Syntax hat den Nachteil, dass Sie die Reihenfolge der Spalten in der Tabelle kennen müssen. Um dies zu vermeiden, können Sie die Spalten auch explizit auflisten. Zum Beispiel haben die beiden folgenden Befehle die gleiche Wirkung wie der obige:

INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', 9.99);INSERT INTO products (name, price, product_no) VALUES ('Cheese', 9.99, 1);

Viele Anwender halten es für eine gute Praxis, immer die Spaltennamen aufzulisten.

Wenn Sie nicht für alle Spalten Werte haben, können Sie einige davon weglassen. In diesem Fall werden die Spalten mit ihren Standardwerten gefüllt. Ein Beispiel:

INSERT INTO products (product_no, name) VALUES (1, 'Cheese');INSERT INTO products VALUES (1, 'Cheese');

Das zweite Formular ist eine PostgreSQL-Erweiterung. Sie füllt die Spalten von links mit so vielen Werten, wie angegeben sind, und der Rest wird voreingestellt.

Zur Übersichtlichkeit können Sie auch explizit Standardwerte anfordern, für einzelne Spalten oder für die gesamte Zeile:

INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', DEFAULT);INSERT INTO products DEFAULT VALUES;

Sie können mehrere Zeilen in einem einzigen Befehl einfügen:

INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', 9.99), (2, 'Bread', 1.99), (3, 'Milk', 2.99);

Es ist auch möglich, das Ergebnis einer Abfrage (das keine, eine oder viele Zeilen sein kann) einzufügen:

INSERT INTO products (product_no, name, price) SELECT product_no, name, price FROM new_products WHERE release_date = 'today';

Damit steht die volle Leistung des SQL-Abfragemechanismus (Kapitel 7) zur Berechnung der einzufügenden Zeilen zur Verfügung.

Tipp: Wenn Sie viele Daten gleichzeitig einfügen, sollten Sie den COPY-Befehl verwenden. Er ist nicht so flexibel wie der INSERT-Befehl, aber effizienter. Weitere Informationen zur Verbesserung der Bulk-Ladeleistung finden Sie in Abschnitt 14.4.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.