1. diel - MySQL krok za krokom - Úvod do MySQL a príprava prostredia
Vitajte pri prvej lekcii populárneho online kurzu o 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 dotazov 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 a s 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), 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. Pri používateľoch by to mohlo byť rodné číslo,
oveľa častejšie sa však používajú identifikátory umelé. Používateľov
jednoducho očíslujeme, prvý použí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, prečo vlastne potrebujeme nejakú databázu. Dáta by sme predsa mohli ukladať do nejakých textových alebo binárnych súborov, do XML alebo niečoho podobného. Určite by to tiež nejako fungovalo.
Označenie databáza 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 vyladený 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 prostredníctvom jazyka SQL, ktorý tvoria 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ám 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 použí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 dotazov do transakcií, kedy sa séria dotazov 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. Ak 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 viacero dotazov 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 vyladená 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 dopytovacieho 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ú vrstvu 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. Je 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ť viacero. Tie, čo tu vidíme, sú konfiguračné a testovacie databázy XAMPPu. Ak 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 používateľov.