Salt la conținutul principal
Modulul 8 · Lecția 1 din 429/57 în curs~10 min
Lecții din modul (1/4)

Inserarea datelor: INSERT

Până acum ați citit date. E timpul să scriem câteva. INSERT este comanda care adaugă noi rânduri la un tabel.

Sintaxa de bază

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

Exemplu pe setul nostru de date:

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

Numirea coloanelor este practica recomandată: face interogarea robust față de viitoarele modificări ale schemei (de exemplu, o nouă coloană opțională phone nu rupe nimic) și auto-documentare.

INSERT pe mai multe rânduri

O singură instrucțiune, mai multe rânduri — mult mai rapid decât N INSERTs:

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

RETURNARE: citirea valorilor pe care tocmai le-ați introdus

O clauză caracteristică PostgreSQL: RETURNING returnează rândurile care tocmai au fost create. Extrem de util pentru preluarea id generată automat:

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

Rezultatul este un tabel cu un rând cu id (atribuit de SERIAL) și name.

Ce se întâmplă dacă lipsește o coloană

Dacă omiteți o coloană din INSERT:

  • dacă este NOT NULL fără DEFAULT → eroare;
  • dacă are un DEFAULT (inclusiv SERIAL pentru id) → care este folosit;
  • dacă acceptă NULL → devine 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');

Rândul tău

Exercițiu#sql.m8.l1.e1
Încercări: 0Se încarcă…

Introduceți în tabelul de clienți un client nou cu prenume „Marco”, nume „Bianchi”, e-mail „marco.bianchi@example.com”, oraș „Verona”, țara „Italia” și înscris pe „2025-07-15”. Denumiți explicit toate coloanele.

Se încarcă editorul...
Afișează indiciu

Ordinea valorilor în VALUES trebuie să se potrivească cu ordinea coloanelor pe care le-ați denumit.

Soluție disponibilă după 3 încercări

Exercițiu de revizuire

Exercițiu#sql.m8.l1.e2
Încercări: 0Se încarcă…

Introduceți o nouă categorie „Gaming” ca copil al „Elettronica” (id = 1). Utilizați clauza RETURNING pentru a returna id-ul și numele categoriei nou create.

Se încarcă editorul...
Afișează indiciu

RETURNING acceptă o listă de coloane (sau „*”) exact ca un SELECT.

Soluție disponibilă după 3 încercări