Vytvoření tabulky
Dosud jste pracovali s tabulkami, které už existovaly. V této lekci budete vytvářet vlastní tabulky a mimochodem uvidíte, jak vznikly tabulky obchodu Pixel Shop. Novou tabulku vytvoří příkaz CREATE TABLE (vytvoř tabulku), za kterým následuje název tabulky a v závorkách její sloupce:
CREATE TABLE platformy (
nazev TEXT,
vyrobce TEXT,
rok INTEGER
) STRICT;Každý sloupec má název a typ, který říká, jaké hodnoty v něm budou: TEXT pro text, INTEGER pro celá čísla. S dalšími typy se seznámíte v příštím cvičení. Sloupce se oddělují čárkami a za uzavírací závorkou následuje slovo STRICT a středník. Psát každý sloupec na samostatný řádek není povinné, ale tabulka se pak dobře čte.
Názvy tabulek a sloupců se obvykle píšou malými písmeny, bez háčků a čárek a s podtržítkem mezi slovy, jako vek_od nebo objednavka_id. Tabulka většinou dostane název v množném čísle, protože obsahuje mnoho řádků: hry, zakaznici.
CREATE TABLE žádné řádky nehledá, a tak neukáže žádný výsledek. Nová tabulka je prázdná; naplníte ji příkazem INSERT, který znáte z minulé lekce, a podíváte se do ní pomocí SELECT:
INSERT INTO platformy (nazev, vyrobce, rok)
VALUES ('PlayStation 5', 'Sony', 2020),
('Switch', 'Nintendo', 2017),
('Xbox Series X', 'Microsoft', 2020);
SELECT * FROM platformy;| nazev | vyrobce | rok |
|---|---|---|
| PlayStation 5 | Sony | 2020 |
| Switch | Nintendo | 2017 |
| Xbox Series X | Microsoft | 2020 |
Toto cvičení začíná s prázdnou databází, takže karta Tabulky nemá co ukázat. Vaši tabulku by ale neukázala ani tak: ukazuje jen tabulky, se kterými cvičení začíná. Když chcete vidět, co ve vaší tabulce je, napište na ni dotaz. A protože každé spuštění začíná s novou databází, váš soubor tabulku pokaždé vytvoří znovu. Ve skutečné databázi se tabulka vytvoří jednou a pak už zůstane; kdybyste stejný CREATE TABLE spustili podruhé, skončil by chybou table platformy already exists (tabulka už existuje).
K čemu je STRICT (přísný)? Bez něj SQLite pustí do kteréhokoli sloupce jakoukoli hodnotu, třeba i text do sloupce celých čísel. V tom je SQLite výjimkou: jiné databáze, jako PostgreSQL nebo MySQL, typy kontrolují vždycky. STRICT zapne kontrolu i v SQLite, takže hodnotu špatného typu databáze odmítne:
INSERT INTO platformy (nazev, vyrobce, rok)
VALUES ('Steam Deck', 'Valve', 'v roce 2022');Error on line 1: cannot store TEXT value in INTEGER column platformy.rokVšechny tabulky obchodu Pixel Shop jsou STRICT a stejně tak bude každá tabulka, kterou v kurzu vytvoříte. Chybu v datech snadno opravíte, když ji databáze zastaví hned, ale mnohem hůř, když ji někdo objeví po několika měsících.
Typická chyba: čárka za posledním sloupcem. Čárky patří jen mezi sloupce, takže tohle skončí chybou:
CREATE TABLE platformy (
nazev TEXT,
vyrobce TEXT,
rok INTEGER,
) STRICT;Error on line 1: near ")": syntax errorJak psát:
Pokyny
Obchod si chce vést seznam svých zaměstnanců. Vytvořte tabulku zamestnanci se třemi sloupci: jmeno a pozice, oba textové, a plat, celé číslo. Nezapomeňte na STRICT. Po spuštění zatím ve Výsledcích nic neuvidíte: soubor nemá žádný dotaz.
Pod ni vložte tyto tři zaměstnance (jméno, pozice, plat):
'Lucie Malá', 'vedoucí', 55000'Petr Černý', 'podpora', 38000'Jana Bílá', 'marketing', 42000
Pak ukažte celou tabulku seřazenou podle platu od nejvyššího:
| jmeno | pozice | plat |
|---|---|---|
| Lucie Malá | vedoucí | 55000 |
| Jana Bílá | marketing | 42000 |
| Petr Černý | podpora | 38000 |
Začněte programovat zdarma
1/10