Podobné dokumenty
Databázové a informační systémy

Aplikace počítačů v provozu vozidel 9

Data v počítači EIS MIS TPS. Informační systémy 2. Spojení: jan.skrbek@tul.cz tel.: Konzultace: úterý

-1- N á v r h ČÁST PRVNÍ OBECNÁ USTANOVENÍ. 1 Předmět úpravy

účetních informací státu při přenosu účetního záznamu,

Poukázky v obálkách. MOJESODEXO.CZ - Poukázky v obálkách Uživatelská příručka MOJESODEXO.CZ. Uživatelská příručka. Strana 1 / 1. Verze aplikace: 1.4.

Budování aplikačních rozhraní pro obousměrnou komunikaci mezi ERMS a jejich vztah k Národnímu standardu pro komunikaci mezi ERMS.

Orientační průvodce mateřstvím a rodičovstvím v zadávacích dokumentacích poskytovatele

které je třeba si položit před zakoupením levného CAD programu

Modul Řízení objednávek.

Příprava na 1. čtvrtletní písemku pro třídu 1EB

Odůvodnění veřejné zakázky. Přemístění odbavení cestujících do nového terminálu Jana Kašpara výběr generálního dodavatele stavby

Operace nad celými tabulkami

NÁVRHOVÝ PROGRAM VÝMĚNÍKŮ TEPLA FIRMY SECESPOL CAIRO PŘÍRUČKA UŽIVATELE

Jazyk S Q L základy, příkazy pro práci s daty

Objektově orientované databáze

29 Evidence smluv. Popis modulu. Záložka Evidence smluv

WEBDISPEČINK NA MOBILNÍCH ZAŘÍZENÍCH PŘÍRUČKA PRO WD MOBILE

Návod k používání registračního systému ČSLH

POPIS REALIZACE POSKYTOVÁNÍ SOCIÁLNÍCH SLUŽEB Sociální rehabilitace Třinec

obecně závazné vyhlášky o vedení technické mapy obce A. OBECNÁ ČÁST Vysvětlení navrhované právní úpravy a jejích hlavních principů

MOBILNÍ KOMUNIKACE STRUKTURA GSM SÍTĚ

Metodika kontroly naplněnosti pracovních míst

Příloha č. 54. Specifikace hromadné aktualizace SMS-KLAS

Preference v u ívání prost edk elektronické komunikace áky a studenty

průvodce správou, využitím a programováním

STANDARD 3. JEDNÁNÍ SE ZÁJEMCEM (ŽADATELEM) O SOCIÁLNÍ SLUŽBU

TIP: Pro vložení konce stránky můžete použít klávesovou zkratku CTRL + Enter.

VYR-32 POKYNY PRO SPRÁVNOU VÝROBNÍ PRAXI - DOPLNĚK 6

Česká zemědělská univerzita v Praze Fakulta provozně ekonomická. Obor veřejná správa a regionální rozvoj. Diplomová práce

Obsah. Obsah. Úvod Makra v Excelu Nahrávání maker První setkání s editorem jazyka Visual Basic... 31

Dne obdržel zadavatel tyto dotazy týkající se zadávací dokumentace:

Obchodní podmínky pro spolupráci se společností Iweol EU s.r.o.

ZADÁVACÍ DOKUMENTACE. Pořízení a provoz konsolidované IT infrastruktury

NEJČASTĚJI KLADENÉ DOTAZY K PUBLICITĚ PROJEKTŮ OP LZZ

170/2010 Sb. VYHLÁŠKA. ze dne 21. května 2010

METODICKÝ POKYN NÁRODNÍHO ORGÁNU

ZADÁVACÍ DOKUMENTACE

Akce GS SROP. Rady pro žadatele pro 4. kolo výzvy

OBEC HORNÍ MĚSTO Spisový řád

Stanovisko komise pro hodnocení dopadů regulace

Pomocník diabetika Uživatelská příručka

3 nadbytek. 4 bez starostí

SMLOUVA O POSKYTOVÁNÍ SOCIÁLNÍ SLUŽBY č.../2013

Uživatelská příručka Rejstřík státních zaměstnanců

Manuál Kentico CMSDesk pro KDU-ČSL

ODŮVODNĚNÍ VEŘEJNÉ ZAKÁZKY Dostavba splaškové kanalizace - Prostřední Bečva a Horní Bečva, zhotovitel, dle vyhlášky č. 232/2012 Sb.

Směrnice Rady města č. 2/2011

INTERNETOVÝ TRH S POHLEDÁVKAMI. Uživatelská příručka

Novinky verzí SKLADNÍK 4.24 a 4.25

Odůvodnění veřejné zakázky

Česká republika Ministerstvo práce a sociálních věcí Na Poříčním právu 1, Praha 2. vyzývá

Marketing. Modul 3 Zásady marketingu

ČÁST PÁTÁ POZEMKY V KATASTRU NEMOVITOSTÍ

Všeobecné podmínky provozu sběrných míst kolektivního systému Eltma

Oddělení předarchivní péče, fondů státní správy po roce 1992 a elektronických dokumentů Národního archivu. Informace, návody. Materiál k diskusi

4.5.1 Magnety, magnetické pole

MATEMATIKA A BYZNYS. Finanční řízení firmy. Příjmení: Rajská Jméno: Ivana

Pokyn D Sdělení Ministerstva financí k rozsahu dokumentace způsobu tvorby cen mezi spojenými osobami

Úprava tabulek v MS Word. Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T. G. Masaryka, Kostelec nad Orlicí

Oprava střechy a drenáže, zhotovení a instalace kované mříže kostel Sv. Václava Lažany

Dodatečné informace č. 3 k zadávacím podmínkám

MAGIS ve strojírenské firmě Strojírna Vehovský s.r.o.

Algoritmus (nebo dřívějším pravopisem algorithmus)

téma: Formuláře v MS Access

Obsah. Obsah. Úvod... 7

Uložené procedury Úvod ulehčit správu zabezpečení rychleji

Zadávání tiskových zakázek prostřednictvím JDF a Adobe Acrobat Professional

KAPITOLA 6.3 POŽADAVKY NA KONSTRUKCI A ZKOUŠENÍ OBALŮ PRO INFEKČNÍ LÁTKY KATEGORIE A TŘÍDY 6.2

Marketing. Modul 7 Internetový marketing

Registr UJO. Příručka pro uživatele. Institut biostatistiky a analýz. Lékařské a Přírodovědecké fakulty Masarykovy univerzity.

rozlišení obrazovky 1024 x 768 pixelů operační systém Windows 2000, Windows XP, Windows Vista 1 volný sériový port (volitelný) přístup na internet

Podrobný postup pro doplnění Žádosti o dotaci prostřednictvím Portálu Farmáře. 1. kolo příjmu žádostí Programu rozvoje venkova ( )

S_5_Spisový a skartační řád

Ovoce do škol Příručka pro žadatele

1.2.7 Druhá odmocnina

Soubory a databáze. Soubor označuje množinu dat, která jsou kompletní k určitému zpracování a popisují vybrané vlastnosti reálných objektů

Jihočeský vodárenský svaz S. K. Neumanna 19, České Budějovice

MEZINÁRODNÍ AUDITORSKÝ STANDARD ISA 505 EXTERNÍ KONFIRMACE OBSAH

Zadávací dokumentace pro podlimitní veřejnou zakázku na dodávky

DOBA KAMENNÁ: Styl je cíl

Zvyšování kvality výuky v přírodních a technických oblastech CZ.1.07/1.128/ Nástrahy virtuální reality (pracovní list)

Pracovní návrh. VYHLÁŠKA Ministerstva práce a sociálních věcí. ze dne o hygienických požadavcích na prostory a provoz dětské skupiny do 12 dětí

Základní škola a základní umělecká škola

Zaměstnání a podnikání, hrubá a čistá mzda.

Geometrické plány (1)

ZADÁVACÍ DOKUMENTACE

Zadávací dokumentace

M. Balíková, R. Záhořík, NK ČR 1

Zadání. Založení projektu

Návod k použití aplikace MARKETINGOVÉ PRŮZKUMY.CZ

Odůvodnění veřejné zakázky dle 156 zákona. Odůvodnění účelnosti veřejné zakázky dle 156 odst. 1 písm. a) zákona; 2 Vyhlášky 232/2012 Sb.

Pracovní právo seminární práce

Algoritmizace a programování

Pokusné ověřování Hodina pohybu navíc. Často kladené otázky

PARLAMENT ČESKÉ REPUBLIKY Poslanecká sněmovna 2005 IV. volební období

