Obsah Úvod
13
Část I: Úvod do MySQL Kapitola 1
Instalace MySQL Instalace na Linuxu Instalace ve Windows Instalace na OS X Konfigurace systému Ověření funkčnosti systému Nastavení hesla uživatele root Odstranění anonymních účtů Vytvoření účtu pro běžnou práci Shrnutí
23 24 24 26 26 28 29 29 29 30
Kapitola 2
Krátká prohlídka Adresářová struktura MySQL Přehled spustitelných souborů Přehled uživatelských rozhraní Stručné představení monitoru MySQL Shrnutí
31 31 32 32 33 35
Část II: Návrh a tvorba databází v MySQL Kapitola 3
Rychlokurz navrhování databáze Principy a terminologie databází Entity a relace Tabulky Sloupce neboli abributy Řádky a záznamy Klíče Funkční závislosti Schémata Principy návrhu databáze
41 41 41 42 43 43 43 43 44 44
Obsah
6 Redundance versus ztráta dat Anomálie Prázdné hodnoty Normalizace První normální forma Druhá normální forma Třetí normální forma Boyce-Coddova normální forma Vyšší normální formy Shrnutí
44 45 45 46 46 48 49 50 50 50
Kapitola 4
Tvorba databází, tabulek a indexů Velikost písmen Identifikátory v MySQL Vytváření databáze Výběr databáze Vytváření tabulek Příklad vytvoření tabulky Příkaz CREATE TABLE Typy sloupců a dat v MySQL Číselné typy Řetězcové a textové typy Typy DATE a TIME Vytváření indexů Odstraňování databází, tabulek a indexů Modifikace stávající struktury tabulek Shrnutí
55 56 56 57 57 57 57 62 65 65 66 67 68 68 69 70
Část III: Použití MySQL Kapitola 5
Vkládání, odstraňování a aktualizace údajů Příkaz INSERT Příkaz REPLACE Příkaz DELETE Příkaz TRUNCATE Příkaz UPDATE Načítání dat pomocí LOAD DATA INFILE Shrnutí
79 79 83 84 85 86 86 88
Kapitola 6
Provádění dotazů v MySQL Základní informace o příkazu SELECT Jednoduché dotazy Výběr konkrétních sloupců Absolutní specifikace databází a tabulek
93 93 94 94 95
Obsah Aliasy Výběr konkrétních řádků pomocí klauzule where Odstranění duplicit pomocí DISTINCT Klauzule GROUP BY Výběr konkrétních skupin pomocí klauzule HAVING Uspořádání výsledků hledání pomocí klauzule ORDER BY Omezení výsledků hledání pomocí klauzule LIMIT Shrnutí
7 96 97 98 99 101 101 102 103
Kapitola 7
Pokročilé dotazy Provádění dotazů ve více tabulkách pomocí spojování Spojování dvou tabulek Spojování více tabulek Spojování tabulky samé se sebou – vlastní spojení Rozdílné typy spojení Základní spojení LEVÉ a PRAVÉ spojení Vytváření poddotazů Poddotazy pro odvozené tabulky Poddotazy s jedinou hodnotou Poddotazy s logickými výrazy Volby příkazu SELECT Shrnutí
107 107 107 109 110 111 111 112 113 113 114 115 116 118
Kapitola 8
Použití vestavěných funkcí v příkazu SELECT Operátory Aritmetické operátory Relační operátory Logické operátory Funkce pro řízení toku Řetězcové funkce Funkce pro zpracování řetězců Funkce pro porovnávání řetězců Numerické funkce Datové a časové funkce Funkce pro konverzi typu Další funkce Funkce pro klauzuli GROUP BY Shrnutí
121 122 122 122 123 124 125 125 126 129 130 131 131 132 133
Část IV: Typy tabulek a transakcí v MySQL Kapitola 9
Typy tabulek v MySQL
139
Obsah
8 Tabulky ISAM Tabulky MyISAM Komprimace tabulek MyISAM Fulltextové hledání v tabulkách MyISAM Tabulky InnoDB Tabulky BerkeleyDB (BDB) Tabulky MERGE Tabulky HEAP Shrnutí
140 141 142 142 145 146 147 148 149
Kapitola 10
Transakce s tabulkami InnoDB Co jsou transakce? Práce s transakcemi v MySQL Nastavení režimu autocommit Zámky Transakční model InnoDB Vyhovění požadavkům ACID Izolace transakcí Shrnutí
153 153 156 156 157 158 159 159 161
Část V: Správa MySQL Kapitola 11
Správa práv uživatele Vytvoření uživatelského účtu příkazy GRANT a REVOKE Přidělování práv Úrovně práv Uživatelská práva Administrátorská práva Vyhodnocování práv Příkaz REVOKE Tabulky práv Tabulka user Tabulka db Tabulka host Tabulka tables_priv Tabulka columns_priv Shrnutí
167 167 167 169 169 169 170 171 171 171 172 173 173 174 174
Kapitola 12
Konfigurace MySQL Nastavení konfiguračních voleb MySQL Nastavení voleb pro mysqld Nastavení voleb konfigurace tabulek InnoDB Konfigurační volby pro více instalací Konfigurace pro internacionalizaci Shrnutí
179 179 181 182 183 184 184
Obsah
9
Kapitola 13
Správa databáze Spuštění a zastavení serveru MySQL Získávání informací o serveru a databázích Výběr informací o databázi Zobrazení stavu serveru a proměnných Zobrazení informací o procesu Zobrazení informací o přidělení a právech Zobrazení informací o tabulkách Nastavení proměnných Ukončení procesů Vymazání paměti cache Vysvětlení protokolových souborů Přehled voleb pro mysqladmin Shrnutí
187 187 188 189 189 190 190 191 191 192 192 192 193 194
Kapitola 14
Zálohování a obnovení po havárii Zálohování a obnova databáze Zálohování a obnova pomocí mysqldump Zálohování a obnova pomocí mysqlhotcopy Ruční zálohování a obnova Zálohování a obnova pomocí příkazů BACKUP TABLE a RESTORE TABLE Obnova z binárního protokolu Test zálohování Kontrola a oprava tabulek Kontrola a oprava tabulek příkazy CHECK a REPAIR Kontrola a oprava tabulek pomocí myisamchk Kontrola a oprava tabulek pomocí mysqlcheck Shrnutí
197 197 198 202 202 203 204 204 204 205 205 206 207
Kapitola 15
Zabezpečení instalace MySQL Jak funguje systém práv v praxi Zabezpečení účtů Nastavení hesla pro účet root Odstranění anonymních účtů Nebezpečná práva Hesla a šifrování Zabezpečení instalačních souborů Nespouštějte mysqld z účtu root Přístup a práva v operačním systému Filtrování uživatelských dat Další tipy Připojení pomocí SSL Fyzické zabezpečení instalace Shrnutí
211 211 212 212 212 213 213 213 213 213 214 214 214 215 215
Obsah
10
Kapitola 16
Replikace databáze Principy replikace Poznámka k verzím Vytvoření a konfigurace replikace Vytvoření uživatele pro replikaci Kontrola konfigurace hlavního serveru Vytvoření snímku hlavního serveru Konfigurace podřízeného serveru Spuštění podřízených serverů Náročnější topologie Budoucnost replikace Shrnutí
219 219 220 220 221 221 222 223 224 225 226 226
Část VI: Optimalizace MySQL Kapitola 17
Optimalizace konfigurace serveru MySQL Kompilace a linkování s ohledem na rychlost Vylaďování parametrů serveru Vylaďování dalších faktorů Shrnutí
231 231 232 234 234
Kapitola 18
Optimalizace databáze Co zpomaluje databázi MySQL? Správná rozhodnutí při návrhu Použití indexů pro optimalizaci Příkaz ANALYZE TABLE Příkaz OPTIMIZE TABLE Shrnutí
237 237 238 238 239 239 240
Kapitola 19
Optimalizace dotazů Hledání pomalých dotazů Testování dotazů Protokolování pomalých dotazů Zjišťování jak se provádí dotazy pomocí EXPLAIN Pochopení interní optimalizace dotazů MySQL Tipy pro optimalizaci Shrnutí
Rejstřík
243 243 243 244 245 247 247 248
251