Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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í.

2. diel - MySQL krok za krokom: Vytvorenie databázy a tabuľky

V minulej lekcii, MySQL krok za krokom: Úvod do MySQL a príprava prostredia , sme si povedali niečo o relačných databázach a pripravili sme si prostredie.

Dnes si vytvoríme databázu a do nej nejakú tabuľku.

Vytvorme si databázu, zvyčajne nám pre jeden projekt (web) postačí jedna databázy.

Klikneme v phpMyAdmin hore na záložku Databáza. Vyplníme názov databázy (napr. Databaze_pro_web). V databázach je zvykom pomenovávať položky bez diakritiky, malými písmenami as podtržítkovou notáciou. Snáď vám je jasné, prečo nie je diakritika dobrý nápad, za veľkými a malými písmenami je Linux, ktorý je rozlišuje a väčšina serverov práve na Linuxe beží. Porovnávanie nastavíme na utf8_czech_ci (pre slovenčinu utf8_slovak_ci). Je veľmi dobrý nápad nastaviť databázu práve na toto štandardné kódovanie. Aj keby samotná aplikácia, ktorá s databázou komunikuje, používala iné kódovanie, možno ho neskôr ľahko vynútiť a dáta budú potom databáz do tohto kódovania prevádzaná. Rovnako ale väčšinou budeme používať utf8 aj v našej aplikácii, ktorá s databázou komunikuje. Potvrdíme.

Vytvorenie MySQL databázy - MySQL databázy krok za krokom

Tento krok za nás už na webhostingu takmer vždy urobili a dostaneme k dispozícii často práve jednu databázu, ktorá sa volá rovnako, ako náš účet (teda potrebné niečo ako mojewebovastran­ka.cz1). Máme všetko pripravené na to, aby sme sa mohli začať učiť jazyk SQL.

Jazyk SQL

SQL označuje Structured Query Language, teda štruktúrovaný dopytovací jazyk. SQL je tzv. Jazyk deklaratívny. Zatiaľ čo u imperatívnych jazykov počítači vlastne hovoríme krok po kroku čo má urobiť, u jazykov deklaratívnych len hovoríme čo má byť výsledkom a už nás nezaujíma, ako tento výsledok počítač dosiahne. Vďaka tomu sú databázové dotazy zjednodušené na príkaz typu "Vráť mi 10 užívateľov s najvyšším hodnotením". Databáza taký dotaz pochopí, rozloží si ho na nejaké svoje inštrukcie a tak ho spracuje. Nám potom naozaj vráti výsledok, bez bycom tušili, ako k nemu došla. Ak vám príkaz prišiel ako nadsázka, tak to tak nie je a príkazy naozaj takto vyzerajú. Len sú anglicky.

SQL sa pôvodne volalo SEQUEL (Structured English Query Language) a vzniklo v laboratóriách spoločnosti IBM s cieľom vytvoriť jazyk, ktorým by sa dalo komunikovať s databázou jednoduchou angličtinou. SQL (relačné) databázy sa potom rozširovali a ujali. Dnes sa prakticky nič iné nepoužíva a aj keď má SQL v objektovom programovaní značné nevýhody, firmám sa nechce prechádzať na nič iné (aj keď existujú alternatívne riešenia). Ale to sme odbočili.

Naklikáním databázy nám phpMyAdmin vygeneroval a spustil príkaz v SQL, ktorý vytvoril novú databázu. Vyzeral by asi takto:

CREATE DATABASE `databaze_pro_web` CHARACTER SET utf8 COLLATE utf8_czech_ci;

Všetky príkazy, ktoré phpMyAdmin vygeneruje, si môžete zobraziť, ak dole v okne kliknete na tlačidlo "Konzola".

Časti CREATE DATABASE asi rozumieme, CHARACTER SET nastavuje znakovú sadu, COLLATE tzv. Porovnávanie. Znaková sada je súbor znakov, ktoré môže databázy obsahovať, porovnávanie sa väčšinou viaže ku znakovej sade a určuje, ako sa znaky za seba radí, teda české "Č" je po "C" a tak ďalej. Oboje nastavíme na UTF8, u porovnávanie upresníme, že chceme češtinu (prípadne slovenčinu).

