Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Pouze tento týden sleva až 80 % na e-learning týkající se C a C++. Zároveň využij akce až 80 % zdarma při nákupu e-learningu - více informací.
c week

1. diel - MySQL krok za krokom: Úvod do MySQL a príprava prostredia

Vitajte u prvej lekcii 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. V PHP na webe alebo v Jave v desktopové aplikácii). Zmyslom je naučiť vás základy jazyka SQL, ktoré sú podobné vo všetkých SQL databázach (MySQL, MS-SQL, SQLite ...). Postupne si ukážeme vytváranie tabuliek, vkladanie dát, ich modifikáciu a nakoniec aj výber, vyhľadávanie a komplikovanejšie otázky cez viac tabuliek.

Pracovať budeme iba so samotnou databáz 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, ako veci naklikať (tie ktoré idú) a ako to isté zapísať aj ako SQL dotaz. Z grafického rozhrania pekne pochopíte čo presne robíte a potom si to spojíte s SQL príkazom. Nadobudnuté znalosti môžete využiť v ktoromkoľvek jazyku pre prácu s MySQL databáz (napr. V PHP) as minimálnou úpravou is ktorúkoľvek inú SQL databázou. Po dokončení tohto seriálu budete schopní pracovať s databázou na takej úrovni, aby ste dokázali vytvoriť jednoduchý redadakční systém alebo podobnú aplikáciu.

Relačnej databázy

MySQL je tzv. Relačnej databázy. 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 uzivatele, ďalšiu tabuľku clanky a ďalšie potrebné komentare.

Databázovú tabuľku si môžeme predstaviť napríklad ako tabuľku v Exceli. Tabuľka uzivatele by mohla vyzerať asi takto:

Tabuľka užívateľov v Exceli

Položky (konkrétne tu užívatelia) ukladáme na jednotlivé riadky, stĺpce potom označujú atribúty (vlastnosti, ak chcete), ktoré položky majú. MySQL databázy je typová, 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 len tohto typu. Ak chceme s relačné 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ť napríklad rodné číslo, oveľa častejšie sa však používajú identifikátory umelé a to tak, že používateľa jednoducho očíslujeme. K tomu sa dostaneme neskôr.

Tento výukový obsah pomáhajú rozvíjať nasledujúce firmy, ktoré možno hľadajú práve teba!

Slovo relačné označuje vzťah (anglicky relation). Ten je medzi tabuľkami alebo medzi jednotlivými subjektmi v jednej tabuľke. To si však necháme na inokedy a zatiaľ budeme pracovať len s jednou tabuľkou zároveň.

RDBMS

Možno vás napadlo, k čomu vlastne potrebujeme nejakú databázu. Dáta by sme rovnako dobre mohli ukladať do nejakých textových súborov, binárek, XML alebo niečoho podobného. Určite by to nejako fungovalo, alebo nie?

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 "databázový systém", čo znie naozaj hrozne a preto budem ďalej používať označenie databázový stroj alebo RDBMS. Databázový stroj (teda tu MySQL) nie je len úložisko dát. Jedná sa o veľmi sofistikovaný a odladený nástroj, ktorý za nás rieši veľa 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 potrebné ďalej riešiť mnoho ďalších vecí. Asi by nás napadlo napr. Zabezpečenia alebo optimalizácie výkonu. RDBMS toho ale robí ešte oveľa viac, rieši za nás problém súčasnej editácia rovnaké položky niekoľkými užívateľmi v rovnaký okamih, ktorý by inak mohol zapríčiniť nekonzistentnosti 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 otázok vykoná vždy celá alebo vôbec. Nestane sa, že by sa vykonala len časť. Tieto vlastnosti databázového stroja sú zhrňované skratkou ACID, poďme si ju vysvetliť.

ACID

ACID je akronym slov Atomicita (nedeliteľnosť), Consistency (validita), Isolation (izolácia) a Durability (trvanlivosť). Jednotlivé zložky majú nasledujúci význam:

  • Atomicita - Operácie v transakcii sa vykonajú ako jedna atomická (nedeliteľná) operácie. Tzn. že ak nejaká časť operácie zlyhá, vráti sa databázy do pôvodného stavu a žiadne časti transakcie nebudú vykonané. Reálny príklad je napr. Prevod peňazí na bankovom účte. Ak sa nepodarí peniaze odpočítať z jedného účtu, nebudú ani pripísané na účet druhý. Inak by bola databázy 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ázy nachádzala v nekonzistentnom stave.
  • Isolation - Operácie sú izolované a navzájom sa neovplyvňujú. Ak sa zíde v jeden okamih viac 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žisko (na pevný disk), v prípade výpadku el. energie alebo iného prerušenie 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še aplikácie 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, viď ďalej. V dnešnej dobe sa vôbec neoplatí zaťažovať sa otázkou ukladanie dát, jednoducho siahneme po hotové databázu, ktorých je obrovský výber a sú väčšinou zadarmo. O databázu občas hovoríme ako o 3. vrstve aplikácie (1. vrstva je užívateľské rozhranie, 2. vlastné logika aplikácie, 3. je práve dátová vrstva).

Potrebné nástroje

Začnime teda. Potrebovať budeme nakonfigurovaný webserver Apache a databázu MySQL. Ten si veľmi jednoducho opatríme nainštalovaním balíka XAMPP podľa nasledujúceho článku: Inštalácia Apache, Mysql a PHP na Windows.

PhpMyAdmin

