1. diel - MySQL krok za krokom - Úvod do MySQL a príprava prostredia
Vitajte pri prvej lekcii populárneho on-line kurzu k databáze MySQL. Kurz je určený pre všetkých, čo sa ešte s databázami nestretli a potrebujú s nimi pracovať v ďalšom jazyku, napríklad v PHP na webe alebo v Jave v desktopovej aplikácii. Postupne si vysvetlíme základy jazyka SQL, ktoré sú podobné vo všetkých SQL databázach. Medzi ďalšie SQL databázy patrí napríklad MS-SQL, SQLite alebo PostgreSQL.
V tomto úvodnom tutoriále si vysvetlíme, čo sú to relačné databázy a na akých princípoch fungujú. Pripravíme si tiež potrebné nástroje na prácu s MySQL databázou. V nasledujúcich lekciách si ukážeme, ako vytvoriť databázovú tabuľku a vložiť do nej dáta alebo ich modifikovať. Nakoniec sa naučíme potrebné dáta z databázy vyberať aj s pomocou komplikovanejších otázok cez viacero tabuliek.
Pracovať budeme iba so samotnou databázou a bez ďalšieho programovacieho jazyka. Nebude to ale tak suché, ako to znie, pretože budeme používať grafické rozhranie phpMyAdmin. Ukážeme si napríklad, ako upraviť štruktúru celej tabuľky priamo z grafického rozhrania. A samozrejme sa tiež dozvieme, ako všetko zapísať ako SQL dotaz. Z grafického rozhrania pekne pochopíme, čo sa presne v databáze deje a potom si to spojíme s SQL príkazom:
Získané znalosti môžete využiť v ktoromkoľvek jazyku pre prácu s MySQL databázou as minimálnou úpravou aj s ktoroukoľvek inou SQL databázou. Po dokončení tohto seriálu budete schopní pracovať s databázou na takej úrovni, aby ste dokázali vytvoriť jednoduchý redakčný systém alebo podobnú aplikáciu.
Minimálne požiadavky
Pre tento kurz nie sú potrebné žiadne špeciálne zručnosti, všetko si postupne ukážeme a vysvetlíme. Stačí bežná práca s počítačom
Relačná databáza
MySQL je relačná databáza. Tento pojem označuje
databázu založenú na tabuľkách. Každá tabuľka obsahuje
položky jedného typu. Môžeme mať teda tabuľku users
, ďalšiu
tabuľku articles
a ďalej napríklad tabuľku
comments
.
Databázovú tabuľku si môžeme predstaviť napríklad ako tabuľku v
Exceli. Tabuľka users
potom vyzerá napríklad takto:
First name | Last name | Date of birth | Number of articles |
---|---|---|---|
John | Smith | 1984/3/11 | 17 |
Thomas | Brown | 1989/2/1 | 6 |
Jack | Newman | 1972/12/20 | 9 |
Mary | Emmerson | 1990/8/14 | 1 |
Položky, tu sú to používatelia, ukladáme na jednotlivé riadky. Stĺpce potom označujú atribúty (vlastnosti, ak chcete), ktoré položky majú. MySQL databáza je typovaná, to znamená, že každý stĺpec má pevne stanovený dátový typ (číslo, znak, krátky text, dlhý text...) a môže obsahovať hodnoty iba tohto typu.
Ak chceme s relačnou databázou rozumne pracovať, každý
riadok v tabuľke by mal byť opatrený unikátnym
identifikátorom. U užívateľov by to mohlo byť rodné číslo,
oveľa častejšie sa však používajú identifikátory umelé. Užívateľov
jednoducho očíslujeme, prvý užívateľ bude mať id
1
a tak ďalej. K tomu sa dostaneme neskôr.
Slovo relačné označuje vzťah (anglicky relation). Ten je medzi tabuľkami alebo medzi entitami v jednej tabuľke. To si ale necháme na inokedy a zatiaľ budeme pracovať len s jednou tabuľkou zároveň.
RDBMS
Možno sa pýtate, k čomu vlastne potrebujeme nejakú databázu. Dáta by sme rovnako dobre mohli ukladať do nejakých textových alebo binárnych súborov, do XML alebo niečoho podobného. Určite by to nejako tiež fungovalo.
Označenie databázy je vlastne nepresné a v odbornej literatúre sa stretneme s označením RDBMS (Relation DataBase Management System). Slovensky je to preložené ako "systém riadenia bázy dát", čo znie naozaj hrozne a preto budeme radšej používať označenie databázový stroj alebo anglickú skratku RDBMS. Databázový stroj, v našom prípade MySQL, nie je len úložisko dát. Jedná sa o veľmi sofistikovaný a odladený nástroj, ktorý za nás rieši množstvo problémov a zároveň je extrémne jednoduchý na použitie. S databázou totiž komunikujeme jazykom SQL, ktorým sú v podstate ľudsky zrozumiteľné vety.
Spolu s ukladaním dát je ale treba ďalej riešiť mnoho ďalších vecí. Asi by nás napadlo napríklad zabezpečenie alebo optimalizácia výkonu. RDBMS toho ale robí ešte oveľa viac. Rieši za nás problém súčasnej editácie rovnakej položky niekoľkými užívateľmi v rovnaký okamih, ktorý by inak mohol zapríčiniť nekonzistenciu databázy. RDBMS dáta v tomto prípade zamkne a odomkne až po vykonaní zápisu. Ďalej umožňuje spájať niekoľko otázok do transakcií, kedy sa séria otázok vykoná vždy celá alebo vôbec. Nestane sa, že by sa vykonala len časť. Tieto vlastnosti databázového stroja sú zhŕňané skratkou ACID, poďme si ju vysvetliť.
ACID
ACID je akronym slov Atomicity (nedeliteľnosť), Consistency (validita), Isolation (izolácia) a Durability (trvanlivosť). Jednotlivé zložky majú nasledujúci význam:
- Atomicity – Operácie v transakcii sa vykonajú ako jedna atomická (nedeliteľná) operácia. Ak nejaká časť operácie zlyhá, vráti sa databáza do pôvodného stavu a nebudú vykonané žiadne časti transakcie. Ako príklad uveďme prevod peňazí na bankovom účte. Keď sa nepodarí peniaze odpočítať z jedného účtu, nebudú ani pripísané na účet druhý. Inak by bola databáza v nekonzistentnom stave. Pokiaľ by sme si prácu s dátami riešili sami, mohlo by sa nám toto veľmi jednoducho stať.
- Consistency – Stav databázy po dokončení transakcie je vždy konzistentný, teda validný podľa všetkých definovaných pravidiel a obmedzení. Nikdy nenastane situácia, že by sa databáza nachádzala v nekonzistentnom stave.
- Isolation – Operácie sú izolované a navzájom sa neovplyvňujú. Ak sa zíde v jeden okamih viac otázok na zápis do rovnakého riadku, sú vykonávané postupne, ako vo fronte.
- Durability – Všetky zapísané dáta sú okamžite zapísané na trvanlivé úložiská (na pevný disk), v prípade výpadku elektrickej energie alebo iného prerušenia prevádzky RDBMS všetko zostane tak, ako bolo tesne pred výpadkom.
Databáza (presnejšie databázový stroj) je teda čierna skrinka, s ktorou naša aplikácia komunikuje a do ktorej ukladá všetky dáta. Jej použitie je veľmi jednoduché a je odladená tak, ako by sme si sami zápis dát v programe asi ťažko urobili. Vôbec sa nemusíme starať o to, ako sú dáta fyzicky uložené, s databázou komunikujeme pomocou jednoduchého dotazovacieho jazyka SQL.
V dnešnej dobe sa vôbec neoplatí zaťažovať sa otázkou ukladania dát Jednoducho siahneme po hotovej databáze, ktorých je obrovský výber a sú väčšinou zadarmo. Často sa o databáze hovorí ako o tretej vrstve aplikácie, kde prvá vrstva predstavuje používateľské rozhranie a druhá obsahuje logiku samotnej aplikácie.
Potrebné nástroje
Začnime teda. Potrebovať budeme nakonfigurovaný webserver Apache a databázu MySQL. Všetko si veľmi jednoducho zaobstaráme nainštalovaním balíka XAMPP.
Inštalácia XAMPP
Balíček XAMPP si stiahneme na webovej stránke www.apachefriends.org.
Na tejto stránke si vyberieme verziu pre Windows, nabehneme na tú najnovšiu a klikneme na tlačidlo Download:
Ak používate operačný systém Linux alebo MacOS, zíďte trochu nižšie a vyberte inštalačný balíček pre svoj operačný systém. Postup inštalácie pre tieto OS je potom popísaný na stránkach MySQL databázy, https://dev.mysql.com/, v sekcii Documentation.
Stiahnutý súbor spustíme ako administrátor a povolíme zmeny v našom počítači. Následne v inštalácii vyberieme potrebné komponenty. Odporúčame si nechať nainštalovať aj tie voliteľné. Potom pokračujeme kliknutím na tlačidlo Next:
V ďalšom okne máme možnosť zmeniť umiestnenie inštalovaných súborov.
Necháme ich nainštalovať do zložky C:/
, čo býva predvolené
nastavenie:
Ku koncu inštalácie budeme požiadaní o povolenie prístupu k sieti, ten potvrdíme:
Týmto sme nainštalovali potrebné nástroje.
Nástroj phpMyAdmin
Na prácu s MySQL databázou, ktorá je najpoužívanejšou databázou vo webových aplikáciách, sa najčastejšie používa nástroj phpMyAdmin. Nutné dodať, že existujú aj lepšie administračné nástroje (napríklad Adminer) a niekedy môže byť výhodné použiť v projekte inú databázu. MySQL a phpMyAdmin však nájdeme na každom webhostingu. Ak sa niekedy dostanete k cudziemu projektu, je veľmi pravdepodobné, že bude postavený práve na týchto technológiách. Berme tieto dva nástroje ako štandard, ktorými tiež zatiaľ sú a začnime s databázami práve v nich.
Po inštalácii si otvoríme XAMPP Control Panel a spustíme Apache server a MySQL. (Pozor na Skype, rád blokuje port 80). Následne klikneme na tlačidlo Admin pri MySQL a otvoríme tak phpMyAdmin v našom prehliadači:
Alternatívne v našom webovom prehliadači zadáme sami adresu:
localhost/phpmyadmin/
V oboch prípadoch uvidíme webové rozhranie phpMyAdmin, ktoré vyzerá takto:
Položky v ľavom stĺpci sú databázy. Možno je to trochu zavádzajúce, ale databáz si môžeme samozrejme založiť viac. Tie, čo tu vidíme, sú konfiguračné a testovacie databázy XAMPPu. Pokiaľ by sme spustili phpMyAdmin na našom webhostingu, tak budú skryté.
V budúcej lekcii, MySQL krok za krokom - Vytvorenie databázy a tabuľky, si vytvoríme databázu a tabuľku užívateľov.