V SQL sa väčšinou píšu príkazy veľkými písmenami, to preto, že je to lepšie odlíši od zvyšku dopytu alebo od kódu našej aplikácie (napr. V PHP). Názvy tabuliek, stĺpcov a ďalšie identifikátory sú naopak malými písmenami a podtržítkovou notáciou. Je dobrým zvykom je vkladať medzi spätné apostrofy (na QWERTY klávesnici AltGt + klávesa pod escape, na anglickej len tá klávesa).

Skúste si databázu odstrániť (ikona domček v ľavom paneli -> záložka Databáza -> zaškrtnúť políčko u databaze_pro_web a Odstrániť).

Odstránenie MySQL databázy - MySQL databázy krok za krokom

Databáza zmizla a vidíme, že nám phpMyAdmin vygeneroval ďalší dotaz (väčšinou nám ho po kliknutí ukáže), ktorý znel:

DROP DATABASE `databaze_pro_web`;

"Zahoď databázu databaze_pro_web", tu asi nie je čo dodávať. Už vieme 2 SQL príkazy, vytvorenie databázy a jej odstránenie. Ani jeden ale v našej aplikácii asi používať nebudeme, pretože databázu si stačí vytvoriť len raz a môžeme to urobiť takto jednoducho v administračnom nástroji. To isté platí pre tvorbu tabuliek. Až samotná práca s dátami v SQL pre nás bude kľúčová, čoskoro sa k nej dostaneme.

Spustenie SQL dotazu

Teraz si databázu opäť vytvorme, ale namiesto nakliknutí zadáme rovno SQL dotaz. V hornej lište klikneme na položku SQL. Otvorí sa nám okno, kam môžeme písať priamo SQL dotazy. Vložíme tam náš dotaz pre vytvorenie databázy (pozri vyššie) a otázka vykonáme:

SQL dotaz v phpMyAdmin - MySQL databázy krok za krokom

Vidíme, že sme docielili rovnaký výsledok, ako keď sme tabuľku naklikli. Databázu si v ľavom stĺpci otvorte. phpMyAdmin nám ponúka vytvorenie tabuľky. Spomenieme si na príklad tabuľky užívateľov, čo sme si ukázali v minulom dieli. Mala stĺpce meno, priezvisko, dátum narodenia a počet článkov. Už sme načali, že by každá tabuľka mala mať stĺpec, ktorého hodnota je pre každú položku unikátne. Stĺpcov bude teda dokopy 5, tabuľka sa bude volať uzivatele. Hodnoty zadajte do phpMyAdmina:

Vytvorenie tabuľky v phpMyAdmin - MySQL databázy krok za krokom

Otvorí sa nám naozaj veľa polí, ale tých sa vôbec neľakajte. Prvý stĺpec sú mená stĺpcov tabuľky. Vyplníme pod seba teda názvami našich stĺpcov, čo sú: uzivatele_id, mena, priezviska, datum_narozeni, a pocet_clanku. Id sa mi osvedčilo pomenovávať s prefixom tabuľky, ale nie je to nutné.

Presuňme sa k 2. stĺpci, kde sú dátové typy jednotlivých stĺpcov tabuľku. Prednastavený máme INT, čo sú celé čísla. Typov je naozaj veľa, ale my si dlho (asi až do konca seriálu) vystačíme len s niekoľkými. uzivatele_id ponecháme na INT, meno a priezvisko nastavíme na VARCHAR, to je krátky text. Dátum narodenia na DATE. Posledný, pocet_clanku, bude typu INT. Časom si popíšeme i ďalšie dátové typy, ale teraz vám s nimi nebudem motať hlavu :)

3. stĺpec Dĺžka / množina má zmysel len pri VARCHAR a udáva maximálny počet jeho znakov, meno aj priezvisko nastavíme na 60 znakov.