phpMyAdmin je najpoužívanejší prostredie pre prácu s MySQL databázou, ktorá je zas najpoužívanejší databázou vo webových aplikáciách. Nutné dodať, že existujú lepšie administračné nástroje (napr. Adminer) a lepšiu databázy (napr. SQLite alebo PostgreSQL). MySQL s phpMyAdminom však nájdete na každom webhostingu a ak sa niekedy dostanete k cudziemu projektu, je veľmi pravdepodobné, že bude postavený práve na týchto technológiách. Berme tieto 2 nástroje ako štandard (ony ním tiež sú) a začnime s databázami práve v nich.

Po inštalácii XAMPP si otvoríte XAMPP control panel a spustite Apache a MySQL (pozor na Skype, rád blokuje port 80). Vo webovom prehliadači vyťukaj adresu:

localhost/phpmyadmin/

Mali by ste vidieť webové rozhranie phpMyAdmin, ktoré vyzerá asi takto:

phpMyAdmin

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. Tieto, čo vidíme, sú nejaké konfiguračné a testovacej databázy XAMPP. 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 užívateľov.


 

Všetky články v sekcii
MySQL databázy krok za krokom
Preskočiť článok
(neodporúčame)
MySQL krok za krokom: Vytvorenie databázy a tabuľky
Článok pre vás napísal David Čápka
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
David je zakladatelem ITnetwork a programování se profesionálně věnuje 13 let. Má rád Nirvanu, sushi a svobodu podnikání.
Unicorn university David sa informačné technológie naučil na Unicorn University - prestížnej súkromnej vysokej škole IT a ekonómie.
Aktivity

 

 

Komentáre

Avatar
Roman Duchoň:20.10.2016 15:40

Občas mě mrzí opomenutí uživatelů Linux.
Tak ale beru to jako další trénink, pro mě, jako začátečníka v Linuxu.

Návod zprovoznění XAMPP na Ubuntu, in English, ale i s obrázky. :)

Editované 20.10.2016 15:41
Odpovedať
20.10.2016 15:40
RD
Avatar
gorri
Člen
Avatar
gorri:29.10.2016 23:00

Omlouvám se za tento asi nesmyslný komentář. 2 odstavec, poslední věta.
"redadakční systém nebo podobnou aplikaci."
Každopádně pěkný článek.
Jsem rád za tento jednoduchý návod :-)

Odpovedať
29.10.2016 23:00
Když vím, tak poradím. Nikdo neví všechno :-)
Avatar
Vetva
Člen
Avatar
Vetva:3.12.2016 19:52

Zaujímali by ma rozdiely MsSql,MySql a Linq.

 
Odpovedať
3.12.2016 19:52
Avatar
Michal
Člen
Avatar
Michal:10.6.2020 16:31

Můžu se zeptat proč například Nette využívá jako defaultně zvoleno SQLite3 místo toho aby používal MySQL? Děkuji

 
Odpovedať
10.6.2020 16:31
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovedá na Michal
David Čápka:10.6.2020 18:47

SQLite se nemusí většinou instalovat ani konfigurovat, proto může být výchozí, na testování/pro­totypování.

Odpovedať
10.6.2020 18:47
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Tento výukový obsah pomáhajú rozvíjať nasledujúce firmy, ktoré možno hľadajú práve teba!
Avatar
Jiří Ryška:1.12.2020 15:09

Nainstaloval jsem si apache a databázi mySQL a při spuštění to píše tohle:
Co s tím mám dělat?
děkuji za info
15:02:52 [mysql] Status change detected: stopped
15:02:52 [mysql] Error: MySQL shutdown unexpectedly.
15:02:52 [mysql] This may be due to a blocked port, missing dependencies,
15:02:52 [mysql] improper privileges, a crash, or a shutdown by another method.
15:02:52 [mysql] Press the Logs button to view error logs and check
15:02:52 [mysql] the Windows Event Viewer for more clues
15:02:52 [mysql] If you need more help, copy and post this
15:02:52 [mysql] entire log window on the forums

Odpovedať
1.12.2020 15:09
Ryška
Avatar
Odpovedá na Jiří Ryška
Jiří Ryška:1.12.2020 15:25

Už jsem zjistil, kde je chyba, musel jsem jen zrušit povolení Skype a poté vše fungovalo jak má

Odpovedať
1.12.2020 15:25
Ryška
Avatar
Miya Orel
Člen
Avatar
Odpovedá na Roman Duchoň
Miya Orel:6.2.2021 22:38

Všude samé Widle, brr. Roman nahoře naštěstí pastnul link na Linux.
Co tahle ještě link pro Mac k instalaci Apache, Mysql a PHP?
Ale dívám, se že v odkazech jsou automaticky i instalačky pro ostatní OS.
=> Možná trochu jen upravit popis v první lekci ;)

Editované 6.2.2021 22:41
 
Odpovedať
6.2.2021 22:38
Avatar
Josef N.
Redaktor
Avatar
Josef N.:24. februára 9:54

Pokud používám OS jen LINUX, tak žádné XAMP nepotřebuji. Tedy je špatně myslet jen na uživatele OS Windows, postup by měl být napsán i pro LINUX.

Odpovedať
24. februára 9:54
Ne estas pano sen laboro!
Avatar
Jaroslav Drobek:7. apríla 20:02

Hodnocení:

  • Proč báze dat?
  • Entita je položka/řádek? Nebo atribut/sloupec? Nebo oboje?
  • Co je zavádějící na možnosti založení více databází? Jsou na příděl?
 
Odpovedať
7. apríla 20:02
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!