Lekce 1 - MySQL krok za krokem - Úvod do MySQL a příprava prostředí
Vítejte u první lekce populárního on-line kurzu k databázi MySQL. Kurz je určen pro všechny, co se ještě s databázemi nesetkali a potřebují s nimi pracovat v dalším jazyce, například v PHP na webu nebo v Javě v desktopové aplikaci. Postupně si vysvětlíme základy jazyka SQL, které jsou podobné ve všech SQL databázích. Mezi další SQL databáze patří například MS-SQL, SQLite nebo PostgreSQL.
V tomto úvodním tutoriálu si vysvětlíme, co jsou to relační databáze a na jakých principech fungují. Připravíme si také potřebné nástroje pro práci s MySQL databází. V příštích lekcích si ukážeme, jak vytvořit databázovou tabulku a vložit do ní data nebo je modifikovat. Nakonec se naučíme potřebná data z databáze vybírat i s pomocí komplikovanějších dotazů přes více tabulek.
Pracovat budeme pouze se samotnou databází a bez dalšího programovacího jazyka. Nebude to ale tak suché, jak to zní, protože budeme používat grafické rozhraní phpMyAdmin. Ukážeme si například, jak upravit strukturu celé tabulky přímo z grafického rozhraní. A samozřejmě se také dozvíme, jak vše zapsat jako SQL dotaz. Z grafického rozhraní hezky pochopíme, co se přesně v databázi děje a poté si to spojíme s SQL příkazem:
Nabyté znalosti můžete využít v kterémkoli jazyce pro práci s MySQL databází a s minimální úpravou i s kteroukoli jinou SQL databází. Po dokončení tohoto seriálu budete schopni pracovat s databází na takové úrovni, abyste dokázali vytvořit jednoduchý redakční systém nebo podobnou aplikaci.
Minimální požadavky
Pro tento kurz není třeba žádných speciálních dovedností, vše si
postupně ukážeme a vysvětlíme. Stačí běžná práce s počítačem
Relační databáze
MySQL je relační databáze. Tento pojem označuje
databázi založenou na tabulkách. Každá tabulka obsahuje
položky jednoho typu. Můžeme mít tedy tabulku uzivatele
,
další tabulku clanky
a dále například tabulku
komentare
.
Databázovou tabulku si můžeme představit třeba jako tabulku v Excelu.
Tabulka uzivatele
pak vypadá například takto:

