Lekce 2 - SQLite - Vytvoření databáze a tabulky
V minulé lekci, Úvod do SQLite a příprava prostředí, jsme si řekli něco o relačních databázích a připravili jsme si prostředí.
V dnešním SQLite tutoriálu si vytvoříme databázi a do ní nějakou tabulku.
Vytvořme si databázi, obvykle nám pro jeden projekt (web) postačí jedna databáze.
Klikněme v DB Browser for SQLite na New Database. Vybereme složku,
kam chceme databázi uložit a vyplníme název databáze s příponou
.db
(např. databaze_pro_web.db
). V databázích je
zvykem pojmenovávat položky bez diakritiky, malými písmeny a s
podtržítkovou notací. Je zřejmé, proč není diakritika dobrý nápad, za
velkými a malými písmeny je Linux, který je rozlišuje a většina serverů
právě na Linuxu běží.
Potvrdíme a zobrazí se okno pro vytvoření první tabulky, vzpomeneme si
na příklad tabulky uživatelů, co jsme si ukázali v minulém dílu. První
buňka s nadpisem Table po nás chce jméno tabulky, zadáme dle
pravidel uzivatele
. Tabulka měla sloupce jméno, příjmení,
datum narození a počet článků. Jak jsme již zmiňovali, každá tabulka by
měla mít sloupec, jehož hodnota je pro každou položku unikátní. Tímto
sloupcem začneme a klikneme na tlačítko Add, v tabulce níže se
nám objeví řádek, jehož první údaj — jméno — přepíšeme na
uzivatele_id
, datový typ necháme předvyplněný
INTEGER
, tj. celé číslo a dále zaškrtneme PK a
AI. PK značí PRIMARY KEY, což znamená, že tento sloupec
slouží k identifikaci řádku v tabulce a jeho hodnota musí být unikátní.
AI je zkratka AUTOINCREMENT, hodnota uzivatele_id
se tedy
bude automaticky navyšovat a uživatelé se budou postupně číslovat.
Id
je dobré pojmenovávat s prefixem tabulky, ale není to
nutné.
Teď přidáme další sloupce, klikneme znovu na Add a tentokrát
zadáme jmeno
. Ve druhém sloupci nastavíme hodnotu
TEXT
. Toto provedeme obdobně i pro sloupce prijmeni
a
datum_narozeni
. Poslednímu sloupci se jménem
pocet_clanku
ponecháme datový typ INTEGER
.
Všimneme si, že níže se nám vygeneroval kód v jazyce SQL. Výsledek v DB Browseru vypadá takto:

Na obou panelech vidíme strukturu naší tabulky uzivatele
a
pod ní kód SQL pro její vytvoření, vygenerovaný DB Browserem. Vše
potvrdíme kliknutím na tlačítko OK, čímž okno zavřeme.
Pokud chceme v DB Browseru uložit jakékoliv úpravy, aby se projevily v databázi, musíme v horní liště kliknout na tlačítko Write Changes, což uděláme právě teď.
Jelikož se databáze ukládají jako normální soubory, kdekoliv, kde si zvolíte, jejich odstranění se provede jako prosté smazání tohoto souboru.
Jazyk SQL
SQL označuje Structured Query Language, tedy strukturovaný dotazovací jazyk. SQL je tzv. jazyk deklarativní. Zatímco u imperativních jazyků počítači vlastně říkáme krok po kroku co má udělat, u jazyků deklarativních pouze říkáme co má být výsledkem a již nás nezajímá, jak tohoto výsledku počítač dosáhne. Díky tomu jsou databázové dotazy zjednodušeny na příkaz typu "Vrať mi 10 uživatelů s nejvyšším hodnocením". Databáze takový dotaz pochopí, rozloží si ho na nějaké své instrukce a tak jej zpracuje. Nám poté opravdu vrátí výsledek, aniž bychom tušili, jak k němu došla. Pokud vám příkaz přišel jako nadsázka, tak tomu tak není a příkazy opravdu takto vypadají. Jen jsou anglicky.
SQL se původně jmenovalo SEQUEL (Structured English Query Language) a vzniklo v laboratořích společnosti IBM s cílem vytvořit jazyk, kterým by se dalo komunikovat s databází jednoduchou angličtinou. SQL (relační) databáze se poté rozšiřovaly a ujaly. Dnes se prakticky nic jiného nepoužívá a i když má SQL v objektovém programování značné nevýhody, firmám se nechce přecházet na nic jiného (i když existují alternativní řešení). Ale to jsme odbočili.
Naklikáním tabulky nám DB Browser vytvořil tento kód, který si rozebereme:
CREATE TABLE "uzivatele" ( "uzivatele_id" INTEGER, "jmeno" TEXT, "prijmeni" TEXT, "datum_narozeni" TEXT, "pocet_clanku" INTEGER, PRIMARY KEY("uzivatele_id" AUTOINCREMENT) );
Příkaz začíná frází CREATE TABLE
, což jak asi víte,
označuje, že chceme vytvořit tabulku. Poté následuje jméno tabulky, které
je v SQLite obvyklé dávat do dvojitých uvozovek. Do závorky se píšou
názvy jednotlivých sloupců s jejich datovými typy a případně i dalšími
atributy, jako např. zde PRIMARY KEY
a AUTOINCREMENT
,
a oddělují se čárkou. Každý příkaz v SQL zakončujeme středníkem,
který ani tady nechybí.
V SQL se většinou píšou příkazy velkými písmeny, to proto, že je to lépe odliší od zbytku dotazu nebo od kódu naší aplikace (např. v PHP). Názvy tabulek, sloupců a další identifikátory jsou naopak malými písmeny a podtržítkovou notací. Je dobrým zvykem je vkládat mezi dvojité uvozovky (případně další podporované znaky, jako zpětné uvozovky a podobně), ale nejsou povinné a příkazy proběhnou bez problémů i bez nich.
Spuštění SQL dotazu
Nejprve odstraníme tabulku uzivatele
kliknutím na Delete
Table. Poté přejdeme na panel Execute SQL a do textového pole
nahoře napíšeme SQL dotaz pro vytvoření tabulky, který jsme si před
chvilkou vysvětlili. Po kliknutí na šipku by se nám níže zobrazí
hláška, že dotaz proběhl úspěšně. Výsledek si můžeme zkontrolovat i v
panelu Database Structure, kde uvidíme úplně to samé, jako po
vytvoření tabulky naklikáním:

Kdybychom chtěli odstranit tabulku uživatelů pomocí SQL dotazu, tak spustíme následující příkaz:
DROP TABLE "uzivatele";
Tento příkaz by se dal přeložit jako vyhoď tabulku
uzivatele
, více asi není třeba dodávat.
V příští lekci, SQLite - Vkládání a mazání dat v tabulce, si naplníme databázi nějakými daty