Ovládněte MySQL pomocí phpMyAdmin

1. 5. 2008

Sdílet

V minulých článcích jste se dozvěděli, jak testovat webové aplikace na svém domácím PC, následně vám byla p...


V minulých článcích jste se dozvěděli, jak testovat webové aplikace na svém domácím PC, následně vám byla přiblížena databázová platforma a dotazovací jazyk SQL na databázovém serveru MySQL. Dnes se podíváme na to, jak tuto databázi pohodlně spravovat pomocí webového rozhraní phpMyAdmin.
Pro začátek se podíváme pouze na nejdůležitější funkce tohoto rozhraní, neboť jde o velmi intuitivní a přehledný nástroj, takže práce s ním je jednoduchá, příjemná a poměrně rychlá.
Budeme předpokládat, že již máte webové rozhraní phpMyAdmin nainstalováno a dostupné na svém hostingu, testovacím serveru či domácím PC. Jako první krok se tak můžeme přihlásit pomocí formuláře. Do polí Login a Heslo vepíšeme námi nastavené či přidělené hodnoty a klikneme na tlačítko Proveď. Pokud jste zadali údaje správně, dostanete se na výchozí stránku, na níž se nacházejí ovládací prvky jako na přiloženém obrázku nebo v podobném rozložení.
Stránka je rozdělena do dvou hlavních částí, v levé části naleznete soupis již vytvořených databází a základní ovládací tlačítka. V pravé části se nalézají nejdůležitější odkazy na statistiky, nastavení a dokumentaci. V případě problému rozhodně doporučujeme si dokumentaci přečíst a případný problém s ní nejprve konfrontovat.
Vytvoření databáze
Na úvodní stránce po přihlášení se nachází kouzelná formulka Vytvořit novou databázi. Tento formulář, který budeme občas potřebovat, slouží – jak je z jeho popisku ostatně zřejmé – pro vytvoření databáze. Stačí do něj jednoduše vepsat název, který pro budoucí databáze požadujeme, a nastavíme Porovnávání – pro české znaky lze použít tyto:
? ucs2_czech_ci,
? utf8_czech_ci,
? cp1250_czech_cs,
? latin2_czech_cs.
Ze zkušenosti doporučujeme používat utf8_czech_ci, která je pro většinu webových aplikací nejvhodnější. Co znamenají dvou- až třípísmenné zkratky na konci názvu jednotlivých porovnávání naleznete v rámečku. Do pole pro název databáze napíšeme textový řetězec, v němž lze použít všechny znaky latinské abecedy bez háčků a čárek, malá i velká písmena a čísla. Víceslovné názvy databáze oddělujte pro přehlednost podtržítkem; mezery lze použít také, ale může to být někdy problematické, zvykněte si proto na podtržítka a malá písmena. Název pak většinou vypadá následovně: nazev_databaze. Po vložení názvu do databáze nastavíme porovnání a klikneme na tlačítko Vytvořit. Pakliže jsme zadali název správně, objevilo se okno podobné tomu na obrázku.

Databázi lze také vytvořit pomocí SQL dotazu:
CREATE DATABASE 'testovaci_databaze_pcw' DEFAULT CHARACTER SET utf8 COLLATE utf8_czech_ci;
Ten je rovněž možné vidět na obrázku.

Vytvoření tabulky

Na obrázku vidíme další formulář Vytvořit novou tabulku v databázi. Při vytváření tabulek budeme postupovat podobně jako při vytváření databází. Zadáme název a počet sloupců, jež má naše tabulka obsahovat, a klikneme na tlačítko Vytvořit. Pro názornost jsme zvolili tři sloupce, jejichž nastavení si můžete prohlédnout na dalším obrázku.
Tabulku lze rovněž vytvořit pomocí SQL dotazu:
CREATE TABLE 'testovaci_databaze_pcw'testovaci_tabulka_1' (
'id' BIGINT NOT NULL AUTO_INCREMENT ,
'jmeno' VARCHAR(16) CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL ,
'datum_narozeni' DATE NOT NULL ,
PRIMARY KEY ('id')
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_czech_ci ;

Tento úkon můžete vidět na obrázku. Nyní již můžeme přidávat samotná data, jako položky tabulky, případně upravit vlastnosti tabulky, přidat další sloupce, mazat je či upravovat.

Zajímavé funkce

PhpMyAdmin je velmi inteligentní rozhraní a nabízí spoustu různých vymožeností, z nichž si popíšeme ty důležité a zajímavé, které se nám jistě mohou někdy v budoucnu hodit.

Okno SQL

Na dalším obrázku vidíme velkého pomocníka, a sice SQL okno, které se zapíná pomocí tlačítka v levé části hlavní obrazovky. Toto okno slouží pro rychlé psaní SQL dotazů, import dat a také jako ukazatel historie provedených příkazů daného připojení. PhpMyAdmin generuje SQL dotazy při jakékoliv akci, a tak nenásilně „učí“ uživatele dotazovací jazyk SQL. Někdy může být výhodné omezit klikání do formulářů a místo toho jednoduše zkopírovat SQL dotaz, a ten případně upravit podle vlastních představ. Výsledek vašeho konkrétního dotazu uvidíte v hlavním okně s otevřeným phpMyAdminem. Doporučujeme používat vlastní dotazy, neboť zrychlují a zefektivňují práci s MySQL. Pozor však na chyby, které můžete udělat, a poškodit tak data uložená v databázi. Z tohoto důvodu používejte okno SQL s rozvahou, neboť zde více než kdy jindy platí upravené přísloví: „dvakrát dotaz piš a jednou se dotazuj“.
Záložka Importovat soubor je určena pro import souborů do databáze ve chvíli, kdy je máte uloženy v tzv. SQL Dumpu, což je soubor exportovaný z MySQL s databázovou strukturou, případně i s daty, jež lze pomocí okna SQL rychle importovat. Na pevném disku najdete soubor s SQL Dumpem a provedete import, což spustí dotaz SQL uložený v souboru – a data jsou následně dostupná ve vaší databázi.

Informace o stavu MySQL

Po přihlášení k phpMyAdminu se na hlavní stránce nachází odkaz Informace o stavu MySQL jakožto první odkaz pod formulářem pro vytváření databází. Když na něj kliknete, můžete se dočíst nejrůznější informace o serveru, na němž svou databázi provozujete. Jak můžete vidět na obrázku, statistiky jsou velmi dlouhé a bohužel rozsah článku nám nedovolí představit všechna zajímavá okna. Proto se zkuste na tyto statistiky doma podívat sami, jen namátkou bychom vás rádi upozornili například na časový údaj o spouštění serveru, který může být někdy zajímavý. Je totiž běžné, že MySQL servery dokáží bez problému fungovat i stovky dnů bez přerušení, avšak na některých placených hostingových službách je tato doba několikanásobně kratší. Počet dotazů považujeme také za velmi zajímavé číslo, neboť udává počet dotazů, které byl server od svého spuštění schopen zpracovat. Najdete zde opravdu mnoho zajímavých statistik, které vám mohou být při práci s databází užitečné.

Systémové proměnné MySQL

V pořadí dalším odkazem Systémové proměnné MySQL se dostaneme na stránku se dvěma sloupci, kde nalevo vidíme typ proměnné a vpravo její vlastnosti, případně stav proměnné. Důležitá jsou pro nás hlavně omezení, jež mohou být (a většinou také jsou) na každém serveru nastavena jinak, a proto při určitých problémech právě zde můžeme najít odpověď, proč něco někde funguje a jinde zase ne.

Procesy

Po kliknutí na odkaz Procesy se provede SQL dotaz.
SHOW PROCESSLIST – Vypíše právě probíhající procesy na MySQL serveru a zobrazí jejich id, uživatele, který ho vykonává, hostitele, příkaz, čas, status a info. Informace jsou aktuální a jsou brány z doby vykonávání procesu. Pokud je server zatížen zcela minimálně, vypíše se pouze jeden řádek, a to právě dotaz SHOW PROCESSLIST, který jste právě vykonali.
Znakové sady a porovnávání – V případě, že nepřipravujete aplikaci pro česká data a potřebovali byste znát vhodné kódování pro určitý jazyk, phpMyAdmin vypíše všechna kódování a porovnávání po kliknutí na odkaz Znakové sady a porovnávání. V tabulce je pak možné jednoduše vyhledat vhodná kódování pro jazyk, v němž bude stránka (či webová aplikace) ukládat data.
Úložiště – V MySQL lze používat několik úložišť pro samotné ukládání dat. Jednotlivé možnosti a jejich vlastnosti najdete právě pod odkazem Úložiště, který vám ukáže možná úložiště a po kliknutí na jeho název rovněž vypíše vlastnosti, s nimiž se může poté pracovat. Existuje tak možnost porovnat, které z úložišť se pro daný problém hodí nejvíce, a následně ho i vybrat.
Znovu načíst oprávnění – Při změnách oprávnění uživatelům v MySQL může dojít k nesrovnalostem ve výpisu, a to kvůli cache paměti MySQL serveru. Například vám administrátor změní určitá práva a vy následně nebudete schopni příkaz provést, ale v oprávnění stále bude nastavení příkazu povoleno. Aby k této situaci nedošlo, použijte odkaz na znovunačtení oprávnění, který hodnoty změní, a vy tak můžete ověřit a prohlédnout si aktuální nastavení práv. Patřičný dotaz SQL zní:

FLUSH PRIVILEGES

Můžete ho kdykoliv použít i v okně SQL či ve vaší aplikaci.
Oprávnění – Tímto odkazem se dostanete do seznamu uživatelů a k nastavení jejich oprávnění, které můžete měnit. Samotné uživatele můžete v tomto okně jak přidávat, tak mazat, samozřejmě pokud máte pro tyto činnosti práva.
Databáze – Další odkazem se dostanete opět na seznam, tentokrát však na seznam databází, kde můžete kontrolovat opět jejich nastavení, měnit je, kontrolovat k nim oprávnění. A rovněž vidíte, jaké mají porovnávání – i zde je přitom můžete přidávat či měnit, pokud k tomu ovšem máte příslušná oprávnění.
Export – phpMyadmin podporuje nativně export dat do několika formátů, které můžete vidět na obrázku. Stačí vybrat databázi či pro databáze nastavit formát uložení dat, přičemž vlastnosti pro každý formát uložení se liší. Výchozí je SQL, který vytvoří dotaz, s nímž budete schopni vytvořit kdekoliv stejnou databázi se stejnými daty. Soubor s exportovanými daty můžete uložit do souboru jen tak, nebo jej případně komprimovat, což vřele doporučujeme. U objemnějších databází totiž vzniká velký rozdíl v datové mohutnosti u komprimovaného a nekomprimovaného souboru.
Import – Jak je již zřejmé, posledním odkazem na hlavní stránce je Import. Toto okno ukazuje další obrázek. Zajímavou možností je částečný import, který považujeme za důležitý především pro databáze a servery, jež mají nastaveny nízké limity a dobu provádění skriptu – typické většinou pro levné webhostingové služby. Maximální velikost importovaného souboru se rovněž různí, každopádně však doporučujeme importovat ze zipu, nemusíte totiž nahrávat velké množství dat a výsledek bude totožný.
Tolik o phpMyAdminovi a jeho základních vlastnostech: v dalších volných pokračováních našich článků se můžete těšit na úvod do skriptovacího jazyka PHP. 8 0203/CZ o
Přípony (ci, cs, bin) u porovnávání:

Porovnávání je vlastně nastavení toho, jak budou v dané databázi řazeny záznamy:
? ci – case insensitive – nerozlišuje velikost písmen,
? cs – case sensitive – rozlišuje velikost písmen,
? bin – binary – řadí se podle hodnoty znaku, ne lexikograficky.
Panel nabídky, zleva: DOMŮ – odkaz na hlavní stranu phpMyAdmin
EXIT – odhlášení ze serveru
SQL – vyvolá okno pro psaní přímých SQL dotazů
Nápověda – náhled do dokumentace (en)
SQL Nápověda – odkaz na Manuál MySQL 5 (en)
V tomto poli můžete vybrat
jazyk, v němž s vámi bude
PhpMyAdmin komunikovat
Informace o MySQL serveru
Uživatel: aktuálně
přihlášený uživatel

Vytvoření databáze a nastavení porovnávání v ní

Informace o phpMyAdminu
Rychlé odkazy ke statistikám,
a důležitým tabulkám
v MySQL: Export a import dat, přehled databází
Odkaz na soubor se změnami v phpMyAdmin, odkaz na repository s meziverzemi a mailing list s připomínkami uživatelů
Klikněte na Proveď a přihlásíte se ke správě serveru MySQL
phpMyAdmin má skvělou vlastnost v tom, že veškeré dotazy, které provede, následně ukáže, a tak se jednoduše a nenásilně můžete naučit dotazovací jazyk SQL
Vytvoření tabulky v databázi: aby do ní bylo možné něco ukládat, musí se nejdříve vytvořit, například pomocí tohoto formuláře
Nastavení vlastností jednotlivých atributů. Přidání jména,
nastavení datových typů, délky, porovnání, speciální
vlastnosti, výchozí hodnoty a komentáře, které je dobré
vyplňovat, hlavně pokud aplikaci tvoří tým lidí
Nastavení primárního klíče. Označený typ
bude sloužit jako primární klíč, při jeho použití
je vhodné zároveň použít UNIQUE – sloupec
nám tedy jedinečným způsobem identifikuje
záznamy v tabulce, což je velmi důležité
Index sloupce umožní
rychlejší přístup k datům
Nastavení úložiště pro
tabulku a porovnávání
– ve výchozím stavu
nastavené stejně
jako nadřazená databáze
Unikátní klíč (UNIQUE) –
sloupec nám tedy
jedinečným způsobem
identifikuje záznamy
v tabulce, což je velmi
důležité
Nastavení fultextu,
vhodné pro vyhledávání
textových řetězců
Žádná ze speciálních
vlastností

Datové typy, které lze v MySQL používat

Pro rychlé a bezproblémové fungování MySQL je vhodné databáze (či tabulky) navrhovat s vhodnými datovými typy a využívat tak všechny dostupné funkce a optimalizace samotného MySQL. Datové typy lze rozdělit do tří základních skupin, další skupinou jsou pak modifikátory, které mohou rozšířit charakteristiky datových typů a nastavit pro ně speciální vlastnosti:
? typy číselné,
? typy pro datum a čas,
? typy pro řetězce.

Číselné typy

TINYINT – rozsah hodnot od –128 do +127, [UNSIGNED] 0 až 255.
SMALLINT – rozsah hodnot od –32768 do 32767, [UNSIGNED]
0 až 65535.
MEDIUMINT – rozsah hodnot od –8388608 do +8388607, [UNSIGNED] 0 až 16777215.
INT nebo INTEGER – rozsah hodnot od –2147483648 do +2147483647, [ UNSIGNED ] 0 až 4294967295.
BIGINT – rozsah hodnot od –9223372036854775808 do +9223372036854775807, [UNSIGNED] 0 až 18446744073709551615.
BIT nebo BOOL – synonymum pro TINYINT(1).
FLOAT – rozsah hodnot od –3.402823466E+38 do 3.402823466E+38.
DOUBLE – rozsah hodnot od –1.7976931348623157E+308 do 1.7976931348623157E+308.
DOUBLE PRECISION nebo REAL – synonyma pro typ DOUBLE.
DECIMAL(m,d) – rozsah nastavíme parametry „m“ a „d“, maximální rozsah je stejný s typem DOUBLE.
DEC(m,d) nebo NUMERIC(m,d) – synonyma pro typ DECIMAL(m,d).
Datum a čas
DATE – datum ve formátu „RRRR-MM-DD“ a v rozsahu 1000-01–01 až 9999-12-31.
DATETIME – datum a čas v rozsahu 1000-01-01 00:00:00 až 9999-12-31 23:59:59 (formát je „RRRR-MM-DD HH:MM:SS“).
TIMESTAMP(m)
? datum a čas v rozsahu 1970-01-01 00:00:00 až 2037-01-01 00:00:00 (vždy se ukládá všech 14 čísel ),
? formát zobrazení (a pro dotazy) provedeme parametrem „m“ s hodnotou 14 (nebo chybějící), 12, 10, 8, 6, 4, či 2,
? „RRRRMMDDHHMMSS“, „RRMMDDHHMMSS“, „RRMMDDHHMM“, „RRRRMMDD“, „RRMMDD“, „YYMM“, „YY“,
? pokud do buňky tohoto typu nic nezapíšeme, MySQL sám doplní aktuální čas změny v daném řádku
TIME – časový rozsah je –838:59:59 až 838:59:59 a formát datového typu „HH:MM:SS“.
YEAR(m) – při YEAR(4) bude rozsah 1901 až 2155, při YEAR(2) bude rozsah 1970 až 2069, formát je „RRRR“.

Řetězce
CHAR(m)
? délka řetězce „m“ může být v rozsahu 0–255,
? pokud je vložený řetězec kratší než nastavíme, chybějící znaky jsou automaticky doplněny mezerami,
? CHAR (tedy bez „m“) je považováno za CHAR(1).
VARCHAR(m)
? délka řetězce „m“ může být v rozsahu 0–255.
TINYBLOB nebo TINYTEXT
? délka řetězce je maximálně 255 znaků.
BLOB nebo TEXT
? délka řetězce je maximálně 65 535 znaků.
MEDIUMBLOB nebo MEDIUMTEXT
? délka řetězce je maximálně 16 777 215 znaků.
LONGBLOB nebo LONGTEXT
? délka řetězce je maximálně 4 294 967 295 znaků.
ENUM(’prvek1’, ’prvek2‘,…)
? pole předem definovaných řetězců (prvků) o maximálním počtu 65 535,
? v buňce tabulky pak může být pouze jeden z prvků, které jsme předdefinovali,
? místo názvů prvků můžeme používat i jejich pořadí, tedy: 1 (místo 'prvek1‘), 2 (místo ‚prvek2‘)...
SET(’prvek1‘, ’prvek2‘,…)
? pole předem definovaných řetězců (prvků) o maximálním počtu 64,
? v buňce tabulky pak může být i více z prvků, které jsme předdefinovali.

Modifikátory
AUTO_INCREMENT
? systém si sám ve sloupci generuje unikátní (jedinečné) číselné hodnoty,
? modifikátor lze použít pouze na celočíselný datový typ,
? za deklarací nové tabulky můžeme ještě navíc určit výchozí hodnotu: ...AUTO_INCREMENT=50;.
BINARY
? pro CHAR a VARCHAR; tento typ bude brán jako binární a budou se tak rozlišovat malá a velká písmena.
DEFAULT vychozi_hodnota
? pokud bude buňka prázdná, systém do ní automaticky přiřadí hodnotu „vychozi_hodnota“,
? řetězce nezapomeňte psát v uvozovkách.
FULLTEXT INDEX
? platí pro sloupce typu CHAR, VARCHAR a TEXT,
? fulltextový index slouží k rychlejšímu hledání dat v textových polích,
? hledání v takovýchto polích provádíme pomocí příkazů MATCH a AGAINST.
? Př.: SELECT * FROM tabulka WHERE MATCH(sloupec) AGAINST(„hledana_hodnota“);
INDEX
? sloupce označené jako INDEX umožní rychlejší přístup k datům, která obsahují.
NOT NULL
? pokud použijeme tento modifikátor, označený typ bude muset v každé buňce obsahovat nějakou hodnotu.
NULL
? opak NOT NULL; buňka může být prázdná.
PRIMARY KEY
? označený typ bude sloužit jako primární klíč,
? při jeho použití je vhodné zároveň použít UNIQUE,
? sloupec nám tedy jedinečným způsobem identifikuje záznamy v tabulce.
UNIQUE
? v daném sloupci nesmějí být v buňkách stejné hodnoty, tedy co kus, to unikát.
UNSIGNED
? pokud použijeme modifikátor UNSIGNED, datový typ bude bez znaménka a posune se interval hodnot,
? u čísel s pohyblivou desetinou čárkou se interval použitím UNSIGNED neposunuje a berou se jen kladná čísla.
? Př.: TINYINT má rozsah –118 až +127 a TINYINT UNSIGNED má rozsah 0 až 255
ZEROFILL:
? použití u čísel, příkaz doplní před číslo nuly v celé jeho šířce.
? Př.: Pokud máme definováno MEDIUMINT(6) ZEROFILL a je v něm hodnota 123, tak se nám zobrazí 000123

Záložka s tímto oknem
umožňuje přímý zápis
SQL dotazů a jejich
následné vykonání po
kliknutí na tlačítko Proveď
Pokud byste nechtěli
z nějakého důvodu
zapisovat dotaz do
hlavního okna, stačí
zatrhnout toto
políčko SQL dotaz se
pak provede bez
vypsání do hlavního
okna
Rychlý import souborů, který je poněkud
ořezaný oproti klasickému importu přes odkaz
v hlavním okně, pro expresní import je však výborný
Záložka s historií
vykonaných SQL
dotazů v dané relaci
Veškeré čtenářské reakce a komentáře uvítáme v naší e-mailové schránce:
ondrej.baar@uzasne.cz. Sem můžete zasílat také dotazy týkající se PHP nebo MySQL. Odpovědi autora naleznete v příštím čísle na CD/DVD.
Den spuštění
a délka běhu serveru
Další informace, na které lze pomocí
těchto odkazů přecházet
Datový provoz serveru udává,
kolik dat bylo serverem přijato
a odesláno za dobu jeho běhu,
v dalším sloupci ukazuje
průměrnou hodnotu za
hodinu
Statistiky připojení k serveru,
nepovedené pokusy jsou
zajímavou hodnotou, která
může signalizovat problém
se serverem
Počet vykonaných dotazů
a průměrné hodnoty
Výběr databáze či databází a exportní
formát. Je jich opravdu dost, a tak si
jistě každý vybere
Okno nastavení se pro každý
zvolený formát liší, toto okno
je výchozí pro SQL
Výchozí nastavení importovaného
souboru, jeho velikost je různá
u každého serveru, jedná se
o nastavení proměnné v php.ini,
důležitá je rovněž znaková sada
souboru, kterou nezapomeňte
vybrat
Výborná vlastnost u limitovaných,
většinou nejlevnějších společností
může znamenat neimportování
celého souboru, stačí zde zadat
číslo posledního provedeného
dotazu a spustit import několikrát,
dokud celá databáze nebude nahraná

Při zatržení ukládá export do souboru,
který prohlížečem stáhnete – doporučuji
používat kompresi zip nebo gzip,
komprese je u databází velmi výkonná
a dokáže ušetřit hodně času i místa
Nastavení kompatibility je vhodné,
pokud importovaný soubor není
exportován z MySQL, ale například
z Oracle