Przejdź do głównej treści
eLearner.app
Moduł 8 · Lekcja 1 z 429/57 w kursie~10 min
Lekcje modułu (1/4)

Wstawianie danych: INSERT

Jak dotąd czytałeś dane. Czas coś napisać. KODEF0 jest polecenie dodające nowe wiersze do tabeli.

Podstawowa składnia

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

Przykład w naszym zbiorze danych:

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

Nazywanie kolumn jest zalecaną praktyką: tworzy zapytanie odporny na przyszłe zmiany schematu (np. nowa opcjonalna kolumna phone niczego nie psuje) i samodokumentowanie.

WSTAWIENIE wielowierszowe

Pojedyncza instrukcja, wiele wierszy — znacznie szybciej niż N oddzielnych INSERT:

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

POWRÓT: odczyt wartości, które właśnie wpisałeś

Klauzula charakterystyczna dla PostgreSQL: RETURNING zwraca wiersze, które właśnie powstały. Niezwykle przydatny do odzyskiwania automatycznie wygenerowanego id:

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

Dane wyjściowe to jednowierszowa tabela z id (przypisanym przez SERIAL) i KODEF2.

Co się stanie, jeśli brakuje kolumny

Jeśli pominiesz kolumnę w INSERT:

  • jeśli jest to NOT NULL bez DEFAULT → błąd;
  • jeśli posiada DEFAULT (w tym SERIAL dla identyfikatora) → który jest używany;
  • jeśli zaakceptuje NULL → staje się 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');

Twoja kolej

Ćwiczenie#sql.m8.l1.e1
Próby: 0Ładowanie...

Wstaw do tabeli klientów nowego klienta o imieniu „Marco”, nazwisku „Bianchi”, adresie e-mail „marco.bianchi@example.com”, mieście „Werona”, kraju „Italia” i podpisie_w dniu „2025-07-15”. Jawnie nazwij wszystkie kolumny.

Ładowanie edytora...
Pokaż wskazówkę

Kolejność wartości w VALUES musi odpowiadać kolejności nazwanych kolumn.

Rozwiązanie dostępne po 3 próbach

Przejrzyj ćwiczenie

Ćwiczenie#sql.m8.l1.e2
Próby: 0Ładowanie...

Wstaw nową kategorię „Gry” jako element podrzędny „Elettronica” (id = 1). Użyj klauzuli RETURNING, aby zwrócić identyfikator i nazwę nowo utworzonej kategorii.

Ładowanie edytora...
Pokaż wskazówkę

RETURNING akceptuje listę kolumn (lub „*”) dokładnie tak, jak SELECT.

Rozwiązanie dostępne po 3 próbach