NOVINKY CEFIF. Centrum fiktivních firem

RÁMCOVÁ SMLOUVA č. 2014_03 na provádění zámečnických a nástrojařských prací, Brno - Líšeň

Android Elizabeth. Verze: 1.3

Pokyny k vyplnění Průběžné zprávy

Transkript:

10 P EDMLUVA 0. P edmluva P EDMLUVA Dostáváte do rukou publikaci, která si klade za cíl seznámit široký okruh tená se základy práce s databázemi v jejich sou asné nej ast jší form databázemi rela ními. Jak je i z názvu této knihy patrné, zabývá se zejména jazykem SQL, pomocí kterého získáváme z rela ních databází požadovaná data. Zárove jej používáme pro p idávání dat, jejich aktualizaci nebo mazání. SQL je základním prost edkem používaným od vytvo ení databáze p es její napln ní daty až po vlastní práci s daty. Krom samotného jazyka SQL zde naleznete i výklad základních pojm používaných v rela ních databázích (tabulka, sloupce, klí apod.) a také velmi hrubý nástin rela ní algebry, na které jsou rela ní databáze založeny. P i len ní knížky do kapitol i b hem psaní kapitol samotných nebyla zám rn dodržena posloupnost vytvo ení databáze vytvo ení tabulek napln ní tabulek získávání a zm na dat. Pouze malá skupina uživatel bude vytvá et databáze a jejich strukturu nebo databáze napl ovat. Naproti tomu všichni budou z databáze data získávat, zejména pomocí p íkazu. Zárove lze o ekávat, že i úplní za áte níci budou mít k dispozici databázi, na které si mohou jednoduché dotazy vyzkoušet. Není tedy nutné hned zpo átku tená e zat žovat pom rn náro nými postupy tvorby databáze a jednotlivých tabulek. V úvodních kapitolách se proto zam íme pouze na základní pojmy a formy p íkaz, které umožní i úplným za áte ník m získat požadovaná data z databází, vybrat z nich zajímavou ást a uspo ádat je podle jednoduchých kritérií. Velmi užite nou pom ckou pro tvorbu vlastních SQL p íkaz je samostatná kapitola SQL v p íkladech. Ta obsahuje velké množství ukázek SQL p íkaz použitelných v r zných typových situacích. Budoucím tv rc m databází a zkušen jším uživatel m je v nována kapitola pojednávající o základech návrhu datové základny, její optimalizaci a optimalizaci zadávaných SQL p íkaz. Záv r knížky je vytvo en ve form referen ní p íru ky jazyka SQL a

P EDMLUVA 11 obsahuje p ehled datových typ, operátor, funkcí i SQL p íkaz. Vše je dopln no podrobným komentá em. Jako základ pro syntaxi jazyka SQL byla vzata norma SQL-92. V reálném sv t však nenalezneme její naprosto p esnou implementaci, a proto byly vybrány produkty, se kterými se m žeme v našich podmínkách setkat, a jejich odlišnosti jsou vždy uvedeny ve zvláštním odstavci za vlastním výkladem p íkazu, funkce apod. Jedná se o systém Oracle firmy Oracle Corporation zástupce velkých databázových systém, který má historii stejn dlouhou jako SQL a rela ní databáze obecn, a dále o systém Microsoft Jet Database Engine (zkratka MS JDBE). Na tomto systému jsou založeny aplikace jako MS Access a MS Visual Basic. Se stejným systémem se setkají i programáto i využívající ve svých aplikacích Microsoft Data Access Objects (DAO). Význam MS JDBE je tedy zejména v jeho rozší enosti. Výb r t chto databázových systém byl proveden s cílem upozornit na r zné modifikace v implementaci standardu SQL. Za p edpokladu znalosti základní syntaxe p íkazu SQL a odlišností zde uvedených m žeme odvodit syntaxi použitelnou i na jiných databázových systémech. Zárove je nutné zd raznit, že tato publikace si v žádném p ípad neklade za cíl nahradit p vodní dokumentaci ke zde uvád ným databázovým systém m. Cílem je seznámit tená e s vlastním jazykem SQL, aby byl schopen tvorby SQL p íkaz a jednoduchých zm n struktury datové základny. Systémový správce databáze nebo uživatel, který již této úrovn znalosti dosáhl, musí použít originální dokumentaci, aby poznal detailní strukturu a parametry daného databázového systému. Doufám, že tato publikace vám pom že seznámit se s jazykem SQL na požadované úrovni a bude dále sloužit jako referen ní p íru ka všem, kdo principy tohoto jazyka již zvládli. Autor

12 P EDMLUVA Typografické konvence P i psaní této publikace byly dodržovány konvence, které usnadní pochopení textu. Veškeré texty, které se zadávají jako vstupy do po íta e nebo jsou naopak výstupy, jsou pro odlišení znázorn ny. Názvy program a firem jsou vyzna eny kurzívou. V referen ní ásti knihy je pro vysv tlení každého p íkazu dodržena posloupnost název syntaxe popis p íklad specifika viz též. Specifika popisují odlišnosti p íkazu v prost edí MS Access nebo Oracle. P i popisu syntaxe p íkaz jsou dále použity tyto znaky: Popis používaných symbol v definici syntaxe Symbol Význam [ ] nepovinná ást { } povinná volba jedné z uvedených možností odd lení variant, mezi kterými je možné vybírat < > parametr, za který se dosazuje konkrétní hodnota možnost opakování ozna ení konstant typu et zec znak ( ) Použitá literatura Chud jová E., Ing.: SQL Strukturovaný dotazovací jazyk a jeho implementace v databázovém systému Progress. VŠE 1993 Gregor J., Chlapek D., Chud jová E., Chvalovský V.: Datová základna. VŠE 1993 Oracle7 Server SQL Reference Manual originální dokumentace k produktu Oracle Microsoft Access pro Windows 95 originální dokumentace k produktu MS Access

1 Úvod do práce s databázemi Kapitola 1 1 ÚVOD DO PRÁCE S DATABÁZEMI 1.1 Obecn o práci s databází...14 1.1.1 Data a databáze...14 1.1.2 Nástroje pro práci s daty...15 1.1.3 Databázový systém...15 1.2 Data a jejich uložení...17 1.2.1 Databázové tabulky...17 1.2.2 Datové typy...18 1.3 Vazby mezi daty v tabulkách...20 1.3.1 Identifikátory ádk...21 1.3.2 Primární klí...22 1.3.3 Cizí klí...22 1.3.4 Integrita dat...23 1.4 Další informace uložené v databázi...24 1.4.1 Indexy...24 1.4.2 Další pomocné informace v databázi...25

14 ÚVOD DO PRÁCE S DATABÁZEMI 1.1 Obecn o práci s databází

OBECN O PRÁCI S DATABÁZÍ 15 rychleji vyhledat požadované informace nebo provád t r zné sumarizace a statistiky. 1.1.1.1 Datová základna Soubor všech uživatelských dat uložených v databázi se nazývá datová základna. Poznámka þ V této publikaci nebudeme brát v úvahu rozdíl mezi daty a informacemi. Budeme p edpokládat, že veškerá data jsou pro nás zárove informacemi, protože je dokážeme interpretovat a p i adit jim smysl. 1.1.2 Nástroje pro práci s daty Krom roz len ní do po ada máme k dispozici ješt nástroje pro efektivní vyhledávání požadovaných informací. Mezi tyto nástroje pat í štítky s po áte ními písmeny na každé zásuvce. Potom jsme schopni daleko rychleji nalézt požadovanou složku, aniž bychom museli procházet celou sk í. Na data v elektronické podob žádné štítky lepit nemusíme, ale na druhou stranu mezi ob ma zp soby uložení dat z stává ada paralel. 1.1.3 Databázový systém Databázový systém = data + nástroje pro práci s daty Slou ením dat a nástroj, pomocí kterých tato data vytvá íme, aktualizujeme, vyhledáváme a rušíme, získáme databázový systém. Každý databázový systém musí obsahovat nástroje pro: þ vytvo ení, vyhledání, aktualizaci a rušení uživatelských dat, þ definici struktury dat, þ definici a zajišt ní integrity dat ( dále), þ a zajišt ní fyzické a logické nezávislosti dat. A p ípadn nástroje pro: þ podporu práce více uživatel (zejména definici transakcí a p ístupových práv), þ zálohování dat.

