Grundkurs SQL

6.2.1  Dateneingabe in eine Tabelle – Einzeleinträge

Manchmal ist es erwünscht, nicht eine komplette Zeile in eine Tabelle einzufügen, sondern nur bestimmte Spalten. Dies erfordert eine Spezifikation nur dieser Spaltennamen direkt nach der Tabellenidentifizierung.

INSERT INTO tabellenName(Spalte_1, Spalte_3, ...)
VALUES (Wert1, Wert2, ...);

Dabei sind die Spalten, die man einfügen will, beliebig wählbar. Eine Ausnahme bildet die Primärschlüssel-Spalte. Diese muss für jede Zeile gefüllt werden, denn die Primärschlüsseldefinition verlangt, dass dieses Feld nie leer sein darf!
Auch Spalten deren Werte nicht leer bleiben dürfen (als NOT NULL definiert), müssen mit Werten gefüllt werden, wobei dies aber auch mit Standardwerten (mit DEFAULT definiert) erfolgen kann.

Ein einfaches Beispiel für unsere Datenbank wäre ein Eintrag, bei dem nur der Name eines neuen Mitarbeiters erfasst wird. Wie Sie sehen, können auch die Spalten in ihrer Reihenfolge vertauscht werden. Sie müssen dann natürlich darauf achten, dass auch die Reihenfolge der Werte in der Wertliste entsprechend geändert wird.

INSERT INTO tbl_mitarbeiter(personal_ID, vorname, name)
VALUES ('49', 'Peter', 'Ebert')

Alternativ zum VALUES-Statement können die einzufügenden Elemente auch dem Ergebnis einer SELECT-Anweisung entstammen, wenn es zum Beispiel um die Übertragung von Daten geht.

Dabei kann auf die INSERT INTO-Anweisung jede beliebige SELECT-Anweisung folgen. Vorraussetzung ist natürlich, dass es gemeinsame Spalten gibt, so dass überhaupt eine Übertragung stattfinden kann.

INSERT INTO tabellenName(Spalte_1, Spalte_3, ...)
SELECT Spalte_1, Spalte_3, ...
...

Beachten Sie, dass die Spaltenliste nach INSERT INTO und die Wertliste im VALUES-Statement bzw. die Feldliste im SELECT in Anzahl, Reihenfolge und Typ übereinstimmen müssen! Die Übereinstimmung der Namen der Felder ist dabei jedoch nicht zwingend notwendig.