Položky, zde jsou to uživatelé, ukládáme na jednotlivé řádky. Sloupce pak označují atributy (vlastnosti, chcete-li), které položky mají. MySQL databáze je typovaná, to znamená, že každý sloupec má pevně stanovený datový typ (číslo, znak, krátký text, dlouhý text...) a může obsahovat hodnoty jen tohoto typu.
Pokud chceme s relační databází rozumně pracovat, každý
řádek v tabulce by měl být opatřený unikátním
identifikátorem. U uživatelů by to mohlo být rodné číslo, mnohem
častěji se však používají identifikátory umělé. Uživatele prostě
očíslujeme, první uživatel bude mít id
1
a tak
dále. K tomu se dostaneme později.
Slovo relační označuje vztah (anglicky relation). Ten je mezi tabulkami nebo mezi entitami v jedné tabulce. To si ale necháme na jindy a zatím budeme pracovat jen s jednou tabulkou zároveň.
RDBMS
Možná se ptáte, k čemu vlastně potřebujeme nějakou databázi. Data bychom stejně dobře mohli ukládat do nějakých textových nebo binárních souborů, do XML nebo něčeho podobného. Určitě by to nějak také fungovalo.
Označení databáze je vlastně nepřesné a v odborné literatuře se setkáme s označením RDBMS (Relation DataBase Management System). Česky je to přeloženo jako "systém řízení báze dat", což zní opravdu hrozně a proto budeme raději používat označení databázový stroj nebo anglickou zkratku RDBMS. Databázový stroj, v našem případě MySQL, není jen úložiště dat. Jedná se o velmi sofistikovaný a odladěný nástroj, který za nás řeší spoustu problémů a zároveň je extrémně jednoduchý k použití. S databází totiž komunikujeme jazykem SQL, kterým jsou v podstatě lidsky srozumitelné věty.
Spolu s ukládáním dat je ale třeba dále řešit mnoho dalších věcí. Asi by nás napadlo například zabezpečení nebo optimalizace výkonu. RDBMS toho ale dělá ještě mnohem více. Řeší za nás problém současné editace stejné položky několika uživateli ve stejný okamžik, který by jinak mohl zapříčinit nekonzistenci databáze. RDBMS data v tomto případě zamkne a odemkne až po vykonání zápisu. Dále umožňuje spojovat několik dotazů do transakcí, kdy se série dotazů vykoná vždy celá nebo vůbec. Nestane se, že by se vykonala jen část. Tyto vlastnosti databázového stroje jsou shrnovány zkratkou ACID, pojďme si ji vysvětlit.
ACID
ACID je akronym slov Atomicity (nedělitelnost), Consistency (validita), Isolation (izolace) a Durability (trvanlivost). Jednotlivé složky mají následující význam:
- Atomicity – Operace v transakci se provedou jako jedna atomická (nedělitelná) operace. Pokud nějaká část operace selže, vrátí se databáze do původního stavu a nebudou provedeny žádné části transakce. Jako příklad uveďme převod peněz na bankovním účtu. Když se nepodaří peníze odečíst z jednoho účtu, nebudou ani připsány na účet druhý. Jinak by byla databáze v nekonzistentním stavu. Pokud bychom si práci s daty řešili sami, mohlo by se nám toto velmi jednoduše stát.
- Consistency – Stav databáze po dokončení transakce je vždy konzistentní, tedy validní podle všech definovaných pravidel a omezení. Nikdy nenastane situace, že by se databáze nacházela v nekonzistentním stavu.
- Isolation – Operace jsou izolované a navzájem se neovlivňují. Pokud se sejde v jeden okamžik více dotazů na zápis do stejného řádku, jsou vykonávány postupně, jako ve frontě.
- Durability – Všechna zapsaná data jsou okamžitě zapsána na trvanlivá úložiště (na pevný disk), v případě výpadku elektrické energie nebo jiného přerušení provozu RDBMS vše zůstane tak, jak bylo těsně před výpadkem.
Databáze (přesněji databázový stroj) je tedy černá skříňka, se kterou naše aplikace komunikuje a do které ukládá veškerá data. Její použití je velmi jednoduché a je odladěna tak, jak bychom si sami zápis dat v programu asi těžko udělali. Vůbec se nemusíme starat o to, jak jsou data fyzicky uložena, s databází komunikujeme pomocí jednoduchého dotazovacího jazyka SQL.
V dnešní době se vůbec nevyplatí zatěžovat se otázkou ukládání dat Jednoduše sáhneme po hotové databázi, kterých je obrovský výběr a jsou většinou zadarmo. Často se o databázi mluví jako o třetí vrstvě aplikace, kde první vrstva představuje uživatelské rozhraní a druhá obsahuje logiku samotné aplikace.
Potřebné nástroje
Začněme tedy. Potřebovat budeme nakonfigurovaný webserver Apache a databázi MySQL. Vše si velmi jednoduše opatříme nainstalováním balíku XAMPP.
Instalace XAMPP
Balíček XAMPP si stáhneme na webové stránce www.apachefriends.org.
Na této stránce si vybereme verzi pro Windows, najedeme na tu nejnovější a klikneme na tlačítko Download:

Pokud používáte operační systém Linux nebo MacOS, sjeďte trochu níže a vyberte instalační balíček pro svůj operační systém. Postup instalace pro tyto OS je pak popsaný na stránkách MySQL databáze, https://dev.mysql.com/, v sekci Documentation.
Stažený soubor spustíme jako administrátor a povolíme změny v našem počítači. Následně v instalaci vybereme potřebné komponenty. Doporučujeme si nechat nainstalovat i ty volitelné. Poté pokračujeme kliknutím na tlačítko Next:

V dalším okně máme možnost změnit umístění instalovaných souborů.
Necháme je nainstalovat do složky C:/
, což bývá výchozí
nastavení:

Ke konci instalace budeme dotázání na povolení přístupu k síti, ten potvrdíme:

Tímto jsme nainstalovali potřebné nástroje.
Nástroj phpMyAdmin
Pro práci s MySQL databází, která je nejpoužívanější databází ve webových aplikacích, se nejčastěji používá nástroj phpMyAdmin. Nutno dodat, že existují i lepší administrační nástroje (například Adminer) a někdy může být výhodné použít v projektu jinou databázi. MySQL a phpMyAdmin však nalezneme na každém webhostingu. Jestliže se někdy dostanete k cizímu projektu, je velmi pravděpodobné, že bude postaven právě na těchto technologiích. Berme tyto dva nástroje jako standard, kterými také zatím jsou a začněme s databázemi právě v nich.
Po instalaci si otevřeme XAMPP Control Panel a spustíme Apache server a MySQL. (Pozor na Skype, rád blokuje port 80). Následně klikneme na tlačítko admin u MySQL a otevřeme tak phpMyAdmin v našem prohlížeči:

Alternativně v našem webovém prohlížeči zadáme sami adresu:
localhost/phpmyadmin/
V obou případech uvidíme webové rozhraní phpMyAdmin, které vypadá takto:

Položky v levém sloupci jsou databáze. Možná je to trochu zavádějící, ale databází si můžeme samozřejmě založit více. Ty, co zde vidíme, jsou konfigurační a testovací databáze XAMPPu. Pokud bychom spustili phpMyAdmin na našem webhostingu, tak budou skryty.
V příští lekci, MySQL krok za krokem - Vytvoření databáze a tabulky, si vytvoříme databázi a tabulku uživatelů.