SQL

DatabßzovΘ servery bohu₧el (nebo spφÜe bohudφk;) nejsou aladinovou lampou, a tak je nelze ovlßdat hlasem. Mφsto toho se pou₧φvß jazyk SQL (Structured Query Language), kter²m lze kompletn∞ manipulovat s tabulkami v databßzi a v nich ulo₧en²mi daty.

Syntaxe SQL nenφ nijak slo₧itß, je zvolena tak, aby p°ipomφnala anglick² jazyk. Pokud si budete chtφt sami SQL vyzkouÜet, je nejlepÜφ po°φdit si n∞jak² databßzov² server. Existuje jich samoz°ejm∞ mnoho, liÜφ se jak sv²mi kvalitami, tak i cenou. Pro webovΘ a wapovΘ aplikace se velice Φasto pou₧φvß MySQL, kterΘ je velmi rychlΘ a je k dispozici zdarma pro mnoho platforem (vΦetn∞ Windows a Linuxu). Stßhnout si jej m∙₧ete z adresy http://www.mysql.com. Instalace databßze na vlastnφm poΦφtaΦi je v²hodnß zejmΘna pro lad∞nφ aplikacφ. Pro ostr² provoz aplikace pak samoz°ejm∞ vyu₧ijeme databßzov² server, kter² b∞₧φ u web-hostingovΘ firmy.

Vytvo°enφ tabulky

Vra¥me se vÜak k jazyku SQL. Prvnφ p°φkaz, se kter²m se musφme seznßmit, je p°φkaz pro vytvo°enφ tabulky. Pro vytvo°enφ naÜφ tabulky s telefony by vypadal nßsledovn∞:

CREATE TABLE Telefony (
  Id      INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  Jmeno   VARCHAR(40),
  Telefon VARCHAR(14),
  Email   VARCHAR(60))

Za klφΦov²m slovem CREATE TABLE se udßvß nßzev tabulky. V zßvorkßch pak nßsleduje seznam polo₧ek. U ka₧dΘ polo₧ky se udßvß jejφ nßzev a typ. Nap°. typ INT odpovφdß celΘmu Φφslu a VARCHAR textovΘmu °et∞zci o urΦitΘ maximßlnφ dΘlce. U polo₧ky Id jsme jeÜt∞ urΦili, ₧e se jednß o primßrnφ klφΦ, kter² se bude automaticky generovat pro nov∞ vklßdanΘ zßznamy.

NejlepÜφ je si hned vÜechny p°φkazy zkouÜet. P°edtφm samoz°ejm∞ musφme mφt nainstalovßno MySQL. P°φkazy m∙₧eme serveru zasφlat pomocφ programu mysql, kter² je souΦßstφ distribuce MySQL. Po spuÜt∞nφ programu se p°φkazem use test p°epneme do testovacφ databßze a pak ji₧ m∙₧eme napsat p°φkaz pro vytvo°enφ tabulky (viz obrßzek 2). Za ka₧d²m p°φkazem musφme uvΘst st°ednφk. Ten signalizuje, ₧e p°φkaz je ji₧ zadßn cel², a m∙₧e se odeslat databßzovΘmu serveru ke zpracovßnφ.

Obrßzek 2. Prßce s °ßdkov²m klientem MySQL

N∞kte°φ poskytovatelΘ web-hostingu neumo₧≥ujφ vzdßlen² p°φstup k jejich databßzi. Za chvφli si proto ukß₧eme, jak i v takovΘm p°φpad∞ odesφlat SQL p°φkazy serveru a vytvo°it si databßzovou tabulku.

Vklßdßnφ zßznam∙

Pro vlo₧enφ novΘho zßznamu do tabulky je v SQL p°φkaz INSERT INTO. Vlo₧enφ novΘho zßznamu do tabulky s telefony m∙₧eme provΘst velice jednoduÜe:

INSERT INTO Telefony (Jmeno, Telefon, Email)
VALUES ('Jan Novßk', '+420212131415', 'novak@email.cz')

Za nßzvem tabulky se ve slo₧en²ch zßvorkßch uvßdφ seznam polo₧ek, kterΘ chceme zadßvat. Za klφΦov²m slovem VALUES se v zßvorkßch zadßvajφ ji₧ p°φmo hodnoty polo₧ek v novΘm zßznamu. TextovΘ °et∞zce je p°itom nutnΘ uzavφrat do apostrof∙.

V²b∞r dat z tabulky

Databßze by samoz°ejm∞ nem∞la pracovat jen jako Φernß dφra, ve kterΘ se ztrßcejφ naÜe cennΘ informace. K v²b∞ru dat z tabulky slou₧φ p°φkaz SELECT, kter² mß mnoho variant. Jeho nejjednoduÜÜφ tvar slou₧φ k v²b∞ru vÜak dat z tabulky:

SELECT * FROM Telefony

VrßcenΘ zßznamy lze omezit podmφnkou. Ta se pφÜe za klφΦovΘ slovo WHERE. Kdybychom nap°φklad cht∞li zjistit ·daje o Janu Novßkovi, m∙₧eme pou₧φt nßsledujφcφ SQL p°φkaz:

SELECT * FROM Telefony WHERE Jmeno LIKE 'Jan Novßk'

V °et∞zci, kter² v danΘ polo₧ce vyhledßvßme, m∙₧eme pou₧φt i zßstupnΘ znaky. Nap°. znak `%' zastupuje libovolnou sekvenci znak∙. Chceme-li najφt nap°φklad vÜechny, kte°φ majφ ve svΘm jmΘn∞ kdekoliv pφsmeno `Ch', m∙₧eme pou₧φt nßsledujφcφ variantu p°φkazu.

SELECT * FROM Telefony WHERE Jmeno LIKE '%Ch%'

Pokud chceme v²sledky se°adit m∙₧eme pou₧φt klφΦovΘm slovo ORDER BY a napsat za n∞j, podle kterΘ polo₧ky se mß v²stup uspo°ßdat.

SELECT * FROM Telefony WHERE Jmeno LIKE '%Ch%'
ORDER BY Email

P°φkaz SELECT a jazyk SQL mß jeÜt∞ mnoho dalÜφch mo₧nostφ, my je bohu₧el v omezenΘm prostoru Φlßnku nem∙₧eme probrat.

⌐ Ji°φ Kosek 2000-2001