Od verzie MySQL 5.7 je dôležité si dávať pozor na 4. stĺpec "Predvolené". Ak ste v starších verziách pri vkladaní dát do tabuľky nezadali dáta pre všetky stĺpce, MySQL automaticky vložila nejakú predvolenú hodnotu. V nových verziách spadne s chybovým stavom: Warning: PDOStatement::execute(): SQLSTATE[HY000]: General error: 1364 Field 'xxx' doesn't have a default value a otázka sa nevykoná. Ak teda vytvárate stĺpec, ktorý nemusí mať vždy zadanú hodnotu, je vhodné mu nastaviť nejakú predvolené. Všimnite si, že v našom prípade nemusí byť pri vkladaní nového užívateľa zadaný počet jeho článkov práve preto, že východisková hodnota je nastavená na NULL, ktorá označuje nezadané.

Ďalej máme ďalšie stĺpce, ktoré pre nás však nie sú tak dôležité a nebudeme ich vypĺňať. Posledné, čo vyplníme, je stĺpec Kľúč u stĺpce s uzivatele_id. Kľúč tu nastavíme na PRIMARY a zaškrtneme pole vedľa, ktoré je napísané A_I (ako Auto Increment). Týmto sme stĺpec uzivatele_id nastavili ako tzv. Primárny kľúč tabuľky. Kľúče (niekedy indexy) nám umožňujú identifikovať položku v tabuľke. Taký primárny kľúč by mala mať každá tabuľka (aj keď teoreticky nemusí). Keď budeme chcieť užívateľa napr. Vymazať, vymažeme ho podľa tohto kľúča (teda podľa uzivatele_id). Keby sme ho mazali podľa mena, zmazali by sme niekoľko položiek, pretože treba Janů Novákov tam môže byť viac. Podľa uzivatele_id vymažeme vždy len toho jedného. Začiarknutie Auto Increment spôsobilo, že sa bude hodnota uzivatele_id automaticky navyšovať a užívatelia sa budú postupne číslovať.

Mimochodom, všimnite si možnosti Pridať poľa, to je ak ich na začiatku zadáme málo a pri návrhu tabuľky zistíme, že potrebujeme ďalšie. Tabuľku uložíme.

Vytvorenie tabuľky v phpMyAdmin - MySQL databázy krok za krokom

Tabuľka sa nám objaví v ľavom stĺpci, môžeme ju rozkliknúť, ale zatiaľ je prázdna. SQL dotaz pre vytvorenie tabuľky by vyzeral takto:

CREATE TABLE uzivatele (
  uzivatele_id int AUTO_INCREMENT,
  jmeno varchar(60),
  prijmeni varchar(60),
  datum_narozeni date,
  pocet_clanku int,
  PRIMARY KEY (uzivatele_id)
);

Prvý riadok je jasný, na ďalších riadkoch sa definujú jednotlivé stĺpce tabuľky a ich dátový typ. U varchar k typu uvedieme aj počet znakov. AUTO_INCREMENT u uzivatele_id označuje, aby databáza každému novému užívateľovi priradila o 1 väčšia ID, ako mal posledný. Nakoniec nastavíme uzivatele_id ako primárny kľúč tabuľky.

Odstránenie tabuľky je rovnaké, ako odstránenie databázy. V phpMyAdmin ju odstránite po rokliknutí príslušnej databázy, v SQL:

DROP TABLE `uzivatele`;

Skúste si tabuľku dropnout a potom znova vložiť pomocou SQL dotazu.

V budúcej lekcii, MySQL krok za krokom: Vkladanie a mazanie dát v tabuľke , si databázu naplníme nejakými dátami :)


 

Predchádzajúci článok
MySQL krok za krokom: Úvod do MySQL a príprava prostredia
Všetky články v sekcii
MySQL databázy krok za krokom
Preskočiť článok
(neodporúčame)
MySQL krok za krokom: Vkladanie a mazanie dát v tabuľke
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
3 hlasov
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti 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