IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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í.
Mezi 13:00 až cca 16:00 proběhne odstávka sítě z důvodu aktualizace. Web bude po celou dobu nedostupný.

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.

V dnešnom MySQL tutoriále si predstavíme jazyk SQL. Potom si vytvoríme databázu a pridáme do nej prvú tabuľku s dátami.

Jazyk SQL

Akronym SQL označuje S tructured Q uery L anguage, teda štruktúrovaný dotazovací jazyk. SQL je jazyk deklaratívny. To znamená, že počítač iba hovoríme, čo má byť výsledkom. Už nás nezaujíma, ako tento výsledok počítač dosiahne. Pri imperatívnych jazykoch potom počítaču zadávame krok po kroku inštrukcie, ktoré má vykonať.

Databázové otázky jazyka SQL potom vyzerajú napríklad takto: "Vráť mi 10 užívateľov s najvyšším hodnotením". Databáza takúto otázku pochopí, rozloží si ju na nejaké svoje inštrukcie a spracuje ju. Nám potom naozaj vráti požadovaný výsledok bez toho, aby sme tušili, ako k nemu došla. Pokiaľ vám príkaz prišiel ako nadsadenie, tak to tak nie je, príkazy naozaj takto vyzerajú, len sú písané 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.

Práca s databázou v phpMyAdmin

Najprv si ukážeme, ako vytvoriť databázu v nástroji phpMyAdmin. Každý projekt (web) má obvykle jednu databázu, ktorá obsahuje ďalšie tabuľky.

Tento krok za nás v praxi urobí prevádzkovateľ webhostingu a my dostaneme k dispozícii často práve jednu databázu, ktorá sa volá rovnako ako náš účet.

Vytvorenie databázy

Otvoríme si grafické rozhranie phpMyAdmin a klikneme hore na záložku Databases. Na novej karte vyplníme názov databázy, pomenujeme ju database_for_web. Ďalej nastavíme kódovanie databázy na angličtinu, z ponuky teda vyberieme hodnotu utf8_general_ci a klikneme na tlačidlo Create:

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

Pretože väčšina serverov s databázou používa ako operačný systém Linux, ktorý rozlišuje medzi veľkými a malými písmenami, používame pre databázy názvy iba malé písmená s podčiarkovovou (snake case) notáciou.

Odstránenie databázy

Skúsme si teraz databázu odstrániť. Klikneme na ikonu domčeka hore v ľavej paneli, potom znova na záložku Databases. Následne zaškrtneme políčko pri názve database_for_web a klikneme na možnosť Drop:

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

Potom sa otvorí dialógové okno, v ktorom potvrdíme, že chceme vybranú databázu zmazať:

Potvrdenie odstránenia MySQL databázy - MySQL databázy krok za krokom

Všimnime si SQL príkazu na odstránenie databázy, ktorý je v okne uvedený:

DROP DATABASE `database_for_web`;

Do slovenčiny by sme ich preložili ako: "Zahoď databázu database_for_web".

V SQL sa príkazy píšu veľkými písmenami. To preto, že je to lepšie odlíši od zvyšku dotazu alebo od kódu našej aplikácie. Názvy tabuliek, stĺpcov a ďalšie identifikátory píšeme malými písmenami s podtržníkovou notáciou. Je dobrým zvykom ich vkladať medzi spätné apostrofy alebo tzv. tupý prízvuk.

Tupý prízvuk

Tupý prízvuk na slovenskej klávesnici môžeme napísať pomocou pravého Alt a písmena ý:

Tupý prízvuk_AJ - MySQL databázy krok za krokom

Spustenie SQL dotazu

Teraz si databázu opäť vytvoríme, tentoraz však pomocou SQL príkazu. V hornej lište klikneme na položku SQL. Otvorí sa nám okno, kam môžeme písať priamo SQL dotazy.

Vytvorenie databázy

Do nového okna napíšeme príkaz na vytvorenie databázy:

CREATE DATABASE `database_for_web` CHARACTER SET utf8 COLLATE utf8_general_ci;

Časti CREATE DATABASE asi rozumieme, CHARACTER SET nastavuje znakovú sadu, COLLATE upresňuje porovnávanie. Znaková sada je súbor znakov, ktoré môže databáza obsahovať, porovnávanie sa väčšinou viaže k znakovej sade a určuje, ako sa znaky za seba radia. V dotaze máme nastavené utf8, pri porovnávaní upresňujeme, že chceme angličtinu. Písmená ci sú skratkou pre case insensitive, určujeme tým, že nechceme rozlišovať medzi veľkými a malými písmenami.

Potom klikneme na tlačidlo Go:

SQL príkaz na vytvorenie databázy phpMyAdmin - MySQL databázy krok za krokom

Vidíme, že sme docielili rovnaký výsledok.

Keby sme chceli opäť databázu zmazať, použijeme už spomínaný príkaz:

DROP DATABASE `database_for_web`;

Už vieme dva SQL príkazy, jeden na vytvorenie databázy a druhý na jej odstránenie. Ani jeden ale v našej aplikácii asi používať nebudeme, pretože databázu si stačí vytvoriť iba 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.

Poďme si ukázať, ako do novej databázy pridať novú tabuľku.

Vytvorenie databázovej tabuľky

Klikneme na názov databázy v ľavom stĺpci a tým ju otvoríme. phpMyAdmin nám zobrazí nové okno pre vytvorenie tabuľky.

Poďme si teda vytvoriť tabuľku užívateľov, ktorá bude obsahovať stĺpce pre meno, priezvisko, dátum narodenia a počet článkov. Na to má mať každá tabuľka stĺpec, ktorého hodnota je pre každú položku unikátna. Stĺpcov bude teda dokopy päť. Tabuľka pomenujeme users, vyplníme požadovaný počet stĺpcov a potvrdíme:

