Přidání více řádků

Jeden INSERT může přidat několik řádků najednou. Za VALUES napište pro každý řádek jednu závorku a oddělte je čárkami. Tohle jsou tři nové recenze od zákazníků, kteří si hry koupili:

INSERT INTO recenze (hra_id, zakaznik_id, hvezdicky, komentar)
VALUES
    (4, 4, 5, 'Zábava na celé hodiny.'),
    (14, 2, 4, NULL),
    (17, 1, 4, 'Rychlé a férové.');

Na kartě Výsledky pak uvidíte Změněné řádky: 3. Všechny řádky mají jeden společný seznam sloupců, takže každý potřebuje hodnotu pro každý sloupec: druhá recenze nemá komentář, a tak dostane NULL. Mezi řádky patří čárka, za poslední středník. Několik řádků v jednom příkazu se napíše rychleji než INSERT pro každý zvlášť a databáze je také rychleji uloží.

Vyplnit nemusíte každý sloupec. Sloupec, který v seznamu vynecháte, dostane NULL. Tady recenze nemá komentář:

INSERT INTO recenze (hra_id, zakaznik_id, hvezdicky)
VALUES (20, 2, 5);

SELECT *
FROM recenze
WHERE hra_id = 20;
hra_idzakaznik_idhvezdickykomentar
2025NULL
2044NULL

To ale jde jen u sloupců, které smějí zůstat prázdné. Většina sloupců v tabulkách obchodu hodnotu mít musí, a když některý z nich vynecháte, třeba hvezdicky, databáze řádek odmítne: NOT NULL constraint failed: recenze.hvezdicky. Víc o takových pravidlech se dozvíte brzy.

Zvláštní případ je ID. Sloupec id, který tabulka definuje jako INTEGER PRIMARY KEY (takové jsou všechny sloupce id v Pixel Shopu), se vyplní sám: vynechte ho a SQLite dá novému řádku další číslo v pořadí, tedy nejvyšší ID v tabulce plus jedna. Objednávky končí číslem 30, takže nová objednávka dostane 31:

INSERT INTO objednavky (zakaznik_id, datum, stav)
VALUES (14, '2026-01-08', 'zaplaceno');

SELECT *
FROM objednavky
WHERE id > 28;
idzakaznik_iddatumstav
2932025-12-12zaplaceno
3042025-12-22zaplaceno
31142026-01-08zaplaceno

Tak přidávají řádky skutečné aplikace: ID nechají vybrat databázi. Když ho zvolíte sami, může už být obsazené a databáze řádek odmítne (UNIQUE constraint failed: objednavky.id). V předchozím cvičení jste ID volili jen proto, abyste věděli, které řádky hledat.

Typická chyba: čárka za posledním řádkem. VALUES (4, 4, 5), (14, 2, 4),; skončí chybou near ";": syntax error. Mezi řádky patří čárka, za poslední jen středník.

Pokyny

Obchod oznámil tři nové hry, které ještě nevyšly: Frost Giants (RPG, 1399 Kč, od 16 let), Pet Hotel (Simulace, 499 Kč, od 3 let) a Sky Racers (Závodní, 899 Kč, od 7 let). Přidejte je jedním příkazem INSERT. Vynechte sloupec id, který se vyplní sám, a sloupec vydano, protože data vydání zatím nikdo nezná.

Pod něj ukažte ID, název, cenu a datum vydání všech her, které ještě nevyšly, seřazené podle ID. Nové hry dostaly ID 21 až 23 a žádné datum vydání:

idnazevcenavydano
18Robot Rebellion999NULL
19Mystery Manor649NULL
21Frost Giants1399NULL
22Pet Hotel499NULL
23Sky Racers899NULL

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

2/9