Začínáme s MySQL, manipulace s tabulkami

V předminulém díle jsem se zmínil o tvorbě tabulek v MySQL. Dnes na tento díl tak trochu navážu a ukážu vám, jakými způsoby lze s těmito tabulkami dále pracovat a jak je upravovat.
U každé, sebelépe navržené, tabulky se časem ukáže potřeba její modifikace. Důvody mohou být různé. V některých případech je důvodem její špatný návrh, jindy potřeba rozšíření či drobné úpravy. Příčin může být zkrátka hodně a je důležité se s tímto nějakým způsobem vypořádat. Podobně jako jiné databázové produkty, tak i MySQL na toto myslí a dává vám široké možnosti dodatečné úpravy.

Jistě mi dáte za pravdu, že nikdo nemáme dokonalou paměť a tak si ani na včera vytvořenou strukturu tabulky nemusíme vždy vzpomenout. A to už vůbec nemluvím o tabulce, která byla vytvořena například před měsícem. Proto je vždy dobré si před následnou úpravou prohlédnout její strukturu. Existuje několik způsobů, kterými tak lze učinit, ale nejsnazší je ten následující:

DESC název_tabulky; 

Po odeslání tohoto příkazu se v MySQL monitoru vypíše tabulka s vlastnostmi jednotlivých polí. Tato tabulka obsahuje několik polí, jejichž význam je následující:

Název pole Popis
Fields V prvním poli (sloupci) naleznete seznam polí, které daná tabulka obsahuje.
Type Jak již z názvu vyplívá, tak v tomto poli naleznete informaci o datovém typu, který náleží příslušnému poli. Například char (20), int, date... apod.
Null Toto pole značí, jestli se do daného pole smí ukládat tzv. prázdná hodnota. Je-li ve výpisu napsáno YES, pak pole smí obsahovat prázdnou hodnotu. V opačném případě je pole prázdné a to značí, že jste použili atribut NOT NULL a pole nesmí obsahovat prázdnou hodnotu.
Key V tomto poli najdete seznam klíčů, které přísluší příslušnému poli v tabulce. (Poznámka: O klíčích bude zmínka v některém z příštích dílů - prozatím znáte pouze primární klíč, který se v této tabulce vypíše zkráceně jako PRI)
Default Toto pole obsahuje informaci o hodnotě (textu, čísle...), které se automaticky zapíše do pole v případě, že při aktualizačním dotazu (INSERT) do tohoto pole nevložíte žádnou informaci. V takovém případě se do daného pole uloží informace, která je uvedená právě v poli Default. Nejčastěji je zde uvedena hodnotu Null, která značí, že se do pole neuloží nic.
Extra Závěrečné pole obsahuje informaci o tom, které atributy dané pole má. Např. AUTO_INCREMENT

Úprava tabulky

Nyní již tedy víte, jakou má vámi vybraná tabulka strukturu. Dalším krokem tedy bude její samotná úprava. Na to slouží v MySQL příkaz alter table. Jeho kompletní syntaxi zde nebudu uvádět (v případě zájmu ji naleznete v manuálu), ale zmíním se jen o základních možnostech. Asi tou nejčastější operací, kterou budete provádět, bude přidávání nových polí. Chcete-li tedy do vámi zvolené tabulky přidat nové pole, pak použijete následující syntaxi:

ALTER TABLE název_tabulky ADD pole datový_typ;

Konkrétně to může vypadat třeba následovně:

ALTER TABLE vyrobek ADD rok_vyroby year;

Předcházející řádek přidá do tabulky vyrobek nové pole s informací o roku výroby. Další častou operací, se kterou se můžete často setkat, je změna či lépe řečeno úprava datového typu. Příklad: Při tvorbě tabulky jste u pole se jménem zadali maximální délku řetězce na 10 znaků a po čase jste zjistili, že je to málo a chtěli by jste maximální počet znaků zvýšit. K tomuto opět slouží příkaz Alter Table:

ALTER TABLE uzivatel CHANGE  jmeno jmeno char (20);

Předcházející řádek změnil maximální velikost pole z deseti znaků na dvacet. Obdobnou syntaxí lze taktéž měnit název pole:

ALTER TABLE uzivatel CHANGE jmeno kresni_jmeno char (20);

Po krátké době se můžete rozhodnout, že některé pole již v tabulce nepotřebujete a tak jej odstraníte:

ALTER TABLE uzivatel DROP vek;

Nyní se podíváme trochu výše - konkrétně na samotné tabulky. Při jejím návrhu jste každé z nich přidělily název, který jasně reprezentuje to, co daná tabulka obsahuje. Leč mohou nastat důvody, proč chcete tento název změnit. K tomuto slouží příkaz rename table.

RENAME TABLE uzivatel TO aktivni_uzivatele;

Následně se třeba rozhodnete pro zrušení tabulky.

DROP TABLE aktivni_uzivatele;

Jak vidíte, tak samotná úprava tabulek v MySQL je snadná a to jsem ve stručnosti shrnul pouze ty základní možnosti.

INDEXY

Nyní se zmíním o důležité věci a tou jsou indexy. Index je určité množství dat (či častěji uváděná datová struktura), které umožňuje rychlejší vykonávání vyhledávacích dotazů. Dejme tomu, že máte tabulku, která má 10 000 záznamů. V případě, že budete chtít z této tabulky konkrétní záznam např. o uživateli, tak jednoduše využijete vyhledávací dotaz následujícího znění:

