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í.

Lekce 2 - MySQL krok za krokem - Vytvoření databáze a tabulky

V minulé lekci, MySQL krok za krokem - Úvod do MySQL a příprava prostředí, jsme si řekli něco o relačních databázích a připravili jsme si prostředí.

V dnešním MySQL tutoriálu si představíme jazyk SQL. Poté si vytvoříme databázi a přidáme do ní první tabulku s daty.

Jazyk SQL

Akronym SQL označuje Structured Query Language, tedy strukturovaný dotazovací jazyk. SQL je jazyk deklarativní. To znamená, že počítači pouze říkáme, co má být výsledkem. Již nás nezajímá, jak tohoto výsledku počítač dosáhne. U imperativních jazyků pak počítači zadáváme krok po kroku instrukce, které má vykonat.

Databázové dotazy jazyka SQL pak vypadají například takto: "Vrať mi 10 uživatelů s nejvyšším hodnocením". Databáze takový dotaz pochopí, rozloží si ho na nějaké své instrukce a zpracuje jej. Nám poté opravdu vrátí požadovaný výsledek, aniž bychom tušili, jak k němu došla. Pokud vám příkaz přišel jako nadsázka, tak tomu tak není, příkazy opravdu takto vypadají, jen jsou psány anglicky.

SQL se původně jmenovalo SEQUEL (Structured English Query Language) a vzniklo v laboratořích společnosti IBM s cílem vytvořit jazyk, kterým by se dalo komunikovat s databází jednoduchou angličtinou. SQL (relační) databáze se poté rozšiřovaly a ujaly. Dnes se prakticky nic jiného nepoužívá a i když má SQL v objektovém programování značné nevýhody, firmám se nechce přecházet na nic jiného (i když existují alternativní řešení). Ale to jsme odbočili.

Práce s databází v phpMyAdmin

Nejprve si ukážeme, jak vytvořit databázi v nástroji phpMyAdmin. Každý projekt (web) má obvykle jednu databázi, která obsahuje další tabulky.

Tento krok za nás v praxi udělá provozovatel webhostingu a my dostaneme k dispozici často právě jednu databázi, která se jmenuje stejně, jako náš účet.

Vytvoření databáze

Otevřeme si grafické rozhraní phpMyAdmin a klikneme nahoře na záložku Databáze. Na nové kartě vyplníme název databáze, pojmenujeme ji databaze_pro_web. Dále nastavíme kódování databáze na češtinu, z nabídky tedy vybereme hodnotu utf8_czech_ci a klikneme na tlačítko Vytvořit:

Vytvoření MySQL databáze - MySQL/MariaDB databáze krok za krokem

Databáze a její položky pojmenováváme bez diakritiky. Protože většina serverů s databází používá jako operační systém Linux, který rozlišuje mezi velkými a malými písmeny, používáme pro jejich názvy pouze malá písmena s podtržítkovou (snake case) notací.

Odstranění databáze

Zkusme si nyní databázi odstranit. Klikneme na ikonu domečku nahoře v levé panelu, poté znovu na záložku Databáze. Následně zaškrtneme políčko u názvu databáze_pro_web a klikneme na možnost Odstranit:

Odstranění MySQL databáze - MySQL/MariaDB databáze krok za krokem

Poté se otevře dialogové okno, v němž potvrdíme, že chceme vybranou databázi smazat:

Potvrzení odstranění MySQL databáze - MySQL/MariaDB databáze krok za krokem

Všimněme si SQL příkazu pro odstranění databáze, který je v okně uveden:

DROP DATABASE `databaze_pro_web`;

Do češtiny bychom je přeložili jako: "Zahoď databázi databaze_pro_web".

V SQL se příkazy píšou velkými písmeny. To proto, že je to lépe odliší od zbytku dotazu nebo od kódu naší aplikace. Názvy tabulek, sloupců a další identifikátory píšeme malými písmeny s podtržítkovou notací. Je dobrým zvykem je vkládat mezi zpětné apostrofy neboli tzv. tupý přízvuk.

Tupý přízvuk

Tupý přízvuk na české klávesnici můžeme napsat pomocí pravého Alt a písmene ý:

Tupý přízvuk - MySQL/MariaDB databáze krok za krokem

Spuštění SQL dotazu