16 ÚVOD DO PRÁCE S DATABÁZEMI 1.1.3.1 Fyzická nezávislost dat Fyzická nezávislost dat znamená odd lení zp sobu fyzického uložení dat (nap íklad na disku) od zp sobu práce s nimi. Chceme-li pracovat s tabulkou zam stnanc, odkážeme se na ni pomocí jejího názvu (nap. ) a nemusíme se zabývat tím, kde je uložena na disku po íta e a jakým zp sobem jsou fyzicky zaznamenána data v ní uložená. 1.1.3.2 Logická nezávislost dat O logické nezávislosti dat hovo íme tehdy, když zm na logické struktury dat (její rozší ení o další tabulky nebo sloupce v existující tabulce) nevyžaduje úpravu již existujících program nebo dotaz pracujících s daty.

DATA A JEJICH ULOŽENÍ 17 1.2 Data a jejich uložení 1.2.1 Databázové tabulky V textovém editoru pracujeme s textovými soubory, v tabulkovém kalkulátoru s tabulkovými listy a v databázovém prost edí jsou to hlavn databázové tabulky. Databázová tabulka je velmi podobná tabulce v tabulkovém kalkulátoru. Jedná se však o tu nejjednodušší formu tabulky s jedním titulkovým ádkem a bez jakýchkoliv titulk u jednotlivých ádk. Všechny ostatní hodnoty v tabulce jsou uživatelská data. Ukázku databázové tabulky, která obsahuje údaje o n kolika am stnancích fiktivní firmy, vidíme níže. z P íjmení Jméno Datum narození Výše platu v K Novák Adam 15. 3. 1956 6.000 Polesný František 25. 11. 1948 7.500 Drtina Robert 1. 4. 1962 8.000 Veselá Anna 4. 5. 1960 7.000 Smejkal Otakar 19. 8. 1959 8.000 Základní prvky tabulky sloupec ádek hodnota 1.2.1.2 Sloupce tabulky Tato velmi jednoduchá tabulka obsahuje ty i sloupce, kterým se také m že íkat atributy. Jsou to postupn P íjmení, Jméno, Datum narození a Výše platu. Každá tabulka musí obsahovat alespo jeden sloupec. 1.2.1.3 ádky tabulky V tabulce vidíme celkem p t ádk obsahujících data. ádky m žeme nazývat také záznamy. V tabulce bývá obvykle mnoho ádk. M žeme se setkat s tabulkami, které obsahují až miliony ádk, a na druhé

18 ÚVOD DO PRÁCE S DATABÁZEMI stran jsou tabulky, ve kterých není ádek žádný jsou prázdné. Pouze celé ádky m žeme do tabulky p idávat nebo z ní mazat. Výsledkem našich dotaz bude op t p evážn ádek nebo více ádk. 1.2.1.4 Hodnoty uživatelská data V pr se íku každého ádku a sloupce je hodnota zadaná uživatelem. Tato hodnota reprezentuje ur itý vztah mezi ádkem a sloupcem. V pr se íku ádku popisujícího zam stnance Nováka se sloupcem Plat nalezneme výši platu pana Nováka apod. ádek tabulky je potom skupina hodnot, která obsahuje stejný po- et prvk jako je po et sloupc v tabulce. První ádek naší tabulky tedy je, další atd. 1.2.2 Datové typy Již z naší velmi jednoduché tabulky vidíme, že data obsažená v r zných sloupcích mohou být r zného druhu. Jsou zde hodnoty ve sloupci Datum narození, které jsou vždy zadány jako datum a jako s datumem s nimi m žeme pracovat m žeme zjistit den v týdnu, dv hodnoty m žeme od sebe ode íst a získáme po et rok, m síc a dní mezi nimi apod. Dále jsou zde hodnoty ve sloupci Výše platu, se kterými m žeme pracovat jako s ísly m žeme je s ítat, od ítat, násobit apod. Existují však i další druhy hodnot, které se mohou v tabulce vyskytovat. Odborn se t mto druh m hodnot íká datové typy. Mezi základní datové typy pat í Text, Datum, íslo a logická hodnota Ano/Ne. S t mito datovými typy jsme se mohli setkat již v tabulkovém kalkulátoru. Pouze jsme explicitn nemuseli ur ovat typ pro každou vkládanou hodnotu. Všimn me si však, že narozdíl od tabulkového kalkulátoru se v jednom sloupci mohou vyskytovat pouze hodnoty stejného datového typu. Tento fakt vyplývá i z naší definice databázové tabulky, která m že mít titulkový pouze první ádek. Potom je z ejmé, že nemá smysl požadovat nap. vložení hodnoty typu Datum do sloupce Výše platu. Z t chto d vod hovo íme o datovém typu celého sloupce (nebo atributu) tabulky.

DATA A JEJICH ULOŽENÍ 19 Základní datové typy Znak (text) Jedná se o základní datový typ. Sloupec tohoto typu m že obsahovat libovolné znaky a to jak písmena, tak i ísla a n které další znaky jako árky, poml ky st edníky, závorky atd. Používá se zejména pro názvy (jako P íjmení a Jméno) a dále pro uložení všech hodnot, které není možné za adit do n kterého dalšího datového typu. íslo íselný datový typ m že obsahovat pouze íselné hodnoty ur itého rozsahu. Rozlišujeme n kolik druh íselných datových typ. Mezi základní rozlišení pat í, jestli se jedná o celé nebo desetinné íslo. U celých ísel rozlišujeme jejich rozsah nap. od 0 do 255, od - 32768 do 32767 apod. U desetinných pak maximální po et platných íslic celkem a za desetinnou árkou. íselné rozsahy jednotlivých datových typ závisí na používaném databázovém systému. Datum Slouží pro uchování datumu v libovolném formátu (den-m síc-rok, DD/MM/RRRR atp.) Ve v tšin databázových systém bývá do datumu zahrnut i as. Ano/Ne Tento speciální datový typ slouží pro uchování logických hodnot (pravda) a (nepravda). U každého zam stnance bychom nap íklad mohli zaznamenávat, jestli je, nebo není lenem odbor. V jednotlivých databázových prost edích mohou být použity odlišné názvy pro jednotlivé datové typy. Více se o datových typech dozvíme v referen ní ásti této publikace, v kapitole Datové typy.

20 ÚVOD DO PRÁCE S DATABÁZEMI 1.3 Vazby mezi daty v tabulkách Zatím jsme se v novali pouze jediné tabulce. V databázi však m že být (a obvykle i je) tabulek více. Hlavní význam databází spo ívá práv ve v tším po tu vzájemn provázaných tabulek. P edstavme si nyní, že naše firma má n kolik odd lení, jejichž p ehled je uveden následující tabulce: v íslo odd lení Název odd lení 1 Obchodní 2 Ú tárna 3 Reklamní Vra me se k naší jednoduché tabulce zam stnanc. Pravd podobn bychom cht li v d t, do kterého odd lení každý z t chto zam stnanc pat í. Musíme proto p idat další sloupec, který bude obsahovat íslo dd lení: o P íjmení Jméno D. narození Výše platu. odd lení Novák Jan 15. 3. 1956 6.000 1 Polesný František 25. 11. 1948 7.500 3 Drtina Robert 1. 4. 1962 8.000 3 Veselá Anna 4. 5. 1960 7.000 2 Smejkal Otakar 19. 8. 1959 8.000 1 Nebudeme se nyní zabývat zp sobem, kterým bychom p idali nový sloupec do tabulky v databázi a p ejd me rovnou k výsledné podob tabulky zam stnanc u každého zam stnance je uvedeno i íslo jeho odd lení. Pro jsme použili ísla odd lení místo jejich názv? P edstavme si, že by se z n jakých d vod název reklamního odd lení zm nil na Marketing. P i zp sobu, který jsme zvolili, sta í opravit název odd lení na jediném míst v tabulce odd lení. Kdybychom m li u každého zam stnance uveden název odd lení, museli bychom zm nit název odd lení jak v tabulce odd lení, tak i v tabulce zam stnanc. Museli bychom totiž provést zm nu názvu odd lení z Reklamní na Marketing u každého zam stnance, který do tohoto odd lení pat í. V našem

