Modulelessen (1/4)
Gegevens invoegen: INSERT
Tot nu toe heb je gegevens gelezen. Het is tijd om wat te schrijven. INSERT is
de opdracht die nieuwe rijen aan een tabel toevoegt.
De basissyntaxis
INSERT INTO tabella (col1, col2, …)
VALUES (val1, val2, …);Voorbeeld op onze dataset:
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');Het benoemen van de kolommen is de aanbevolen praktijk: hiermee wordt de query gemaakt
robuust tegen toekomstige schemawijzigingen (bijvoorbeeld een nieuwe optionele kolom phone).
maakt niets kapot) en zelfdocumenterend.
INVOEGSEL met meerdere rijen
Eén enkele instructie, meerdere rijen – veel sneller dan N afzonderlijke INSERTs:
INSERT INTO categories (name, parent_id) VALUES
('Gaming', 1),
('Smart Home', 1),
('Cucina vegana', 8);TERUGKEREN: het lezen van de waarden die u zojuist hebt ingevoerd
Een clausule die kenmerkend is voor PostgreSQL: RETURNING retourneert de rijen die
zijn zojuist gemaakt. Extreem handig voor het ophalen van de automatisch gegenereerde id:
INSERT INTO categories (name, parent_id)
VALUES ('Gaming', 1)
RETURNING id, name;De uitvoer is een tabel met één rij met id (toegewezen door SERIAL) en
BESCHERMD_INLINE_7.
Wat gebeurt er als een kolom ontbreekt?
Als u een kolom weglaat in de INSERT:
- als het
NOT NULLis zonder DEFAULT → fout; - als het een
DEFAULTheeft (inclusiefSERIALvoor id) → dat wordt gebruikt; - als het
NULLaccepteert → wordt hetNULL.
-- 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');Jouw beurt
Voeg in de klantentabel een nieuwe klant in met voornaam 'Marco', achternaam 'Bianchi', e-mailadres 'marco.bianchi@example.com', stad 'Verona', land 'Italia' en ondertekend_op_op '15-07-2025'. Geef alle kolommen expliciet een naam.
Toon hint
De volgorde van de waarden in VALUES moet overeenkomen met de volgorde van de kolommen die u hebt genoemd.
Oplossing beschikbaar na 3 pogingen
Oefening beoordelen
Voeg een nieuwe 'Gaming'-categorie in als onderliggend element van 'Elettronica' (id = 1). Gebruik de RETURNING-clausule om de id en naam van de nieuw gemaakte categorie te retourneren.
Toon hint
RETURNING accepteert een lijst met kolommen (of '*') precies zoals een SELECT.
Oplossing beschikbaar na 3 pogingen