2. díl - SQLite - Vytvoření databáze a tabulky

SQLite SQLite - Vytvoření databáze a tabulky

V minulém dílu seriálu tutoriálů o SQLite databázi jsme si řekli něco o relačních databázích a připravili jsme si prostředí. Dnes 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, kde 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í. Snad vám je jasné, 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 vyskočí na nás 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 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ž nakousli, 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 Field, v tabulce níže se nám objeví řádek, jehož první údaj — jméno — přepíšeme na uzivatele_id, datový typ necháme na INTEGER - celém čísle a dále zaškrtneme PK a AI. PK značí PRIMARY KEY, což znamená, že tento sloupec slouží ke identifikaci řádku v tabulce a jeho hodnota musí být unikátní. AI je zkratka AUTOINCREMENT, tedy, že se bude hodnota uzivatele_id automaticky navyšovat a uživatelé se budou postupně číslovat. Id se mi osvědčilo pojmenovávat s prefixem tabulky, ale není to nutné.

Teď přidáme další sloupce, klikneme znovu na Add Field a tentokrát zadáme jmeno. V 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. Celé to má vypadat takto:

Vytvoření tabulky

Po kliknutí na OK uvidíme na obou panelech strukturu naší databáze, kde by se měla nacházet pouze naše tabulka uzivatele a vedle ní kód SQL pro její vytvoření, vygenerovaný DB Browserem. Pokud chceme v DB Browseru uložit jakékoliv úpravy, aby se projevily v databázi, musíme nahoře kliknout na Write Changes, což uděláme právě teď.

Pokud bychom chtěli vytvořit databázi bez použití DB Browseru for SQLite, tak stačí spustit v konzoli/terminálu následující příkaz, který vás rovněž přenese do interaktivního SQLite shellu.

sqlite3 databaze_pro_web.db

Jelikož se databáze ukládají jako normální soubory, kdekoliv, kde si zvolíte, jejich odstranění se provádíte 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 takovýto kód, který si rozebereme.

CREATE TABLE "uzivatele" (
        "uzivatele_id" INTEGER PRIMARY KEY AUTOINCREMENT,
        "jmeno" TEXT,
        "prijmeni" TEXT,
        "datum_narozeni" TEXT,
        "pocet_clanku" INTEGER
);

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íší 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íší 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

Prvně odstraníme tabulku uzivatele kliknutím na Delete Table. Poté přejdeme na panel Execute SQL a 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 měla zobrazit hláška, že dotaz proběhl úspěšně, to si můžeme zkontrolovat i v panelu Database Structure, kde uvidíme úplně to samé, jako po vytvoření tabulky naklikáním.

Spuštění SQL dotazů

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.

Zadávání SQL dotazů v DB Browseru má tu výhodu, že jednak vám klíčová slova napovídá, ale také, že můžete psát více SQL dotazů pod sebou a spouštět je jednotlivě pomocí symbolu dvojité šipky, nebo klávesovou zkratkou Ctrl+E.

Příště si databázi naplníme nějakými daty :)


 

  Aktivity (1)

Článek pro vás napsal Michal Martinek
Avatar

Jak se ti líbí článek?
Celkem (2 hlasů) :
55555


 



 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!