Direct naar de hoofdinhoud
Module 8 · Les 1 van 429/57 in de cursus~10 min
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

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

Voorbeeld op onze dataset:

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');

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:

SQL
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:

SQL
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 NULL is zonder DEFAULT → fout;
  • als het een DEFAULT heeft (inclusief SERIAL voor id) → dat wordt gebruikt;
  • als het NULL accepteert → wordt het 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');

Jouw beurt

Oefening#sql.m8.l1.e1
Pogingen: 0Laden…

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.

Editor laden…
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

Oefening#sql.m8.l1.e2
Pogingen: 0Laden…

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.

Editor laden…
Toon hint

RETURNING accepteert een lijst met kolommen (of '*') precies zoals een SELECT.

Oplossing beschikbaar na 3 pogingen