Direkt zum Hauptinhalt springen
eLearner.app
Modul 8 · Lektion 1 von 429/57 im Kurs~10 min
Lektionen des Moduls (1/4)

Daten einfügen: INSERT

Bisher haben Sie Daten gelesen. Es ist Zeit, etwas zu schreiben. INSERT ist der Befehl, der einer Tabelle neue Zeilen hinzufügt.

Die grundlegende Syntax

SQL
INSERT INTO tabella (col1, col2, …)
VALUES (val1, val2, …);

Beispiel zu unserem Datensatz:

SQL
INSERT INTO customers (first_name, last_name, email, city, country, signed_up_on)
VALUES ('Marco', 'Bianchi', 'marco.bianchi@example.com', 'Verona', 'Italia', '2025-07-15');

Die Benennung der Spalten ist die empfohlene Vorgehensweise: Dadurch wird die Abfrage erstellt Robust gegen zukünftige Schemaänderungen (z. B. eine neue optionale phone-Spalte). geht nichts kaputt) und selbstdokumentierend.

Mehrzeiliges INSERT

Eine einzelne Anweisung, mehrere Zeilen – viel schneller als N separate INSERTs:

SQL
INSERT INTO categories (name, parent_id) VALUES
  ('Gaming',         1),
  ('Smart Home',     1),
  ('Cucina vegana',  8);

RETURNING: Lesen der gerade eingegebenen Werte

Eine für PostgreSQL charakteristische Klausel: RETURNING gibt die Zeilen zurück, die wurden gerade erstellt. Äußerst praktisch zum Abrufen des automatisch generierten id:

SQL
INSERT INTO categories (name, parent_id)
VALUES ('Gaming', 1)
RETURNING id, name;

Die Ausgabe ist eine einzeilige Tabelle mit id (zugewiesen durch SERIAL) und name.

Was passiert, wenn eine Spalte fehlt?

Wenn Sie eine Spalte im INSERT weglassen:

  • wenn es NOT NULL ohne DEFAULT ist → Fehler;
  • wenn es einen DEFAULT (einschließlich SERIAL für die ID) → hat, der verwendet wird;
  • wenn es NULL akzeptiert → wird es zu NULL.
SQL
-- Va bene: id è SERIAL (auto), country ha NOT NULL ma forniamo tutti i campi
INSERT INTO customers (first_name, last_name, email, city, country, signed_up_on)
VALUES ('Olivia', 'Marini', 'olivia.marini@example.com', 'Bari', 'Italia', '2025-07-20');

-- Errore: first_name è NOT NULL e non è fornito
INSERT INTO customers (last_name, email, city, country, signed_up_on)
VALUES ('Marini', 'olivia.marini@example.com', 'Bari', 'Italia', '2025-07-20');

Du bist dran

Übung#sql.m8.l1.e1
Versuche: 0Wird geladen…

Fügen Sie in die Kundentabelle einen neuen Kunden mit Vorname „Marco“, Nachname „Bianchi“, E-Mail „marco.bianchi@example.com“, Stadt „Verona“, Land „Italia“ und Sign_up_on „2025-07-15“ ein. Benennen Sie alle Spalten explizit.

Editor wird geladen…
Hinweis anzeigen

Die Reihenfolge der Werte in VALUES muss mit der Reihenfolge der von Ihnen genannten Spalten übereinstimmen.

Lösung nach 3 Versuchen verfügbar

Wiederholungsübung

Übung#sql.m8.l1.e2
Versuche: 0Wird geladen…

Fügen Sie eine neue Kategorie „Gaming“ als untergeordnetes Element von „Elettronica“ ein (id = 1). Verwenden Sie die RETURNING-Klausel, um die ID und den Namen der neu erstellten Kategorie zurückzugeben.

Editor wird geladen…
Hinweis anzeigen

RETURNING akzeptiert eine Liste von Spalten (oder '*') genau wie ein SELECT.

Lösung nach 3 Versuchen verfügbar