Vytvorenie tabuľky používateľov v phpMyAdmin - MySQL databázy krok za krokom

Otvorí sa nám naozaj veľa polí, ale tých sa vôbec nezľaknite:

Okno na vytvorenie tabuľky v phpMyAdmin - MySQL databázy krok za krokom

Vľavo najskôr vyplníme pod seba názvy našich stĺpcov, čo sú:

  • user_id,
  • first_name,
  • last_name,
  • birthdate,
  • article_count.

Všimnime si prvý názov, kde máme okrem id aj prefix tabuľky. Nie je to nutné, ale ak budeme mať v databáze viac tabuliek a každá z nich by mala stĺpec nazvaný iba id, čoskoro by sme sa medzi nimi mohli stratiť.

V druhom stĺpci zadávame dátové typy jednotlivých stĺpcov tabuľky. Prednastavený máme typ INT reprezentujúci celé čísla. Dátových typov je v SQL naozaj veľa, väčšinou si však vystačíme iba s niekoľkými. Na riadku user_id ponecháme INT, first_name a last_name nastavíme na VARCHAR, to je krátky text. birthdate nastavíme na DATE. Posledná, article_count, bude opäť typu INT.

Ďalší stĺpec, Length/Values, udáva maximálny počet znakov záznamu. Využijeme ho iba pri type VARCHAR a meno aj priezvisko nastavíme na 60 znakov.

Vo štvrtom stĺpci, Default, nastavíme hodnotu NULL, ktorá označuje nezadané, pre počet článkov. Predpokladáme totiž, že budeme môcť uložiť používateľa, ktorý žiadny článok ešte nenapísal.

Pokiaľ sme v starších verziách MySQL nezadali dáta pre všetky stĺpce, databáza do daného poľa automaticky vložila nejakú východiskovú hodnotu. Od verzie MySQL 5.7 je vypísaná chybová hláška: Warning: PDOStatement::execute(): SQLSTATE[HY000]: General error: 1364 Field 'xxx' doesn't have a default value a otázka sa nevykoná. Pokiaľ teda vytvárame stĺpec, ktorý nemusí mať vždy zadanú hodnotu, je potrebné mu nastaviť nejakú predvolenú.

Primárny kľúč

Ďalšie stĺpce preskočíme, vyplníme už iba stĺpec Index u user_id. Nastavíme tu hodnotu PRIMARY a zaškrtneme pole vedľa, ktoré je napísané A_I. Týmto sme stĺpec user_id nastavili ako primárny kľúč tabuľky. Kľúče, niekedy nazývané indexy, nám umožňujú identifikovať položku v tabuľke.

Primárny kľúč by mala mať každá tabuľka. Keď napríklad budeme chcieť používateľa vymazať, vymažeme ho podľa tohto kľúča, teda podľa unikátnej hodnoty user_id. Keby sme ho mazali podľa mena, mohli by sme zmazať niekoľko položiek, pretože napríklad Janov Novákov môžeme mať v databáze viac. Podľa primárneho kľúča vymažeme vždy iba toho jedného.

Zaškrtnutím poľa A_I (ako Auto Increment) nastavujeme, že sa bude hodnota user_id automaticky navyšovať a ID novo uloženého užívateľa bude vždy o 1 väčšia a teda vždy unikátna.

V hornej časti okna si všimnime možnosť Add field. Pokiaľ na začiatku zadáme menej stĺpcov, než potrebujeme, môžeme takto nový stĺpec do tabuľky doplniť.

Takto vyplnenú tabuľku teraz uložíme kliknutím na tlačidlo Save v pravej dolnej časti:

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

SQL dotaz pre tvorbu tabuľky

Tabuľka sa nám objaví v ľavom stĺpci, môžeme ju rozkliknúť, ale zatiaľ je prázdna:

Štruktúra vytvorenej tabuľky v phpMyAdmin - MySQL databázy krok za krokom

SQL dotaz pre vytvorenie tabuľky vyzerá takto:

CREATE TABLE `users` (
  `user_id` INT NOT NULL AUTO_INCREMENT,
  `first_name` VARCHAR(60) NOT NULL,
  `last_name` VARCHAR(60) NOT NULL,
  `birthdate` DATE NOT NULL,
  `articles_count` INT NULL DEFAULT NULL,
  PRIMARY KEY (`user_id`)
);

Prvý riadok je jasný, na ďalších riadkoch sa definujú jednotlivé stĺpce tabuľky a ich dátový typ. NOT NULL nám určuje povinný údaj. Pri type VARCHAR je uvedený v zátvorke aj počet znakov. AUTO_INCREMENT u user_id zaistí, že databáza každému novému užívateľovi priradí o unikátne ID. Keďže počet článku nemusí mať vždy zadanú hodnotu, máme ho tu ako nepovinný údaj s východiskovou hodnotou NULL. Nakoniec tu máme uvedený primárny kľúč tabuľky.

SQL dotazy pre prácu s tabuľkami nájdeme, keď rozklikneme záložku Console v dolnej časti:

SQL otázky v konzole phpMyAdmin - MySQL databázy krok za krokom

Odstránenie tabuľky

Odstránenie tabuľky je rovnaké, ako odstránenie databázy. V phpMyAdmin ju odstránime tlačidlom Odstrániť pri príslušnej tabuľke alebo zadaním SQL príkazu:

DROP TABLE `users`;

Skúste si takto tabuľku odstrániť a potom znova vytvoriť pomocou SQL dotazu.

V budúcej lekcii, MySQL krok za krokom - Vkladanie a mazanie dát v tabuľke , si tabuľku v databáze 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