Vytvorenie tabuľky
Pri tvorbe tabuliek v tabuľkovom editore (excel) je to celkom jednoduché, defaultne máme nekonečne veľa riadkov a stĺpcov, do ktorých môžeme hocičo vkladať a meniť, kedy sa nám zachce. Pri navrhovaní štruktúry databázy v počítači je to troška zložitejšie. Vo väčšine (v praxi) sú na to špeciálne osobitné pracovné pozície (databázový analytik), ktoré pred začatím práce s databázou a celkovo s projektom navrhnú ten správny a optimálny databázový model, ktorý následne programátori aplikujú a ďalej dodržiavajú. Modelom (návrhom) rozumejme presný počet tabuliek a konkrétne presne definované stĺpce s popisom, čo má ktorá tabuľka obsahovať, čo môžu konkrétne stĺpce (bunky s hodnotami) obsahovať a vyjadrovať a čo je s čím prepojené, ktorá tabuľka s ktorou a ktorý stĺpec s ktorým.
Prvotný návrh databázy je veľmi dôležitá vec, pretože to, ako sa navrhne databáza, sa neskôr ukáže za chodu. Ak už je databáza navrhnutá a obsahuje obrovské množstvo dát (milióny riadkov), je potom ťažké ju zmeniť na inú štruktúru, ktorá by sa zdala byť efektívnejšia. Samozrejme, je to možné, ale je dobré sa tomu čo najviac vyvarovať. Okolo správneho návrhu databázy je pre nás ešte priskoro (a zbytočne) polemizovať, chceli sme len poukázať na to, že v tomto prípade musíme dopredu aspoň trocha vedieť, čo chceme evidovať a čo všetko to má obsahovať.
Pri zadávaní príkazu na vytvorenie tabuľky musíme totižto vymenovať všetky stĺpce, ktoré chceme, aby obsahovala. Docielime to pomocou zadefinovaním ich názvov, ale čo je najdôležitejšie, určením ich dátového typu (či v danom stĺpci bude uložené číslo, text, slovo, dátum a pod.) s jeho maximálnou veľkosťou. Nebojte, samozrejme sa to dá všetko následne meniť a za chodu editovať a postupne pridávať a odoberať stĺpce, ako je potrebné. Najlepšie je však, aby to bolo správne navrhnuté už na začiatku. Pretože ak už máte nejakú tabuľku s povedzme piatimi stĺpcami a je v nej už uložených povedzme 100 riadkov, tak po pridaní nového stĺpca, budú hodnoty v tomto stĺpci nulové (prázdne), pretože v čase vkladania tých 100 riadkov to ešte neexistovalo. Takisto pri rušení stĺpca (mazaní) sa zase údaje stratia a podobne...
Pri vytváraní tabuľky je najdôležitejšie určiť typ stĺpca. V jazyku SQL existuje veľký počet rôznych dátových typov, ktoré majú presne určené využitie. Typov je veľa preto, aby sa zrýchlila práca s databázami (čítanie, vkladanie, filtrovanie...) a aby sa minimalizovala ich veľkosť. Okrem určenia dátového typu je v istých prípadoch možné aj určovať maximálnu veľkosť daného typu. Napríklad v prípade textového typu (znaky) môžeme určiť, koľko maximálne znakov môže byť uložených v danom stĺpci. Nejdeme si to teraz zbytočne komplikovať a nejdeme si prechádzať množstvo typov aj s vysvetlením ich veľkosti. Postupne budeme našu tabuľku obohacovať o stĺpce rôznych typov a za behu si budeme vysvetľovať aj dátové typy a ich vlastnosti.
Pred samotným vytvorením tabuľky je dôležité ešte spomenúť jednu vec. Každá tabuľka obsahuje množstvo dát (riadkov). Aby bol každý riadok charakteristikcký, resp. aby bolo k nemu jednoduché pristupovať pomocou unikátneho (jedinečného) identifikátora, zvykne sa v každej tabuľke umiestniť stĺpec, v ktorom je uložené poradové číslo alebo skôr identifikátor (id) daného riadka. Toto číslo potom presne špecifikuje daný riadok, takže pomocou tohto údaju je možné na daný riadok odkazovať, prepájať ho s riadkami v inej tabuľke a podobne.
Poďme teda na to, ideme si vytvoriť našu prvú tabuľku pomocou jazyka SQL. Najprv si navrhneme štruktúru tabuľky, ktorá bude povedzme uchovávať informácie o používateľoch. Chceme, aby mala nasledovné stĺpce : id (unikátny identifikátor), meno a priezvisko. Možno ste si povedali, prečo nemôže byť meno spolu s priezviskom. Je lepšie mať to oddelene, pretože sú to dva rozdielne a dôležité údaje, ku ktorým bude možno nutné pristupovať osobitne. Napríklad zoradiť používateľov len podľa mena alebo priezviska a podobne.
Tabuľka sa vytvára pomocou príkazu CREATE TABLE (vytvoriť tabuľku), za ktorým nasleduje meno tabuľke (podobne ako pri databáze), za ktorým nasledujú okrúhle zátvorky so zoznamom stĺpcov. V zátvorke sa definujú jednotlivé stĺpce oddelenné čiarkou, kde sa zadáva najprv meno stĺpca, názov dátového typu a v zátvorke, ak je to nutné, veľkosť dátového typu (napríklad počet znakov). Prvý stĺpec má byť na ukladanie poradového čísla – identifikátora. Povieme si, že tento identifikátor bude pozostávať iba z celého čísla, čiže 0,1,2 a tak ďalej (nie desatinné ako 5,5 alebo 6,8). Môžeme si kľudne zvoliť podľa našich požiadaviek aj textový identifikátor, napríklad user_1,user_2 a podobne, v tom prípade by sme sa bavili o textových (znakových) typoch.
Nebudeme si to ale komplikovať, máme teda na výber niekoľko číselných typov, ktoré sa medzi sebou prevažne odlišujú od veľkosti, ktoré môžu poňať, čiže ako veľmi veľké číslo do nich môžeme uložiť. Ak by sme vedeli, že počet našich používateľov bude z nejakého dôvodu napríklad obmedzený počtom 100, stačil by nám na to typ TINYINT(tiny integer – maličký integer), do ktorého je možné uložiť čísla od 0 po 255. Keďže náš počet používateľov nebude obmedzený, použijeme najväčší typ pre uloženie celého čísla a to je BIGINT (big integer – veľké číslo), ktorý má rozmedzie od 0 po číslo, ktoré má až 20 cifier.
Pre stĺpce meno a priezvisko použijeme stringový dátový typ. Medzi najpoužívanejšie patrí typ VARCHAR (variable characters – ľubovoľné znaky), ktorému sa v zátvorke určuje aj jeho maximálna veľkosť zadaním počtom znakov. Povedzme, že náš používateľ nebude mať dlhšie meno alebo priezvisko ako 50 znakov. Keďže už vieme, akú ideme mať štruktúru stĺpcov, môžeme zadať príkaz na vytvorenie našej tabuľky, ktorý by mal vyzerať asi takto:
USE zapr_db_1;
CREATE TABLE users (
id BIGINT,
user_name VARCHAR(50),
user_surname VARCHAR(50)
);
Ako vidíte, použili sme dva príkazy oddelené bodkočiarkou. Najprv sme si určili, v ktorej db (databáze) chceme vytvoriť tabuľku a následne sme ju vytvorili zadaním jej názvu a špecifikáciou jej troch stĺpcov (meno, typ, prípadne veľkosť typu). Príkaz a jeho časti môžeme rozdeliť na viacej riadkov, ako to vidíte v ukážke, aby to bolo prehľadnejšie. Medzery a nové riadky sú v príkazoch ignorované, takže vykonanie príkazy prebehne rovnako, ako keby to bolo zadané v jednom riadku. Po vykonaní príkazu dostaneme opäť úspešnú hlášku o prázdnom výsledku (resulte). Týmto príkazom sme vytvorili jednoduchú tabuľku, ktorá má tri stĺpce. V prvom stĺpci budeme môcť ukladať len celé čísla, v druhom a treťom ľubovnoľný text, ktorý môže mať maximálne 50 znakov. Po refrešnutí zoznamu databáz v ľavom bloku by sme mali vidieť možnosť rozbaliť zoznam tabuliek v danej databáze kliknutím na ukonu pluska. Ešte však na to neklikajme. Na výpis zoznamu tabuliek v danej databáze slúži príkaz SHOW TABLES, pomocou ktorého dostaneme zoznam tabuliek v danej databáze, takže si môžeme overiť, či naše predchádzajúce query fungovalo a či tabuľka skutočne. Zadajme teda príkaz:
USE zapr_db_1;
SHOW TABLES;
Ako vidíte, po vykonaní tohto príkazu sme dostali v spodnej časti výpis tabuliek v databáze zapr_db_1, kde sa nachádza jeden riadok s názvom users, ktorý predstavuje práve nami vytvorenú tabuľku. Môžeme si to skontrolovať aj vizuálne, kliknime v ľavom menu na názov našej databázy zapr_db_1. Po tomto sme sa dostali do databázy, čo je vidieť hore v pravom bloku nad navigačným menu v popise cesty, kde sa práve nachádzame (malo by tam byť localhost:3306 => Database: zapr_db_1). Defaultne sa nám zobrazila prvá karta menu pre databázu a to je structure (štruktúra). Táto časť zozbrazuje zoznam tabuliek v danej databáze, v našom prípade sa tam nachádza jedna tabuľka s názvom users.
Aby sme sa dostali do detailu tabuľky, kliknime na názov tabuľky v tejto časti alebo v ľavom menu po rozbalení tabuliek pod našou databázou. Týmto sme sa dostali do sekcie tabuľky users, kde sa defaultne zobrazuje prvá časť tejto sekcie Browse (prehľadávať), ktorá zobrazuje konkrétne dáta uložené v danej tabuľke. My však ešte žiadne dáta v tabuľke nemáme, takže nezobrazuje nič. V sekcii structure (štruktúra) si však môžeme pozrieť jej zloženie, čiže zoznam jednotlivých stĺpcov a ich vlastnosti. Ako je vidieť, skutočne obsahuje naše tri stĺpce s príslušným dátovým typom (Type).
Ak sa pri vytváraní tabuľky pomýlime, môžeme ju zmazať pomocou príkazu DROP (zhodiť), za ktorým nasleduje názov tabuľky. Vyskúšajme si to, aby sme videli, ako to funguje:
USE zapr_db_1;
DROP TABLE users;
Po vykonaní tohto príkazu je naša tabuľka zmazaná. Môžete si to overiť buď príkazom show tables alebo kliknutím na názov databázy a overením zoznamu tabuliek v sekcii structure. Našu tabuľku ale budeme potrebovať v ďalšej prednáške, kde sa naučíme do databázy vložiť dáta, takže si ju znova vytvorme kódom, ktorý sme použili na jej vytvorenie pred chvíľou.