SQL: Datensätze einfügen mit INSERT INTO

Der SQL-Befehl INSERT ermöglicht es ein oder mehrere Datensätze in eine bestehende Tabelle einzufügen.

Einen Datensatz einfügen:

Die allgemeine SQL-Syntax lautet:

INSERT INTO table (column_name1, column_name2, …) VALUES (value1, value2, …)

Zunächst muss der Aufbau der Tabelle bekannt sein, in die der Datensatz zurückgeschrieben werden soll. Ich möchte zum Beispiel einen Datensatz in die Tabelle „Actor“ unserer Beispieldatenbank „Sakila“ einfügen. Die Tabelle besteht aus 4 Spalten:

Die Spalte “actor_id“ ist eine AUTO_INCREMENT Spalte und darf nicht mit im INSERT Befehl aufgeführt werden. Diese Spalte wird von der Datenbank selbst befüllt. Die Spalte „last_update“ erwartet einen Datums- bzw. Zeitwert und kann z.B. mit der SQL-Funktion „Now()“ befüllt werden. Da die Spalte aber standardmäßig automatisch mit „Current_Timestamp“ befüllt wird, können wir auch diese Spalte vernachlässigen. Somit muss nur der Vor- und Nachname des neuen Schauspielers hinzugefügt werden. Beide Spalten müssen gefüllt werden, da keine „NULL“ in diesen Spalten erlaubt ist:

INSERT INTO actor (first_name, last_name) VALUES (‚Max‘, ‚Meier‘);

Hiermit haben wir den neuen Datensatz „Max Meier“ in der Tabelle „actor“ kreiert:

Beachte: Der neue Datensatz trägt die actor_id „205“, da ich vorher schon einige Datensätze angelegt und wieder gelöscht habe. Da die ID per Auto_increment erstellt wird und jede ID nur einmal vergeben wird, um die Identifikation eines Datensatzes zu gewährleisten, kann ein neuer Datensatz niemals auf einer gelöschten ID zurückgeschrieben werden.

Mehrere Datensätze einfügen:

Mit dem Befehl INSERT INTO können auch mehrere Datensätze geladen werden. Hierbei müssen die einzelnen Wertelisten durch Komma getrennt aufgelistet werden:

INSERT INTO table (column_name1, column_name2, …) VALUES (value1, value2, …), (value1, value2, …), (value1, value2, …)

Fügen wir zum Beispiel noch 3 weitere Schauspieler der Tabelle „actor“ hinzu:

INSERT INTO actor (first_name, last_name) VALUES

(‚Lisa‘, ‚Meier‘),

(‚Hans‘, ‚Schmidt‘),

(‚Tina‘, ‚Schmidt‘)

Spalten die NULL erlauben müssen nicht gefüllt werden:

Am Beispiel der Tabelle „Film“ kann dargestellt werden, dass im INSERT-Befehl nicht alle Spalten aufgeführt werden müssen. Die gelb markierten Spalten lassen eine „NULL“, d.h. einen leeren Datensatz zu und müssen somit nicht zwingend im INSERT-Befehl angegeben werden:

Fügen wir zum Beispiel den Film „Dateneule“ in die Tabelle „film“ ein:

INSERT INTO film (title, language_id, rental_rate, rental_duration, replacement_cost) VALUES (‚Dateneule‘, 6, 1.99, 7, 15.99)

Die „film_id“ und die Spalte „last_update“ werden von der Datenbank automatisch befüllt. Alle anderen, nicht aufgeführten Spalten werden mit einer „NULL“ dargestellt:

Möchte man mehrere Datensätze zusammen laden, können natürlich nur Datensätze mit gleicher Spaltenanzahl zusammen in einem INSERT-Befehl geladen werden.

Kurzbefehl:

Man kann den INSERT-Befehl auch verkürzt schreiben und nur die Werte des neuen Datensatzes angeben:

INSERT INTO table VALUES (value1, value2, …)

Allerdings müssen alle Spalten der Tabelle aufgeführt und die richtige Reihenfolge berücksichtigt werden. Das kann schneller zu Fehlern führen, aber auch zur besseren Lesbarkeit des Codes bietet es sich an mit dem kompletten INSERT-Befehl zu arbeiten.

(Visited 35.048 times, 1 visits today)

Schreibe einen Kommentar

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