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ă
INSERT INTO tabella (col1, col2, …)
VALUES (val1, val2, …);Exemplu pe setul nostru de date:
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:
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:
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 NULLfără DEFAULT → eroare; - dacă are un
DEFAULT(inclusivSERIALpentru id) → care este folosit; - dacă acceptă
NULL→ devineNULL.
-- 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
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.
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
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.
Afișează indiciu
RETURNING acceptă o listă de coloane (sau „*”) exact ca un SELECT.
Soluție disponibilă după 3 încercări