Nyní si databázi opět vytvoříme, tentokrát však pomocí SQL příkazu. V horní liště klikneme na položku SQL. Otevře se nám okno, kam můžeme psát přímo SQL dotazy.

Vytvoření databáze

Do nového okna napíšeme příkaz pro vytvoření databáze:

CREATE DATABASE `databaze_pro_web` CHARACTER SET utf8 COLLATE utf8_czech_ci;

Části CREATE DATABASE asi rozumíme, CHARACTER SET nastavuje znakovou sadu, COLLATE upřesňuje porovnávání. Znaková sada je soubor znaků, které může databáze obsahovat, porovnávání se většinou váže ke znakové sadě a určuje, jak se znaky za sebe řadí, tedy české "Č" je po "C" a tak dále. Oboje máme v dotazu nastaveno na utf8, u porovnávání upřesňujeme, že chceme češtinu. Písmena ci jsou zkratkou pro case insensitive, určujeme tím, že nechceme rozlišovat mezi velkými a malými písmeny.

Poté klikneme na tlačítko Proveď:

SQL příkaz na vytvoření databáze phpMyAdmin - MySQL/MariaDB databáze krok za krokem

Vidíme, že jsme docílili stejného výsledku.

Kdybychom chtěli opět databázi smazat, použijeme již zmíněný příkaz:

DROP DATABASE `databaze_pro_web`;

Už umíme dva SQL příkazy, jeden pro vytvoření databáze a druhý pro její odstranění. Ani jeden ale v naší aplikaci asi používat nebudeme, protože databázi si stačí vytvořit jen jednou a můžeme to udělat takto jednoduše v administračním nástroji. To samé platí pro tvorbu tabulek. Teprve samotná práce s daty v SQL pro nás bude klíčová, brzy se k ní dostaneme.

Pojďme si ukázat, jak do nové databáze přidat novou tabulku.

Vytvoření databázové tabulky

Klikneme na název databáze v levém sloupci a tím ji otevřeme. phpMyAdmin nám zobrazí nové okno pro vytvoření tabulky.

Pojďme si tedy vytvořit tabulku uživatelů, která bude obsahovat sloupce pro jméno, příjmení, datum narození a počet článků. K tomu má mít každá tabulka sloupec, jehož hodnota je pro každou položku unikátní. Sloupců bude tedy dohromady pět. Tabulka pojmenujeme uzivatele, vyplníme požadovaný počet sloupců a potvrdíme:

Vytvoření tabulky uživatelů v phpMyAdmin - MySQL/MariaDB databáze krok za krokem

Otevře se nám opravdu hodně polí, ale těch se vůbec nelekejte:

Okno pro vytvoření tabulky v phpMyAdmin - MySQL/MariaDB databáze krok za krokem

Vlevo nejdříve vyplníme pod sebe názvy našich sloupců, což jsou:

  • uzivatele_id,
  • jmeno,
  • prijmeni,
  • datum_narozeni,
  • pocet_clanku.

Všimněme si prvního názvu, kde máme kromě id také prefix tabulky. Není to nutné, ale pokud budeme mít v databázi více tabulek a každá z nich by měla sloupec nazvaný pouze id, brzy bychom se mezi nimi mohli ztratit.

V druhém sloupci zadáváme datové typy jednotlivých sloupců tabulky. Přednastavený máme typ INT reprezentující celá čísla. Datových typů je v SQL opravdu mnoho, většinou si však vystačíme jen s několika. Na řádku uzivatele_id ponecháme INT, jmeno a prijmeni nastavíme na VARCHAR, to je krátký text. datum_narozeni nastavíme na DATE. Poslední, pocet_clanku, bude opět typu INT.

Další sloupec, Délka/množina, udává maximální počet znaků záznamu. Využijeme jej pouze u typu VARCHAR a jméno i příjmení nastavíme na 60 znaků.

Ve čtvrtém sloupci, Výchozí, nastavíme hodnotu NULL, která označuje nezadáno, pro počet článků. Předpokládáme totiž, že budeme moci uložit uživatele, který žádný článek ještě nenapsal.