VAZBY MEZI DATY V TABULKÁCH 21 p ípad to jsou pouze dva Polesný a Drtina, ale v reálné situaci to mohou desítky a stovky záznam. Z tohoto d vodu se pro popis vztahu mezi tabulkami používají tzv. identifikátory. 1.3.1 Identifikátory ádk Úkolem identifikátoru je jednozna n identifikovat jeden ádek v tabulce. Identifikátor musí být tedy v rámci jedné tabulky jedine ný nesmí existovat dva ádky se stejnou hodnotou identifikátoru. 1.3.1.1 íselné identifikátory Identifikátorem bývá v tšinou íslo, u kterého máme jistotu, že se nikdy nezm ní. Nap íklad u osob to bývá jejich rodné íslo, íslo pasu nebo íslo ob anského pr kazu. Pokud bychom použili hodnotu, která se m že m nit, museli bychom p i každé její zm n nalézt v datech všechna místa, kde se tato hodnota použila jako identifikátor a nahradit ji hodnotou novou. Je z ejmé, že to je innost pracná a velice náchylná na zanesení chyb do datové základny. Proto je vhodné volit jako identifikátory takové hodnoty, u kterých máme relativní jistotu, že k jejich zm n nedojde. D vodem pro použití ísel místo textových názv bývá úspora místa a následn i zvýšení rychlosti zpracování. Název odd lení totiž m že být i Odd lení materiáln -technického zásobování a ten zabere rozhodn více místa než íselné ozna ení odd lení nap. 05. Kdybychom používali názvy odd lení v tabulce zam stnanc, byl by u každého zam stnance pat ícího do tohoto odd lení tento dlouhý název. Podle po tu zam stnanc v odd lení bychom m li celý název uložen v databázi desetkrát nebo i stokrát. Rozdíl mezi místem zabraným názvem a íslem se potom násobí po tem zam stnanc v odd lení. V sou asné dob p estává být úspora místa kritickým faktorem, ale p esto není rozumné místem plýtvat. Rozhodn m žeme použitím ísel místo názv výrazn zrychlit pozd jší zpracování našich dotaz. P i vyhledávání všech zam stnanc pat ících do ur itého odd lení nemusí být porovnávány velmi dlouhé názvy, ale sta í porovnávat ísla. A to je výrazn rychlejší na jakémkoliv po íta i.

22 ÚVOD DO PRÁCE S DATABÁZEMI 1.3.1.2 Složené identifikátory V n kterých p ípadech nesta í k jednozna né identifikaci ádku pouze jedna hodnota. Abychom p esn identifikovali daný ádek musíme znát hodnot více. V t chto p ípadech hovo íme o složených identifikátorech nebo o složených klí ích. P íkladem existence složeného klí e je tabulka Vyplaty obsahující výplaty všech zam stnanc za každý m síc. Každý m síc je vyplaceno tolik výplat, kolik je tou dobou zam stnanc ve firm. Každý zam stnanec dostává svoji výplatu každý m síc po dobu trvání pracovního pom ru. Známe-li m síc výplaty, musíme vybírat mezi více výplatami, které byly tento m síc vyplaceny. Známe-li zam stnance, musíme op t vybírat tentokrát mezi více m síci, kdy výplatu dostal. Pouze v p ípad, že známe zam stnance i m síc výplaty, m žeme jednozna n ur it, o kterou výplatu se jedná, a p ípadn její výši. Dvojice bude tvo it složený identifikátor v tabulce výplat. 1.3.2 Primární klí Primární klí je speciálním p ípadem identifikátoru ádku. Krom vlastnosti, že jednozna n identifikuje daný ádek, má zárove minimální délku. Složeným identifikátorem ádku z p edchozího p íkladu by mohla být i trojice, protože by také jednozna n ur ovala každý ádek. P esto se nejedná o primární klí, protože výši výplaty m žeme vypustit a stále bude dvojice jednozna n identifikovat každý ádek. Tato dvojice je zárove i primárním klí em v tabulce výplat, protože již nem žeme vypustit ani jeden z obou sloupc. 1.3.3 Cizí klí Primární klí e se používají v dalších tabulkách pro ur ení vazeb mezi tabulkami. U každé výplaty v tabulce výplat musíme ur it, kterému zam stnanci byla vyplacena. V tabulce zam stnanc podobn ur ujeme, do kterého odd lení zam stnanec pat í. Jako odkaz použijeme v tabulce výplat rodné íslo zam stnance a v tabulce zam stnanc íslo odd lení. V obou p ípadech se jedná o primární klí e v odkazovaných tabulkách, protože práv u primárních klí máme

VAZBY MEZI DATY V TABULKÁCH 23 jistotu, že jednozna n identifikují jeden ádek v odkazované tabulce. Použití primárního klí e cizí tabulky pro vytvo ení odkazu se nazývá cizí klí. Cizí klí jako zprost edkování vazby do jiné tabulky se bude vždy skládat ze stejných sloupc jako primární klí v odkazované tabulce. V p ípad, že bychom pot ebovali vytvo it odkaz do tabulky, ve které existuje složený primární klí, museli bychom p idat tolik sloupc, kolik je v odkazované tabulce sloupc v primárním klí i. 1.3.4 Integrita dat Pod integritou nebo konzistencí dat rozumíme fakt, že data v rn zobrazují reálný stav, který popisují. Základním p edpokladem udržení dat v konzistentním tvaru je kvalitn navržená datová základna. Návrhem datové základny se budeme podrobn ji zabývat ve zvláštní kapitole. Nekonzistence mezi realitou a daty, které ji popisují, mohou dále vznikat z t chto d vod : Nedostate ná aktualizace dat Data se postupn stávají neaktuálními. Stává se tak v p ípad, že nedokážeme zajistit p idání nových ádk do tabulek, opravu hodnot v existujících ádcích a rušení ádk o již neexistujících objektech reálného sv ta. P estože se jedná o triviální úkony, m že udržování datové základny v aktuálním stavu vyžadovat zejména u rozsáhlých aplikací nemalé úsilí, as a peníze. Referen ní integrita Tím, že máme základní informace o zam stnanci v jedné tabulce a údaje o výplatách v tabulce další, musíme dbát na to, abychom p i rušení zam stnance vymazali nejen základní informace o n m, ale i všechny jeho výplaty. Obecn e eno, musíme vymazat všechny ádky z ostatních tabulek, které se na tohoto zam stnance odkazovaly. Pokud bychom zapomn li vymazat n které odkazy, nebyli bychom pozd ji schopni ur it, ke kterému zam stnanci tyto údaje pat í, a datová základna by již nezobrazovala v rn stav reality.

24 ÚVOD DO PRÁCE S DATABÁZEMI 1.4 Další informace uložené v databázi Krom vlastních dat, jako je jméno zam stnance, výše jeho platu apod., jsou v databázi uloženy i informace, které jsou pouze pomocné. Tyto informace slouží zejména pro zrychlení zpracování našich požadavk. 1.4.1 Indexy Mezi nejvíce používané dodate né informace pat í tzv. indexy. S indexy se setkal každý z nás známe je nap íklad z ve ejné knihovny. Místo toho, abychom museli procházet dlouhé police a hledat požadovanou knížku, sta í prohledat malé karti ky v katalogu. Tyto karti ky jsou se azeny podle názvu knihy, což nám velmi uleh uje vyhledávání. Jist, podle názvu mohou být se azeny i knihy v policích, ale to má n kolik nevýhod: þ Manipulace s t žkými knihami je ur it náro n jší než s malými karti kami. Pokud bychom cht li p idat další knihu doprost ed police, museli bychom posunout všechny následující knihy o jedno místo dál. Na konci police by už nemuselo být dostate né místo a my bychom museli p enášet poslední knihu do další police. Naproti tomu vložení karti ky do katalogu na správné místo není nijak náro né. I v p ípad nedostatku místa není problém p esunout n kolik posledních karti ek do jiné p ihrádky. þ Hlavní výhodou použití index však je, že jich m žeme vytvo it více pro jedna a ta samá data. M žeme mít jeden katalog se azený podle názv knih, druhý podle jmen autor a kone n t etí podle tematických okruh. P i vyhledávání potom použijeme ten, který se nejvíce hodí pro naše pot eby. Když budeme hledat všechny knihy o zahradnictví, použijeme oborový katalog. Pot ebujeme-li všechna díla napsaná W. Shakespearem, použijeme katalog podle autor. P estože jsme hovo ili o knihovn a katalozích s papírovými karti kami, platí uvedené výhody a nevýhody i v p ípad použití po íta a elektronických médií. I v po íta i musí být data umíst na na disku a jejich fyzické azení do ur itého po adí a z toho vyplývající p esouvání zabere n jaký as. I když data vyhledává po íta, bude výsledek k dispozici d íve, když bude v d t, na kterém míst disku jsou ulo-