SELECT * FROM uzivatele WHERE  prijmeni =“Hofman“;

(Poznámka: Pokud nerozumíte syntaxi tohoto dotazu, tak nezoufejte. O něm bude jeden z připravovaných dílů.)

V takto formulovaném dotazu a při nepoužití indexů SQL server projde celou tabulku a záznam po záznamu bude zkoušet, zda-li nevyhovuje zadanému kriteriu. Jistě vás napadla myšlenka, jaké by to bylo krásné, kdyby vyhledávací dotaz přímo skočil k písmenu H. A právě k tomuto slouží indexy.

Každý správně vytvořený index totiž může podstatnou měrou zvýšit rychlost vyhledávacích dotazů. Nic ale není ideální a tvorba indexů má i své nevýhody. Asi tou největší je pomalejší vykonávání aktualizačních dotazů INSERT, UPDATE či DELETE. Vytvářet indexy by jste tedy měli s rozmyslem tj. nevytvářet jich zbytečně mnoho.

(Poznámka: Maximální počet indexů v tabulce může být 16.)

Zvláštní záležitostí jsou indexy u polí s primárním klíčem (PRIMARY KEY). U těchto polí index nedefinujte! V těchto polí je totiž index automaticky vytvořen. Je to logické. Pole s primárním klíčem totiž neobsahují duplicitní hodnoty a jsou tudíž pro tvorbu indexů vhodné.

Při vlastní tvorbě indexů se řiďte hlavně podle vyhledávacích dotazů. Pokud vezmu za příklad již dříve zmíněný select * from uzivatele where prijmeni =“Hofman“, pak bude dobré vytvořit index pro pole prijmeni, protože je předpoklad, že podle něj budeme vyhledávat. Naopak je zase zbytečné vytvářet index pro případné pole s křestním jménem, protože podle něj se nejspíš vyhledávat nebude. Znovu bych rád zdůraznil, že by jste měli indexy volit s rozmyslem.

Nyní se tedy podívejme na praktickou realizaci indexů. Tu provedete následovně:

CREATE INDEX název_indexu ON název_tabulky (seznam_polí);

Předchozí syntaxe je, myslím, vcelku jasná - zastavím se pouze u seznamu polí. Pole pro indexování totiž nemusí být pouze jedno. Může totiž nastat případ, že budete např. často vybírat jak podle příjmení, tak jména. V tomto případě jistě rádi využijete možnost indexu pro pole příjmení a jména zároveň.

CREATE INDEX jmeno_a_prijmeni ON uzivatele (prijmeni, jmeno);

Index můžete samozřejmě vložit i do již existující tabulky a to pomocí již zmíněného příkazu alter table.

ALTER TABLE uzivatele ADD INDEX jmeno_a_prijmeni (prijmeni, jmeno);

Stejně lehce, jak lze v MySQL indexy vytvořit, tak lehce jdou i zrušit.

DROP INDEX jmeno_a_prijmeni ON uzivatele;

Závěrem

Jak vidíte, tak veškerá manipulace s tabulkami není v žádném případě složitá a tudíž ji zvládne každý. Problematika indexů je o něco složitější, ale i tak myslím, že je vcelku pochopitelná.
Diskuze (1) Další článek: Domácí zábavní centrum od H-P

Témata článku: Software, Programování, Manipulace, Alter, Častá operace, M/s, Špatný návrh, Tab, Maximální hodnota, Špatný klíč, Tabulka, Pole, Krásný měsíc, Důležitý sloupec, Následující řádek, Drobná zmínka, MySQL, Syntax, Zvláštní význam, Drop, Code, Index, Zrušení výroby


Určitě si přečtěte

Antivir zdarma: 8 bezplatných řešení, která zatočí s havětí v počítači

Antivir zdarma: 8 bezplatných řešení, která zatočí s havětí v počítači

** Součástí Windows 10 je integrovaný antivirový program. Stačí to? ** Představíme vám sedm aplikací na boj proti virům a malwaru ** Všechny jsou k dispozici zdarma a některé ani nemusíte instalovat

Karel Kilián | 30

Šmírování kamerami Googlu: Koukněte, co šíleného se objevilo na Street View

Šmírování kamerami Googlu: Koukněte, co šíleného se objevilo na Street View

Google stále fotí celý svět do své služby Street View. A novodobou zábavou je hledat v mapách Googlu vtipné záběry. Podívejte se na výběr nejlepších!

redakce | 6

Google Coral: Raspberry Pi s čipem, který zpracuje 4 biliony operací za sekundu

Google Coral: Raspberry Pi s čipem, který zpracuje 4 biliony operací za sekundu

** Je to velké jako Raspberry Pi ** Ale je to až o několik řádů rychlejší ** Dorazil nám exotický Google Coral s akcelerátorem Edge TPU

Jakub Čížek | 18

Starý smartphone nemusí skončit v koši. 10 způsobů, jak ho ještě můžete využít

Starý smartphone nemusí skončit v koši. 10 způsobů, jak ho ještě můžete využít

** Co dělat s vysloužilým chytrým telefonem? Neházejte ho do koše! ** Našli jsme pro vás deset možností, jak ho prakticky využít ** I stará zařízení tak mohou být užitečná

Karel Kilián | 47


Aktuální číslo časopisu Computer

Megatest 20 procesorů

Srovnání 15 True Wireless sluchátek

Vyplatí se tisknout fotografie doma?

Vybíráme nejlepší základní desky