Pokud jsme ve starších verzích MySQL nezadali data pro všechny sloupce, databáze do daného pole automaticky vložila nějakou výchozí hodnotu. Od verze MySQL 5.7 je vypsána chybová hláška: Warning: PDOStatement::execute(): SQLSTATE[HY000]: General error: 1364 Field 'xxx' doesn't have a default value a dotaz se neprovede. Pokud tedy vytváříme sloupec, který nemusí mít vždy zadanou hodnotu, je třeba mu nastavit nějakou výchozí.

Primární klíč

Další sloupce přeskočíme, vyplníme již pouze sloupec Index u uzivatele_id. Nastavíme zde hodnotu PRIMARY a zaškrtneme pole vedle, které je nadepsáno A_I. Tímto jsme sloupec uzivatele_id nastavili jako primární klíč tabulky. Klíče, někdy nazývané indexy, nám umožňují identifikovat položku v tabulce.

Primární klíč by měla mít každá tabulka. Když například budeme chtít uživatele vymazat, vymažeme ho podle tohoto klíče, tedy podle unikátní hodnoty uzivatele_id. Kdybychom ho mazali podle jména, mohli bychom smazat několik položek, protože třeba Janů Nováků můžeme mít v databázi více. Podle primárního klíče vymažeme vždy jen toho jednoho.

Zaškrtnutím pole A_I (jako Auto Increment) nastavujeme, že se bude hodnota uzivatele_id automaticky navyšovat a ID nově uloženého uživatele bude vždy o 1 větší a tedy vždy unikátní.

V horní části okna si všimněme možnosti Přidat pole. Pokud na začátku zadáme méně sloupců, než potřebujeme, můžeme takto nový sloupec do tabulky doplnit.

Takto vyplněnou tabulku nyní uložíme kliknutím na tlačítko Uložit v pravé dolní části:

Vytvoření nové tabulky v phpMyAdmin - MySQL/MariaDB databáze krok za krokem

SQL dotaz pro tvorbu tabulky

Tabulka se nám objeví v levém sloupci, můžeme ji rozkliknout, ale zatím je prázdná:

Struktura vytvořené tabulky v phpMyAdmin - MySQL/MariaDB databáze krok za krokem

SQL dotaz pro vytvoření tabulky vypadá takto:

CREATE TABLE `uzivatele` (
  `uzivatele_id` INT NOT NULL AUTO_INCREMENT,
  `jmeno` VARCHAR(60) NOT NULL,
  `prijmeni` VARCHAR(60) NOT NULL,
  `datum_narozeni` DATE NOT NULL,
  `pocet_clanku` INT NULL DEFAULT NULL,
  PRIMARY KEY (`uzivatele_id`)
);

První řádek je jasný, na dalších řádcích se definují jednotlivé sloupce tabulky a jejich datový typ. NOT NULL nám určuje povinný údaj. U typu VARCHAR je uveden v závorce i počet znaků. AUTO_INCREMENT u uzivatele_id zajistí, že databáze každému novému uživateli přiřadí o unikátní ID. Jelikož počet článku nemusí mít vždy zadanou hodnotu, máme jej zde jako nepovinný údaj s výchozí hodnotou NULL. Nakonec zde máme uveden primární klíč tabulky.

SQL dotazy pro práci s tabulkami nalezneme, když rozklikneme záložku Konzole v dolní části:

SQL dotazy v konzoli phpMyAdmin - MySQL/MariaDB databáze krok za krokem

Odstranění tabulky

Odstranění tabulky je stejné, jako odstranění databáze. V phpMyAdmin ji odstraníme tlačítkem Odstranit u příslušné tabulky nebo zadáním SQL příkazu:

DROP TABLE `uzivatele`;

Zkuste si takto tabulku odstranit a poté znovu vytvořit pomocí SQL dotazu.

V příští lekci, MySQL krok za krokem - Vkládání a mazání dat v tabulce, si tabulku v databázi naplníme nějakými daty :)


 

Předchozí článek
MySQL krok za krokem - Úvod do MySQL a příprava prostředí
Všechny články v sekci
MySQL/MariaDB databáze krok za krokem
Přeskočit článek
(nedoporučujeme)
MySQL krok za krokem - Vkládání a mazání dat v tabulce
Článek pro vás napsal David Hartinger
Avatar
Uživatelské hodnocení:
652 hlasů
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 se informační technologie naučil na Unicorn University - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity