Jak pracují databáze na Webu: Lehký úvod do SQL

V minulém díle jsme se seznámili se způsobem, jakým se do databází ukládají údaje ve formě tabulek. Dnes si ukáže...


V minulém díle jsme se seznámili se způsobem, jakým se do databází ukládají
údaje ve formě tabulek. Dnes si ukážeme, jak můžeme s tabulkami a s údaji v
nich obsaženými manipulovat.
Víme, že přístup k údajům uloženým v databázi obstarává SŘBD. Aby mohly být
údaje z databáze přístupné ostatním aplikacím, musí SŘBD nabízet rozhraní,
pomocí kterého s ním mohou spolupracovat ostatní programy.
Způsob komunikace se SŘBD je velice obdobný komunikaci s webovým serverem. Dnes
je SŘBD nejčastěji nepřetržitě spuštěn jako démon (na Unixu) nebo jako služba
(ve Windows NT) a na určitém socketu očekává požadavky klientů (ostatních
aplikací). Na tyto požadavky pak odpovídá. Vidíme tedy, že i zde funguje
osvědčený model klient/server. V roli serveru je nyní SŘBD a někdy se mu proto
také říká databázový server.
Pro zápis požadavků na databázový server se nejčastěji používá jazyk SQL
(Structured Query Language). Tento jazyk prošel dlouhým vývojem a v různé míře
jej dnes podporují téměř všechny běžně používané databázové servery. Někdy se
proto databázovým serverům říká zjednodušeně SQL servery. Jazyk SQL nabízí vše
potřebné pro vytváření, modifikování a rušení tabulek a pro práci s údaji v
tabulce vyhledávání, přidávání, modifikování a mazání údajů.
Jak to vše souvisí s naší tvorbou webových aplikací? V roli klienta pro SQL
server může samozřejmě vystupovat i skript zapsaný v PHP či ASP. To znamená, že
naše skripty mohou obsahovat příkazy zapsané v jazyce SQL a zpracovávat jejich
výsledky po provedení na SQL serveru. Nic již tedy nebrání tomu, aby byl přes
Web zpřístupněn obsah nějaké databáze.
V praxi je vše samozřejmě o něco složitější. Každý SQL server má svůj vlastní
protokol, s kterým může klient komunikovat. Pokud má klient umět komunikovat s
více různými servery, musí podporovat více protokolů. To není zrovna
nejšťastnější řešení a proto na platformě Windows vzniklo rozhraní ODBC. To
slouží jako prostředník mezi klientskou aplikací a databázovým serverem.
Rozhraní ODBC se volá jednotně a ODBC ovladač pak požadavek předá databázovému
serveru pomocí správného protokolu.
V PHP i ASP může k připojení k SQL serveru používat rozhraní ODBC. PHP navíc
nabízí pro některé servery přímou podporu přístup k datům je pak obvykle
rychlejší. Mezi přímo podporované databáze patří mimo jiné Oracle, Sybase,
Solid, MySQL a PostgreSQL.
Pracujeme s MySQL
Zanechme však teoretických úvah a pusťme se do jazyka SQL.
Abychom si mohli SQL vyzkoušet, budeme potřebovat nějaký SQL server. To může
být trochu problém, protože cena komerčních serverů je dnes přímo astronomická.
My proto sáhneme po serveru MySQL, jehož unixová verze je k dispozici zdarma a
verze pro Windows za cenu, která je v porovnání s komerčními servery směšná.
Domovskou stránku MySQL naleznete na adrese http://www.tcx.se/. Pro stahování
programu však použijte zrcadlo umístěné v ČR na adrese
http://mirror.opf.slu.cz/mysql/.
Po nainstalování MySQL musíme spustit jeho serverovou část pomocí příkazu
mysqld. V Unixu a Windows NT se nám asi vyplatí spustit MySQL jako démona/
službu. Nyní se již můžeme k serveru připojit pomocí jednoduchého řádkového
klienta mysqld (ve Windows verzi nalezneme spustitelné soubory v adresáři
mysqlbin). Jako parametr je nutno uvést jméno databáze, ke které se chceme
připojit. Při instalaci se standardně vytvoří databáze test, do které mají
všichni uživatelé přístup výborně se tedy hodí pro naše účely seznamování s
jazykem SQL. MySQL spustíme pomocí příkazu:
mysql test
Nyní si pomocí příkazu help můžeme prohlédnout příkazy, které máme k dispozici
(viz obr. 2).
Pro nás je důležitý příkaz quit, kterým ukončíme práci s klientem. Kromě
zobrazených příkazů můžeme zadat libovolný příkaz v jazyce SQL. Pojďme se s
nimi tedy postupně seznámit.
Vytvoření tabulky
K vytvoření nové tabulky v databázi slouží SQL příkaz CREATE TABLE. Jeho
syntaxe je následující:
CREATE TABLE jméno_tabulky (jméno_položky typ_položky, ...)
Přehled nejpoužívanějších datových typů si můžeme prohlédnout v tabulce 1.
Pro vytvoření tabulky Zaměstnanci z předchozího dílu seriálu můžeme použít
následující SQL příkaz:
CREATE TABLE Zamestnanci ( OsobniCislo int NOT NULL, Jmeno varchar(40), RC
varchar(11), Adresa varchar(60), Plat float, PRIMARY KEY (OsobniCislo)
);
Názvy všech tabulek a položek je lepší zadávat bez diakritických znamének,
protože ne všechny servery si zde s češtinou poradí. Za definicí typu osobního
čísla musíme uvést direktivu NOT NULL, která říká, že atribut nemůže obsahovat
prázdnou hodnotu. Tato podmínka musí platit pro všechny primární klíče.
Předposlední řádka příkazu definuje atribut OsobniCislo jako primární klíč
tabulky.
Při zadávání příkazů v programu mysql nesmíme zapomenout za každým příkazem
zadat středník. Příkaz je odeslán na server až po zadání středníku a následném
stisknutí klávesy Enter.
Přidání nového záznamu
Přímo z prostředí mysql můžeme do tabulky přidávat i nové záznamy. K přidání
nového záznamu do tabulky s N atributy slouží v SQL příkaz INSERT INTO:
INSERT INTO jméno_tabulky VALUES (hodnota1, ..., hodnotaN)
My do tabulky přidáme informace o panu Novákovi:
INSERT INTO Zamestnanci VALUES ( 1023, 'Novák Jan', '561220/0235', 'Levá 13,
Praha 4', 12000); Textové řetězce musíme uzavírat do apostrofů nebo do
uvozovek. Na obrázku 3 si můžeme prohlédnout, jak na
přidání záznamu zareaguje mysql. Dozvíme se, že dotaz byl v pořádku, ovlivnil
jednu řádku a provedl se za 8 setin
sekundy.
Obdobným způsobem můžeme přidat i další záznamy. Vidíme, že tento způsob není
zrovna dvakrát uživatelsky příjemný což je dobrá motivace pro vytvoření snadno
ovladatelného webového rozhraní k tabulce.
Výběr a prohlížení záznamů
K výběru a vypsání záznamů z tabulky slouží příkaz SELECT. Pokud chceme vypsat
obsah celé tabulky, zadáme příkaz:
SELECT * FROM jméno_tabulky
Obsah naší tabulky si tedy můžeme ověřit pomocí:
SELECT * FROM Zamestnanci;
Na obrázku 3 vidíme, že obsah tabulky je úhledně zformátován a navíc se
dozvíme, kolik záznamů vyhovuje dotazu.
Informace lze vybírat i selektivně. Podmínka, která musí pro vybrané záznamy
platit, se uvádí za klíčové slovo WHERE. Příklady selektivních dotazů:
SELECT * FROM Zamestnanci
WHERE Jmeno LIKE 'Novák Jan';
Vybere všechny zaměstnance, jejichž jméno je 'Novák Jan'.
SELECT * FROM Zamestnanci
WHERE Jmeno LIKE 'Nov%';
Znak '%' má ve vyhledávacím řetězci za operátorem LIKE speciální význam
nahrazuje libovolnou sekvenci znaků. Dotaz tedy vybere všechny zaměstnance,
jejichž jméno začíná na Nov.
SELECT * FROM Zamestnanci
WHERE OsobniCislo = 1230;
Vybere zaměstnance s osobním číslem 1230. A konečně
SELECT * FROM Zamestnanci
WHERE Plat > 10000;
vybere všechny, jejichž plat převyšuje 10 000 Kč.
V podmínkách můžeme používat i logické spojky AND
a OR. Pokud nás zajímají všichni Nováci, jejichž plat je menší než 6 000 Kč,
můžeme použít dotaz:
SELECT * FROM Zamestnanci
WHERE Jmeno LIKE 'Novák %' AND Plat < 6000;
Za příkazem SELECT nemusíme uvádět jen hvězdičku. Místo ní můžeme použít seznam
atributů, které chceme mít ve výsledku zobrazeny. Hvězdička má speciální význam
a zastupuje všechny atributy.
Zajímají-li nás jména a platy zaměstnanců, kteří mají plat větší než 15 000 Kč,
můžeme použít následující dotaz:
SELECT Jmeno, Plat
FROM Zamestnanci
WHERE Plat > 15000
Příště se podíváme na další SQL příkazy, které nám umožňují mazání a modifikaci
záznamů v tabulce. Pak si již konečně ukážeme, jak začlenit SQL příkazy do
našich skriptů.
8 1883 / pah









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.