DALŠÍ INFORMACE ULOŽENÉ V DATABÁZI 25 ženy všechny knihy s titulem za ínajícím na T. V opa ném p ípad by musel být postupn na ítán ádek po ádku a kontrolován název titulu. A kone n, každému je z ejmé, že ani v po íta i nemohou být ádky v tabulce se azené najednou podle r zných kritérií. V sou asné chvíli není nutné, abychom znali p esnou strukturu index a zp sob práce s nimi. Sta í, když víme o jejich existenci a o tom, že mohou výrazn urychlit dobu pot ebnou k získání požadovaných informací. Podrobn ji se k index m a zejména k jejich tvorb vrátíme v pozd jších kapitolách. 1.4.2 Další pomocné informace v databázi Krom vlastních dat a index jsou v databázích uloženy informace popisující tato data. V t chto metadatech (informacích o informacích) jsou zaznamenány názvy existujících tabulek, po ty a názvy jejich sloupc a další informace nutné k tomu, abychom mohli s databází pracovat. T mto pomocným informacím se n kdy íká slovník dat.

2. Základy jazyka SQL Kapitola 2 2 ZÁKLADY JAZYKA SQL 2.1 Historie...28 2.1.1 Databázové systémy...28 2.1.2 Databázový jazyk SQL...28 2.2 Rela ní model dat...30 2.2.1 Základní pojmy...30 2.2.2 Operace rela ní algebry...31 2.2.3 Podmínky minimální rela nosti...32 2.3 Základní p íkazy jazyka SQL...33 2.3.1 Dotazy pomocí p íkazu SELECT...33 2.3.2 P idávání ádk INSERT...39 2.3.3 Oprava hodnot v tabulce UPDATE...40 2.3.4 Vymazání ádk z tabulky DELETE...41 2.3.5 Vytvo ení tabulky CREATE TABLE...41 2.3.6 Odstran ní tabulky DROP TABLE...42

28 ZÁKLADY JAZYKA SQL 2.1 Historie 2.1.1 Databázové systémy Po átek databází a databázového zpracování dat m žeme nalézt v 60. letech, kdy firma IBM vytvo ila první databázový systém založený na hierarchickém modelu. Tento model p edpokládal hierarchické uspo ádání dat, podobné jako organiza ní struktura organizace. Datová základna byla tvo ena stromy, které m ly mezi nad ízeným a pod ízeným uzlem vztah 1:n (jeden nad ízený uzel má jednoho nebo více následník ). V 70. letech se za aly stromy v hierarchickém modelu propojovat a bylo možné popisovat i složit jší struktury než pouhé hierarchické vazby. P esto se stále neda ilo popisovat všechna data a vazby mezi nimi, jak se vyskytují v realit. V polovin 70. let se proto za aly objevovat zcela nové databázové systémy založené na relacích a rela ní algeb e. 80. léta pak pat í již zcela rela ním databázím a jazyku SQL, který se postupn stal jediným prost edkem pro práci s tímto typem databázových systém. V sou asné dob se vývoj ubírá sm rem k objektovým databázím, jejichž hlavní výhoda spo ívá v možnosti uchovávání širokého spektra dat od znakových, p es obrazová a zvuková data až po video. Zatím je možné pozorovat dva trendy v implementaci objekt v databázových systémech. Jednak vznikají nové databázové systémy založené na objektových technologiích. Jejich výhodou je logická istota týkající se konzistentního objektového p ístupu ke všem objekt m vyskytujících se v databázi. V druhém p ípad se tv rci rela ních databázových systém snaží implementovat objekty a objektový p ístup do svých, již existujících produkt. V tomto p ípad nem že být zaru en striktn objektový p ístup a k n kterým dat m se stále používá p ístup rela ní. Nespornou výhodou je však zp tná kompatibilita t chto systém s velkým množstvím d íve napsaných program a také jejich vysp lost díky dlouhé dob jejich používání. 2.1.2 Databázový jazyk SQL V letech 1974 až 75 probíhal ve firm IBM výzkum týkající se možnosti využití rela ních databází. Pro tento projekt bylo nutné vytvo it sadu p íkaz, kterými by se rela ní databáze ovládala. Vznikl tak jazyk SE- QUEL (Structured English Query Language). Jak vypovídá jeho název, bylo cílem tv rc vytvo it jazyk, ve kterém by se p íkazy tvo ily syntakticky co nejblíže b žnému jazyku (angli tin ). Tento jazyk byl v upravené

HISTORIE 29 form SEQUEL/2 použit v databázovém systému SYSTEM R v roce 1977. Výhody rela ního p ístupu si uv domily i další firmy. Tak v roce 1979 uvedla na trh firma Relational Software, Inc. (nyní Oracle Corporation) sv j rela ní databázový systém s názvem Oracle. Firma IBM nadále vylepšovala sv j systém a v roce 1981 uvedla nový systém SQL/DS a pozd ji, v roce 1983, DB2. Vznikaly však i databázové systémy dalších firem nap. Progress, Informix a SyBase.V t chto systémech se používaly r zné verze jazyku SEQUEL, který se p ejmenoval na SQL (Structured Query Language). Vzr stající význam rela ních databází si vyžádal nutnost standardizace jazyka pro jejich používání. Americký standardiza ní institut (ANSI) p vodn zamýšlel vytvo it standard na základ zcela nového jazyka RDL. V roce 1984 se však ukázalo, že jazyk se SQL stává standardem de facto. Proto se nový standard založil na tomto jazyku a bývá ozna ován jako SQL86 podle roku 1986, ve kterém byl p ijat. V pr b hu následujících let se ukázalo, že p vodní standard obsahuje n které nedostatky a naopak v n m nejsou obsaženy n které d ležité prvky týkající se zejména integrity dat. Proto byl v roce 1992 p ijat nový standard ozna ovaný jako SQL-92 nebo pouze SQL2. Za základní rozší- ení je považováno p idání primárních klí a definice integritních omezení dat v tabulkách. V sou asné dob je stále ješt v návrhu verze standardu SQL3, která by m la zejména reflektovat objektový p ístup a objektové databáze obecn. Obecným problémem standard p ijímaných de iure r znými nadnárodními organizacemi je zpožd ní, které vznikne mezi pot ebou standardu a jeho p ijetím. Z d vod zp tné kompatibility dále jednotliví tv rci databázových systém ponechávají ve svých systémech i prvky a konstrukce, které nejsou sou ástí standardu SQL. Naopak se ve standardu SQL vyskytují požadavky, které žádný databázový systém nepodporuje. Proto se musíme smí it s faktem, že existuje pouze ur itá základní množina p íkaz jazyka SQL a jejich syntaxe, se kterou se m žeme setkat na všech databázových systémech. Mezi jednotlivými systémy se však mohou vyskytovat odlišnosti, které velmi zt žují možnost p enosu jednou napsaných p íkaz na jiný databázový systém. Proto je zejména v referen ní ásti této publikace uvedena základní syntaxe p íkaz, a potom jsou pro vybraná databázová prost edí vyjmenovány odlišnosti.

