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
INSERT INTO tabella (col1, col2, …)
VALUES (val1, val2, …);Beispiel zu unserem Datensatz:
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:
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:
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 NULLohne DEFAULT ist → Fehler; - wenn es einen
DEFAULT(einschließlichSERIALfür die ID) → hat, der verwendet wird; - wenn es
NULLakzeptiert → wird es zuNULL.
-- 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
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.
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
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.
Hinweis anzeigen
RETURNING akzeptiert eine Liste von Spalten (oder '*') genau wie ein SELECT.
Lösung nach 3 Versuchen verfügbar