30 ZÁKLADY JAZYKA SQL 2.2 Rela ní model dat Rela ní databázové systémy jsou založeny na rela ním modelu dat a rela ní algeb e. P estože tento model tvo í matematický základ pro jazyk SQL, není jeho naprosté pochopení nutným p edpokladem pro zadávání správných p íkaz v jazyce SQL. Následující popis je proto v této publikaci uveden pouze pro úplnost. 2.2.1 Základní pojmy V každém matematickém modelu si nejprve musíme vysv tlit používané pojmy. þ þ þ þ þ Doména Množina hodnot stejného významového typu. Doménou m že být nap íklad v k nebo p íjmení. Hodnoty v domén jsou stejného datového typu íslo, et zec znak, datum apod. Kartézský sou in množin A, B Množina uspo ádaných dvojic [x, y] (obecn n-tic [x1, x2, x3, ]), pro které platí, že (x a zárove (y Po et prvk v kartézském sou inu je dán po tem prvk v množin A, krát po et prvk v množin B. Máme-li množinu A = {1, 2, 3} a množinu B = {a, b} je kartézský sou in M = A B dán takto: Relace Libovolná podmnožina kartézského sou inu. Relace m že být trvalá (jako nap íklad tabulka), odvozená (jako ur itý pohled na relaci trvalou) nebo do asná (pouze v pam ti, nap íklad p i spojování tabulek). Atribut Název domény pro použití v relaci. Atributem m že být nap íklad nebo definované nad doménou hodnot typu íslo, resp. et zec znak. V souvislosti s použitím tabulek hovo íme místo o atributu spíše o sloupci tabulky. Tabulka Zjednodušený a upravený pohled na relaci. Nepovažujeme za d ležité po adí sloupc, ale naopak m že být d ležité po adí ádk v tabulce.

RELA NÍ MODEL DAT 31 þ þ þ Klí nebo identifikátor Sloupec nebo skupina sloupc v tabulce jednozna n identifikující ádek tabulky. Primární klí Klí, který má minimální délku. Cizí klí Sloupec nebo skupina sloupc použitá jako odkaz v jiné tabulce, než ve které tvo í primární klí. 2.2.2 Operace rela ní algebry Pro jakékoliv operace se dv ma a více relacemi je nutné, aby tyto relace m ly stejnou strukturu stejný po et sloupc, z nichž navzájem odpovídající sloupce z obou relací budou vytvo eny nad stejnou doménou. Množinové operace Protože relace je zárove množina, m žeme s relacemi provád t množinové operace sjednocení, pr nik, rozdíl a kartézský sou in. Speciální operace Krom množinových operací jsou v rela ní algeb e definovány tyto speciální operace: þ Projekce Výb r sloupc z relace (tabulky) A do relace (tabulky) B. Vybrané sloupce jsou dané jmenným seznamem. þ Restrikce Výb r ádk z relace (tabulky) A do relace (tabulky) B na základ definované podmínky. þ Spojení tabulek Kartézský sou in dvou tabulek. Prvky tabulek jsou ádky a výsledkem je tabulka obsahující všechny sloupce z obou spojovaných tabulek. Po- et ádk výsledné tabulky je roven po tu ádk první tabulky krát po- tu ádk druhé tabulky. Protože mezi tímto velkým po tem ádk je mnoho t ch, které nepot ebujeme, kombinuje se spojení tabulek s restrikcí. P i spojování tabulky zam stnanc s tabulkou odd lení nás zajímají pouze ádky, ve kterých se íslo odd lení u zam stnance rovná íslu odd lení v tabulce zam stnanc. Pouze tyto ádky obsahují správnou kombinaci p íjmení a názv odd lení. Omezující podmínka se definuje v tšinou jako rovnost primárního a cizího klí e.

32 ZÁKLADY JAZYKA SQL 2.2.3 Podmínky minimální rela nosti Aby mohl být databázový systém považován za rela ní, musí spl ovat alespo následující podmínky: 1. Všechna uživatelská data a definice vlastní struktury databáze, jsou uložena v tabulkách. K ob ma skupinám dat se p istupuje pomocí stejných nástroj stejného jazyka. 2. Fyzická struktura dat a jejich uložení je od uživatele odstín no. 3. Existuje nástroj jazyk, který umož uje realizovat alespo operaci restrikce, projekce a spojování tabulek, aniž by obsahoval iteraci nebo rekurzi.

ZÁKLADNÍ P ÍKAZY JAZYKA SQL 33 2.3 Základní p íkazy jazyka SQL P íkazy jazyka SQL jsou len ny do n kolika skupiny, z nichž se nyní budeme zabývat pouze skupinou p íkaz pro manipulaci s daty. Manipulací rozumíme zejména vyhledávání dat, ale také p idávání nových ádk do tabulek, aktualizaci hodnot v ádcích nebo vymazání existujících ádk. Další skupiny p íkaz umož ují vytvá ení a rušení tabulek, index a jiných databázových objekt a nastavování parametr databázového systému. Tyto p íkazy jsou ur eny zejména pro zkušen jší uživatele a jsou popsány v referen ní ásti této publikace. Jazyk SQL byl navržen jako tzv. neprocedurální jazyk. V p íkazech popisuje, co chceme získat, a ne jak (postup, proceduru) to chceme získat. Liší se tak od v tšiny programovacích jazyk, které jsou procedurální a ve kterých vždy popisujeme p esný postup toho, co se má provést. P i zadávání SQL p íkaz není d ležité na kolika ádcích jsou zadány. Je lhostejné, jestli se jedná o jeden dlouhý ádek nebo více kratších ádk. Zvlášt složit jší p íkazy je proto vhodné rozd lit na více ádk, aby byly lépe itelné. 2.3.1 Dotazy pomocí p íkazu SELECT Pro vyhledávání dat podle r zných kritérií je v jazyku SQL k dispozici pouze p íkaz. Protože dotazy do databáze mohou být r znorodé, má i p íkaz mnoho variant. V této kapitole se budeme zabývat pouze t mi nejd ležit jšími, které však ve v tšin p ípad posta ují k získání požadovaných informací v p ehledné form. Detailní popis všech variant p íkazu je uveden v referen ní ásti, v kapitole 7 zabývající se pouze p íkazem. V kapitole 5 jsou uvedeny další p íklady použití tohoto p íkazu. Výpis všech informací v tabulce Nejjednodušší varianta p íkazu umož uje vypsat na obrazovku p ehled všech sloupc a ádk v tabulce: kde <název_tabulky> nahradíme skute ným názvem tabulky, jejíž obsah chceme vypsat. Chceme-li zobrazit všechny ádky z tabulky zam stnanc, která má jméno, zadáme:

34 ZÁKLADY JAZYKA SQL Poznámka þ Po zadání p íkazu musíme stisknout klávesu ENTER, aby se p íkaz odeslal k vykonání. V n kterých databázových prost edích je nutné ukon it p íkaz st edníkem ( ; ). Výsledek zadaného dotazu by mohl vypadat nap íklad takto: Vidíme, že tabulka obsahuje t i sloupce p íjmení, íslo odd lení a výši platu zam stnance. V tabulce jsou v sou asné dob pouze t i ádky, což nám pro za átek sta í. Tím jsme úsp šn zadali sv j první dotaz a dostali jsme ne zcela nezajímavou odpov známe jména a platy všech zam stnanc v naší fiktivní firm. Dotazovací jazyk SQL byl navržen tak, aby se co nejvíce podobal b žnému jazyku. Anglicky hovo ící lov k by zadaný dotaz dokázal p e íst jako vyber všechno z tabulky zam stnanc (tedy za p edpokladu, že by znal význam znaku * zastupujícího zde všechny sloupce v tabulce). Všechny další formy p íkazu budou zadávány podobným zp sobem. Znalost anglického jazyka bude proto pro nau ení jazyka SQL podstatným p ínosem. Výb r sloupc z tabulky projekce Tabulka m že obsahovat velké množství sloupc, ze kterých nás n které nezajímají. Pomocí p íkazu m žeme zadat, které ze sloupc chceme vypsat. Ostatní sloupce se ve výsledku neobjeví. Chceme-li vybrat pouze p íjmení a výši platu, zadáme název sloupc a bezprost edn za klí ové slovo, místo znaku *. Názvy sloupc odd líme árkou: Ve výsledku se objevuje pouze p íjmení a výše platu zam stnance:

ZÁKLADNÍ P ÍKAZY JAZYKA SQL 35 Omezení po tu ádk restrikce V našem jednoduchém p íklad jsou v tabulce zam stnanc pouze t i ádky. V reálné situaci by zde mohly být stovky nebo i tisíce ádk. M žeme se setkat i s tabulkami, ve kterých jsou miliony ádk. Výpis všech ádk z takto rozsáhlých tabulek by nem l velký smysl, protože bychom jej nedokázali ani p e íst, natož z n j získat n jaké informace. Pomocí p íkazu proto m žeme omezit po et ádk, které jsou zobrazeny na obrazovce, pouze na ty, které vyhovují ur ité podmínce. Podmínku tvo í výraz jehož výsledkem je logická hodnota nebo logická hodnota. Tento výraz je vyhodnocován pro každý ádek tabulky a pouze ádky, pro které byl vyhodnocen jako pravdivý, jsou zobrazeny ve výsledku. Více se o výrazech a o podmínkách dozvíme v referen ní ásti této publikace v kapitole Operátory, výrazy a podmínky. Zajímají-li nás pouze zam stnanci pracující v odd lení íslo 1, omezíme výsledek dotazu pouze na zam stnance, pro které platí. Takto zadaná podmínka je spln na pouze v p ípad zam stnanc pracujících v odd lení íslo 1 a pouze oni budou vypsáni na obrazovce: Podmínka se zadává za klí ové slovo (anglicky kde ) a celý dotaz tedy m žeme p eložit jako vyber všechno z tabulky zam stnanc, kde (platí, že) íslo odd lení se rovná 1. Ve výsledku dotazu není nyní pan Adámek, protože pracuje v odd lení íslo 2, a nespl uje tedy podmínku : Poznámka þ Zadáním omezení v p íkazu nedojde k vymazání ádk z tabulky! V tabulce z stává nadále stejný po et ádk. Pouze se n které z nich nezobrazí jako výsledek práv zadaného dotazu. Kombinace projekce a restrikce Omezení sloupc a ádk ve výsledku m žeme navzájem kombinovat. M žeme tak vypsat pouze p íjmení všech zam stnanc, kte í mají plat v tší než 5 500, K. Formulace podmínky bude : A výsledek bude vypadat takto:

36 ZÁKLADY JAZYKA SQL T íd ní ádk na výstupu Hledáme-li v datech ur itou informaci, je výhodné mít tato data set íd na podle zvoleného sloupce nebo sloupc. Kritérium pro t íd ní m že tvo it krom názvu sloupce i složit jší výraz. Kritérium se zadává za klí ovým slovem (z anglického se adit/po adí podle ): Dotaz vybere z tabulky zam stnanc všechny ádky a set ídí je abecedn podle p íjmení: Podobn m žeme set ídit výstup podle odd lení a v rámci odd lení podle výše platu: Nejprve jsou ve výsledku uvedeni zam stnanci z prvního odd lení. V rámci tohoto odd lení jsou set íd ni podle výše platu vzestupn. Pak následují zam stnanci z druhého odd lení atd.: Získání souhrnných informací Obzvlášt u rozsáhlých tabulek získáme alespo základní p edstavu o datech, známe-li jejich po et a minimální, maximální a pr m rnou hodnotu. P íkaz nám dává možnost získat tato data za celou tabulku, ale i za ur ité skupiny nap íklad odd lení. M žeme tak zjistit pr m rnou výši platu ve firm, ale i pr m rnou výši platu v jednotlivých odd leních.

ZÁKLADNÍ P ÍKAZY JAZYKA SQL 37 þ Souhrnné informace za celou tabulku K získání souhrnných informací slouží tzv. agrega ní funkce ( kapitola 8). Mezi n pat í (sou et), (pr m r), (minimum), (maximum) a (po et). Pomocí následujícího dotazu zjistíme n které souhrnné informace o platech ve firm : Výsledek dotazu: þ Vidíme, že ve firm jsou t i zam stnanci, jejich pr m rný plat je p ibližn 5.833, K, minimální 5.000, K a maximální 6.500, K. Podobným zp sobem bychom mohli použít i další agrega ní funkce. Je d ležité si uv domit, že takto získáme souhrnné informace za celou tabulku v našem p ípad za všechny zam stnance. Souhrnné informace za skupiny Pot ebujeme-li znát souhrnné informace v podrobn jším len ní nap íklad podle odd lení, musíme použít tzv. seskupování ádk pomocí klí ového slova (z anglického seskupit podle ). Chceme-li zjistit souhrnné informace za jednotlivá odd lení, budeme seskupovat zam stnance podle sloupce obsahujícího íslo odd lení (v našem p ípad ). Seskupení znamená, že jsou nejprve nalezeny a p i azeny k sob všechny ádky, které mají v zadaném sloupci stejnou hodnotu. V našem p ípad to jsou zam stnanci, kte í pracují ve stejném odd lení. Souhrnná funkce bude potom vypo tena pro každou takto vzniklou skupinu. Ve výsledku bude tolik ádk, kolik existuje skupin v našem p ípad dva, protože jsou dv odd lení: Výsledek:

38 ZÁKLADY JAZYKA SQL Z výsledku m žeme zjistit, že existují dv odd lení (s ísly 1 a 2). Z prvého ádku pak, že v prvním odd lení pracují dva zam stnanci, jejichž pr m rný plat je 5.500, K, minimální plat v odd lení je 5.000, K a maximální 6.000, K. Z druhého ádku vidíme, že ve druhém odd lení pracuje pouze jeden zam stnanec s platem 6.500, K. Spojování tabulek P edstavme si situaci, že chceme vypsat seznam všech zam stnanc spolu s názvy odd lení, ve kterých zam stnanci pracují. K tomu nám nesta í informace z tabulky zam stnanc, protože zde je uloženo pouze íslo odd lení, a ne jeho plný název. Musí tedy existovat další tabulka obsahující ísla všech odd lení a jejich názvy. Pomocí této tabulky budeme moci vytvo it požadovaný seznam zam stnanc. P i spojování tabulek nesmíme zapomenout uvést tzv. spojovací podmínku. Ta ur uje, které ádky z obou tabulek se mají navzájem spojit. Pracuje-li pan Novák v odd lení íslo 1, chceme pro n j vyhledat v druhé tabulce název prvního odd lení. U pana Nováka nás nezajímají názvy ostatních odd lení. Z hlediska rela ní algebry se jedná o restrikci kartézského sou inu pouze na dvojice ádk, které mají smysl. Podmínka se ve v tšin p ípad zadává jako rovnost dvou sloupc, z nichž každý je v jedné tabulce. V našem p ípad je to íslo odd lení: Spojovací podmínka se zadává stejn jako ostatní podmínky za klí ové slovo. V tomto p ípad zajiš uje, že se ke každému zam stnanci vyhledá v tabulce odd lení název odd lení, ve kterém tento zam stnanec pracuje: Všimn me si také uvedení názv obou tabulek ( a ) za klí ovým slovem. Více se o spojování tabulek dozvíme v referen ní ásti publikace ( kapitola 7).

ZÁKLADNÍ P ÍKAZY JAZYKA SQL 39 2.3.2 P idávání ádk INSERT Do existující tabulky m žeme pomocí p íkazu p idávat nové ádky. ádek p idáme tak, že zadáme hodnoty pro všechny sloupce tabulky. Do tabulky zam stnanc z p edcházejících p íklad, která obsahuje sloupce, a, p idáme nového zam stnance s p íjmením Petrásek. Tento zam stnanec bude pat it do odd lení íslo 2 a bude mít plat ve výši 6.200, K : Za klí ovými slovy musíme uvést název tabulky, do které chceme ádek p idat. V našem p ípad je to tabulka zam stnanc s názvem. Klí ové slovo oznamuje, že budeme p idávat hodnoty. Za ním následuje seznam hodnot odd lených árkou a uzav ený do kulatých závorek. Hodnoty v seznamu jsou postupn p i azovány do sloupc nového ádku. Hodnota se vloží do sloupce, hodnota do sloupce a hodnota do sloupce. Hodnoty v seznamu musí svým po tem a typem odpovídat sloupc m v tabulce. Poznámka þ Všimn me si použití apostrof p i zadávání p íjmení zam stnance. Všechny et zce znak, které budeme používat v SQL p íkazech, musí být uzav eny v apostrofech nebo v uvozovkách, podle používaného databázového prost edí. Neznámá hodnota P idat ádek do tabulky m žeme i v p ípad, že neznáme jednu nebo více hodnot. Místo hodnoty, kterou neznáme, použijeme speciální hodnotu s názvem. Ta ozna uje neznámou nebo nezadanou hodnotu: P edchozím p íkazem jsme p idali do tabulky zam stnanc pana Petráska v etn výše jeho platu, aniž bychom ur ili, do kterého odd lení bude pat it.

40 ZÁKLADY JAZYKA SQL Poznámka þ Je z ejmé, že pro používání hodnot budou existovat ur itá omezení. Nemá nap íklad význam p idat ádek, který obsahuje pouze hodnoty. P i vytvá ení tabulky se proto ur uje, které sloupce mohou obsahovat hodnotu a které ne. 2.3.3 Oprava hodnot v tabulce UPDATE P i práci s databází se dostaneme do situace, kdy musíme opravit d íve zadanou hodnotu nebo hodnoty: zam stnanec m že být p e azen do jiného odd lení, dojde ke zvýšení plat apod. Pro tento ú el používáme p íkaz. P i jeho používání nedochází ke zm n po tu ádk v tabulce, ale pouze ke zm n hodnot v jednom nebo více sloupcích u jednoho nebo více ádk tabulky. Nejjednodušší formou p íkazu je aktualizace jednoho sloupce u všech ádk tabulky. Ukážeme si zvýšení platu o 20 % u všech zam stnanc : nebo zkrácen : Takto zadaný p íkaz prochází tabulku zam stnanc ádek po ádku a u každého zam stnance uloží do sloupce plat hodnotu jeho 1,2násobku. Jinými slovy, zvýší plat o 20 %. Jak ale zadat p íkaz, když chceme zvýšit plat pouze zam stnanc m ve druhém odd lení? Podobn jako u p íkazu m žeme zadat podmínku za klí ové slovo. Tato podmínka omezí množinu ádk, se kterými chceme pracovat tj. ve kterých chceme zvýšit plat: Podmínka zajistí, že plat bude zvýšen pouze zam stnanc m z odd lení íslo 2. Podobn m žeme zm nit íslo odd lení u zam stnance se jménem Petrásek, pokud máme jistotu, že v tabulce zam stnanc je pouze jeden zam stnanec s tímto jménem:

ZÁKLADNÍ P ÍKAZY JAZYKA SQL 41 2.3.4 Vymazání ádk z tabulky DELETE P íkaz je opakem p íkazu. Z tabulky vymaže úpln všechny ádky, nebo pouze ty, které spl ují zadanou podmínku. Protože v tšinou nechceme z tabulky vymazat všechny ádky, nesmíme zapomenout tuto podmínku zadat. Podmínka, ur ující, které ádky chceme vymazat, se zadává jako obvykle za klí ové slovo. M žeme nap íklad vymazat pouze zam stnance, kte í pracují v prvním odd lení: Zam stnanci, kte í pracují v jiném než prvním odd lení, z stanou i nadále v tabulce. Pozor! þ Nezadáme-li podmínku, budou z tabulky vymazány všechny ádky: Tento p íkaz vymaže z tabulky zam stnanc všechny ádky. 2.3.5 Vytvo ení tabulky CREATE TABLE P íkaz umož uje vytvo ení databázové tabulky. P i jejím vytvá- ení musíme zadat název, kterým se na ni budeme odkazovat v dalších SQL p íkazech, a hlavn názvy sloupc, které bude tabulka obsahovat. U každého sloupce musíme navíc zadat datový typ hodnot, které bude obsahovat íslo, et zec znak, datum apod. (Datové typy jsou podrobn vysv tleny ve zvláštní kapitole.) Vytvo me pomocí p íkazu tabulku zam stnanc. Ta bude pojmenována a bude obsahovat t i sloupce: p íjmení zam stnance s názvem a datovým typem et zec znak o maximální délce 50 znak, íslo odd lení s názvem a do t etice výši platu s názvem a datovým typem desetinné íslo s dv ma platnými desetinnými místy:

42 ZÁKLADY JAZYKA SQL V seznamu jsou názvy sloupc a jejich datové typy odd leny árkou. Celý seznam je uzav en do kulatých závorek. Grafická úprava p íkazu je pouze pro jeho p ehlednost a nemá žádný vliv na jeho provedení. Poznámka þ Pro zadání datových typ sloupc byly použity datové typy z databázového systému Oracle. 2.3.6 Odstran ní tabulky DROP TABLE Existující tabulku, v etn všech ádk, odstraníme z databáze pomocí p íkazu a uvedením jejího názvu. P ed odstran ním tabulky nebude vyžádáno potvrzení této operace jako nap íklad p i vymazání soubor. Proto používejme tento p íkaz s rozmyslem jednou odstran nou tabulku a všechna v ní obsažená data nelze pozd ji obnovit. Takto zadaný p íkaz odstraní celou tabulku zam stnanc v etn všech ádk.

3 Návrh datové základny Kapitola 3 3 NÁVRH DATOVÉ ZÁKLADNY 3.1 Analýza p edm tné oblasti...44 3.2 T i úrovn návrhu...45 3.2.1 Konceptuální úrove...45 3.2.2 Logická úrove...50 3.2.3 Implementa ní úrove...51 3.3 Slovník dat...52

44 NÁVRH DATOVÉ ZÁKLADNY 3.1 Analýza p edm tné oblasti Návrh datové základny a její struktury by nem l být, zvlášt u rozsáhlejších systém, živelným procesem postupn reagujícím na vzniklé požadavky. V sou asné dob existují historicky ov ené postupy a pravidla návrhu, která umožní a do jisté míry i zaru í vytvo ení kvalitní datové základny, která bude ádn zdokumentovaná, logicky konzistentní a bude umož ovat relativn snadné zapracování skute ností vzniklých pozd ji. Tato kapitola si neklade za cíl popsat metodiku návrhu datové základny a již v bec ne metodiku návrhu a implementace databázové aplikace. Snaží se pouze upozornit na význam po áte ní analýzy oblasti, kterou chceme popsat v databázovém prost edí, p edtím než za neme vytvá et tabulky a dotazy pomocí jazyka SQL. ím pozd ji totiž odhalíme chyby v návrhu datové základny, tím v tší námahu a tím i finan ní prost edky budeme muset ob tovat na jejich nápravu.

T I ÚROVN NÁVRHU 45 3.2 T i úrovn návrhu Jedním z možných p ístup je odd lení popisu oblasti našeho zájmu od vlastní implementace na po íta i. Zp sob implementace m že výrazn ovlivnit strukturu datové základny, ale s oblastí, kterou datová základna popisuje, nemá nic spole ného. Princip t í architektur rozd luje postup návrhu datové základny na t i kroky, které si podrobn popíšeme. 3.2.1 Konceptuální úrove Na této úrovni se snažíme popsat p edm tnou oblast pomocí všech entit, které se v ní vyskytují, a všech vztah mezi t mito entitami. V žádném p ípad však nebereme v úvahu pozd jší zp sob implementace a do jisté míry ani pozd jší omezení technologického charakteru. Tím, že neuvažujeme o pozd jším zp sobu implementace v konkrétním databázovém systému, m žeme v novat veškerou energii na pochopení vlastního problému. Nakonec získáme i obecn platný popis dané oblasti, který m žeme použít pro implementaci v odlišných databázových systémech bez nutnosti op tovné analýzy. Cíle konceptuálního modelu þ vytvo it obraz reality ve formalizované podob nezávislý na pozd jším zp sobu implementace; þ formalizovat požadavky uživatel a dát návrhá m snadno pochopitelný prost edek pro komunikaci s uživateli, kterému budou i uživatelé rozum t; þ vytvo it podklad pro návrh datové základny. 3.2.1.2 E-R diagramy, ERA diagramy K formálnímu popisu reality slouží tzv. E-R diagramy z anglického Entity-Relationship (do eštiny p ekládané jako diagramy entit a vztah ) nebo ERA diagramy z anglického Entity-Relationship-Attribute. V ERA diagramech jsou navíc u každé entity uvedeny i její atributy. Pro kreslení obou typ diagram existuje velké množství notací, které se liší množstvím zna ek vyjad ující vlastnosti popisované oblasti. Z praktických zkušeností vyplývá, že ani nejvíce graficky bohaté notace nedokážou popsat všechny situace z reálného sv ta a je nutné doplnit každý diagram slovním popisem. Velké množství zna ek používaných v diagramech navíc iní tyto diagramy nep ehlednými a zt žuje jejich

46 NÁVRH DATOVÉ ZÁKLADNY pochopení. Z t chto d vod se omezíme pouze na základní notaci, se kterou se m žeme setkat s drobnými odlišnostmi tém ve všech produktech pro podporu návrhu datové základny. Prvky v datových modelech Entita Významný prvek ve zkoumané oblasti. Entitou m že být zam stnanec, odd lení, výplata apod. Entity se v diagramu vyzna ují jako obdélníky s vepsaným názvem entity. Atribut Vlastnost entity podstatná z hlediska zkoumané oblasti. Atributem entity Zam stnanec bude jeho jméno, výše platu apod. Atributy nemusíme v diagramu vyzna ovat. Sta í, budou-li uvedeny v textovém komentá i k tomuto diagramu. Vztah Libovolný vztah, ve kterém mohou být dv (nebo více) entit. V ta Zam stnanec pracuje v odd lení je vyjád ením vztahu pracuje v mezi entitami Zam stnanec a Odd lení. Vztah je vhodné pojmenovat, protože mezi dv ma entitami m že existovat více r zných vztah. Vztah je v diagramu vyzna en jako ára, která spojuje entity vystupující v tomto vztahu. Zam stnanec pracuje v Odd lení Ukázka E-R diagramu Tento velmi jednoduchý E-R diagram obsahuje dv entity Zam stnanec a Odd lení. Zárove vyzna uje vztah mezi t mito entitami pracovat v ( Zam stnanec pracuje v odd lení ). Kardinalita vztahu Všimn me si vidli ky na stran zam stnance ve vztahu s odd lením. Jejím smyslem je vyjád it tzv. kardinalitu vztahu zam stnance a odd lení. Pod kardinalitou rozumíme po et výskyt objekt obou entit, které se vztahu ú astní. Víme, že v jednom odd lení pracuje obvykle více zam stnanc. Naproti tomu jeden zam stnanec pracuje v jeden okamžik pouze v jednom odd lení. Jedná se o p íklad vztahu n:1 (n zam stnanc pracuje v jednom odd lení) nebo opa n 1:n (v jednom odd lení pracuje n zam stnanc ).