Úvod do databázových systémů

Podobné dokumenty
Úvod do databázových systémů

Úvod do databázových systémů

Informační systémy ve zdravotnictví. 8. cvičení

Informační systémy ve zdravotnictví. 6. cvičení

Úvod do databázových systémů

Informační systémy ve zdravotnictví. 10. cvičení

KIV/ZIS cvičení 5. Tomáš Potužák

Úvod do databázových systémů 3. cvičení

Úvod do databázových systémů

Úvod do databázových systémů

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

Databáze SQL SELECT. David Hoksza

Databázové systémy I

Jazyk SQL 1. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12

6. blok část B Vnořené dotazy

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

Databázové systémy. Cvičení 6: SQL

Úvod do databázových systémů 1. cvičení

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

4. blok část A Logické operátory

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

6. blok část C Množinové operátory

Databázové systémy Cvičení 5

XMW4 / IW4 Pokročilé SELECT dotazy. Štefan Pataky

Úvod do databázových systémů 6. cvičení

Databáze I. Přednáška 6

Databázové systémy Cvičení 5.3

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Jazyk SQL databáze SQLite. připravil ing. petr polách

KIV/ZIS cvičení 6. Tomáš Potužák

Databázové systémy Cvičení 5.2

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Databázové systémy a SQL

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

8.2 Používání a tvorba databází

Databázové systémy a SQL

SQL SQL-SELECT. Informační a znalostní systémy. Informační a znalostní systémy SQL- SELECT

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Základní přehled SQL příkazů

Co bude výsledkem mého SELECTu? RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

MS Access Dotazy SQL

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

5. blok Souhrnné a skupinové dotazy

Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata

Jazyk SQL 2. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c M.Valenta, 2011 BI-DBS, ZS 2011/12

5. POČÍTAČOVÉ CVIČENÍ

Databázové systémy a SQL

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23

PG 9.5 novinky ve vývoji aplikací

KIV/ZIS - SQL dotazy. stáhnout soubor ZIS- 04_TestovaciDatabaze accdb. SQL dotazy. budeme probírat pouze SELECT

Operátory ROLLUP a CUBE

MS Access Dotazy SQL

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

DJ2 rekurze v SQL. slajdy k přednášce NDBI001. Jaroslav Pokorný

12. blok Pokročilé konstrukce SQL dotazů - část II

2. přednáška. Databázový přístup k datům (SŘBD) Možnost počítání v dekadické aritmetice - potřeba přesných výpočtů, např.

Databázové systémy úvod

Úvod do databázových systémů

Sada 1 - PHP. 15. Výběr dat z databáze. Příkaz SELECT

Michal Krátký, Miroslav Beneš

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

Kapitola 4: SQL. Základní struktura

Analýza a modelování dat. Přednáška 8

OBJECT DEFINITION LANGUAGE. Jonáš Klimeš NDBI001 Dotazovací Jazyky I 2013

Maturitní témata z předmětu PROGRAMOVÉ VYBAVENÍ pro šk. rok 2012/2013

Úvod do databázových systémů

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Databázové systémy Tomáš Skopal

Vzorové příklady SQL. Tabulka: Kniha CREATE TABLE kniha (id INTEGER, název VARCHAR(50), PRIMARY KEY (id))

Úvod do databázových systémů 10. cvičení

Programování v jazyce JavaScript

SQL v14. 4D Developer konference. 4D Developer conference 2015 Prague, CZ Celebrating 30 years

Microsoft Access. Typy objektů databáze: Vytvoření a návrh nové tabulky. Vytvoření tabulky v návrhovém zobrazení

LEKCE 6. Operátory. V této lekci najdete:

5 Přehled operátorů, příkazy, přetypování

Osnova je orientační pro FIT, u FEKTu se dá předpokládat, že budou zohledněny předchozí znalosti studentů, kde většina s databází nikdy přímo

RELAČNÍ DATABÁZOVÉ SYSTÉMY

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Databázové systémy. Dotazovací jazyk SQL - II

37. Indexování a optimalizace dotazů v relačních databázích, datové struktury, jejich výhody a nevýhody

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

Programovací jazyk Pascal

Databáze 2011/2012 SQL SELECT II. RNDr.David Hoksza, Ph.D.

Multi-dimensional expressions

PROCESOR RELAČNÍ ALGEBRY

Algoritmizace a programování

Instalace. Produkt je odzkoušen pro MS SQL server 2008 a Windows XP a Windows 7. Pro jiné verze SQL server a Windows nebyl testován.

Marketingová komunikace. 2. soustředění. Mgr. Pavel Vávra Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph)

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

SPŠS Č.Budějovice Obor Geodézie a Katastr nemovitostí 3.ročník ATRIBUTY ZÁKLADN POJMY VÝBĚR PRVKŮ DLE ATRIBUTŮ

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Transkript:

Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Katedra informatiky Database Research Group Úvod do databázových systémů Cvičení 3 Ing. Petr Lukáš petr.lukas@vsb.cz EA440 Ostrava, 2016

Náplň cvičení SQL Structured Query Language

Rozdělení jazyků pro práci s daty DDL (Data Definition Language) Vytváření datových struktur (prázdných tabulek) DML (Data Manipulation Language) Vkládání, úprava a mazání dat DQL (Data Query Language) Dotazování nad daty

Rozdělení jazyků pro práci s daty DDL (Data Definition Language) Vytváření datových struktur (prázdných tabulek) DML (Data Manipulation Language) Vkládání, úprava a mazání dat SQL DQL (Data Query Language) Dotazování nad daty

Rozdělení jazyků pro práci s daty DDL (Data Definition Language) Vytváření datových struktur (prázdných tabulek) DML (Data Manipulation Language) Vkládání, úprava a mazání dat SQL DQL (Data Query Language) Dotazování nad daty

Klauzule příkazu SELECT SELECT FROM WHERE GROUP BY HAVING ORDER BY seznam sloupců na výstupu vstupní tabulky podmínka seskupení podmínka skupiny seřazení výsledku Ne všechny klauzule jsou povinné, ale jejich pořadí je striktně dané!

Klauzule příkazu SELECT SELECT FROM WHERE GROUP BY HAVING ORDER BY seznam sloupců na výstupu vstupní tabulky podmínka seskupení podmínka skupiny seřazení výsledku Ne všechny klauzule jsou povinné, ale jejich pořadí je striktně dané!

Klauzule příkazu SELECT login jmeno prijmeni datum_narozeni nov078 Jan Novák 5.9.1987 ble424 Adam Bledý 7.6.1988 ska065 Luboš Škaredý 2.8.1991 Vyber vše z tabulky Vyber všechny studenty, kteří se narodili po 1.1.1988 Vyber jména a příjmení všech studentů Vyber všechny studenty setřízené sestupně dle data narození

Klauzule příkazu SELECT login jmeno prijmeni datum_narozeni nov078 Jan Novák 5.9.1987 ble424 Adam Bledý 7.6.1988 ska065 Luboš Škaredý 2.8.1991 Vyber vše z tabulky Vyber všechny studenty, kteří se narodili po 1.1.1988 Vyber jména a příjmení všech studentů Vyber všechny studenty setřízené sestupně dle data narození FROM FROM WHERE datum_narozeni > 1.1.1988 SELECT jmeno, prijmeni FROM FROM ORDER BY datum_narozeni DESC

Spojování tabulek login jmeno skola nov078 Jan 1 luk194 Petr 1 lak065 Luboš 2 Skola id nazev 1 VŠB TUO 2 Ostravská univerzita Vyber jména studentů a k nim názvy škol, ve kterých studují

Spojování tabulek login jmeno skola nov078 Jan 1 luk194 Petr 1 lak065 Luboš 2 Skola id nazev 1 VŠB TUO 2 Ostravská univerzita Vyber jména studentů a k nim názvy škol, ve kterých studují SELECT jmeno, nazev FROM, Skola WHERE.skola = Skola.id jmeno Jan Petr Luboš nazev VŠB TUO VŠB TUO Ostravská univerzita

Syntaxe SQL (1) Booleovské výrazy Používáme spojky AND, OR, NOT pro logický součin, součet a negaci. Operátory porovnání Porovnání na shodnost pomocí = (nepoužívá se == jako v C++). Dále obvyklý význam mají znaky <, >, <> nebo!=. Speciální význam má porovnání s tzv. NULL hodnotou výrazy IS NULL nebo IS NOT NULL.

Syntaxe SQL (2) Aritmetika Standardní význam mají operátory +, -, *, /, % (modulo). Pozor, u dělení celých čísel vychází opět celé číslo! + může sloužit také pro konkatenaci (spojení) řetězců. Textové řetězce Textové řetězce se zapisují mezi jednoduché apostrofy. Speciální operátor LIKE slouží k porovnání řetězce s regulárním výrazem, kde znak % zastupuje libovolný počet libovolných znaků. např. jmeno LIKE P% všechna jména začínající na P.

Syntaxe SQL (3) Klauzule SELECT Bezprostředně za klauzulí select se mohou nacházet (mimo jiné) následující modifikátory: DISTINCT omezení duplicit na výstupu. SELECT DISTINCT jmeno FROM Vrať všechna křestní jména studentů. TOP n zajímá nás jen prvních n výsledků. Používá se např. pokud chceme jen nahlédnout, jak data vypadají nebo velmi výhodně také v kombinaci s třízením. SELECT TOP 1 login FROM ORDER BY datum_narozeni Vrať login nejstaršího studenta.

Syntaxe SQL (4) select TOP 10 jmeno FROM STUDent, vyrobek where prijmeni = Lukáš ORDER BY rok_narozeni vs. SELECT TOP 10 jmeno FROM, Vyrobek WHERE prijmeni = Lukáš ORDER BY rok_narozeni Každá klauzule začíná na novém řádku. U složitých dotazů je vhodné psát klíčová slova klauzulí na zvláštní řádky. Klíčová slova píšeme velkými písmeny. Názvy tabulek a atributů píšeme stejně, jako byly definovány. Tzn. máme-li např. tabulku, nebudeme se na ni odvolávat pomocí STUDENT. Kdykoli si nejsme jisti prioritou operátorů, použijeme závorky.

Shrnutí Rozdělení jazyků Jazyky pro dotazování (DQL), jazyky pro modifikaci dat (DML), jazyky pro definici dat (DDL). 6 klauzulí příkazu SELECT SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY Syntaxe SQL Operátory, booleovské výrazy, práce s řetězci Kultura psaní kódu Každá klauzule na novém řádku, klíčová slova velkými písmeny, tabulky a atributy pojmenováváme tak, jak byly definovány

Obsah cvičení Další konstrukce SQL Poddotazy

1. příklad konstrukce IN s výčtem hodnot nov078 Jan Novák 5.9.1987 prezenční luk194 Petr Lukáš 7.6.1988 prezenční lak065 Luboš Lakatoš 2.8.1991 kombinovaný mla452 Lukáš Mladý 1.10.1992 dálkový Vyber všechny prezenční a kombinované studenty

1. příklad konstrukce IN s výčtem hodnot nov078 Jan Novák 5.9.1987 prezenční luk194 Petr Lukáš 7.6.1988 prezenční lak065 Luboš Lakatoš 2.8.1991 kombinovaný mla452 Lukáš Mladý 1.10.1992 dálkový Vyber všechny prezenční a kombinované studenty FROM WHERE typ_studia = prezenční OR typ_studia = kombinovaný nov078 Jan Novák 5.9.1987 prezenční luk194 Petr Lukáš 7.6.1988 prezenční lak065 Luboš Lakatoš 2.8.1991 kombinovaný

1. příklad konstrukce IN s výčtem hodnot nov078 Jan Novák 5.9.1987 prezenční luk194 Petr Lukáš 7.6.1988 prezenční lak065 Luboš Lakatoš 2.8.1991 kombinovaný mla452 Lukáš Mladý 1.10.1992 dálkový FROM WHERE typ_studia = prezenční OR typ_studia = kombinovaný Vyber všechny prezenční a kombinované studenty = FROM WHERE typ_studia IN ( prezenční, kombinovaný ) nov078 Jan Novák 5.9.1987 prezenční luk194 Petr Lukáš 7.6.1988 prezenční lak065 Luboš Lakatoš 2.8.1991 kombinovaný

2. příklad konstrukce IN s poddotazem Typ_Studia zkratka název dochazka nov078 Jan Novák 5.9.1987 P P Prezenční 1 luk194 Petr Lukáš 7.6.1988 P K Kombinované 1 lak065 Luboš Lakatoš 2.8.1991 K D Dálkové 0 mla452 Lukáš Mladý 1.10.1992 D Vyber všechny studenty, kteří podle typu studia musí mít pravidelnou docházku

2. příklad konstrukce IN s poddotazem Typ_Studia zkratka název dochazka nov078 Jan Novák 5.9.1987 P P Prezenční 1 luk194 Petr Lukáš 7.6.1988 P K Kombinované 1 lak065 Luboš Lakatoš 2.8.1991 K D Dálkové 0 mla452 Lukáš Mladý 1.10.1992 D Vyber všechny studenty, kteří podle typu studia musí mít pravidelnou docházku FROM WHERE typ_studia IN ( SELECT zkratka FROM Typ_Studia WHERE dochazka = 1 ) nov078 Jan Novák 5.9.1987 P luk194 Petr Lukáš 7.6.1988 P lak065 Luboš Lakatoš 2.8.1991 K

2. příklad konstrukce IN s poddotazem nov078 Jan Novák 5.9.1987 P luk194 Petr Lukáš 7.6.1988 P lak065 Luboš Lakatoš 2.8.1991 K mla452 Lukáš Mladý 1.10.1992 D Typ_Studia zkratka název dochazka P Prezenční 1 K Kombinované 1 D Dálkové 0 Vnější dotaz FROM WHERE typ_studia IN ( Vnitřní dotaz (poddotaz) SELECT zkratka FROM Typ_Studia WHERE dochazka = 1 ) nov078 Jan Novák 5.9.1987 P luk194 Petr Lukáš 7.6.1988 P lak065 Luboš Lakatoš 2.8.1991 K

2. příklad konstrukce IN s poddotazem Typ_Studia zkratka název dochazka nov078 Jan Novák 5.9.1987 P P Prezenční 1 luk194 Petr Lukáš 7.6.1988 P K Kombinované 1 lak065 Luboš Lakatoš 2.8.1991 K D Dálkové 0 mla452 Lukáš Mladý 1.10.1992 D FROM WHERE typ_studia IN ( SELECT zkratka FROM Typ_Studia WHERE dochazka = 1 ) nov078 Jan Novák 5.9.1987 P luk194 Petr Lukáš 7.6.1988 P lak065 Luboš Lakatoš 2.8.1991 K

2. příklad konstrukce IN s poddotazem Typ_Studia zkratka název dochazka nov078 Jan Novák 5.9.1987 P P Prezenční 1 luk194 Petr Lukáš 7.6.1988 P K Kombinované 1 lak065 Luboš Lakatoš 2.8.1991 K D Dálkové 0 mla452 Lukáš Mladý 1.10.1992 D FROM WHERE typ_studia IN ( P, K ) nov078 Jan Novák 5.9.1987 P luk194 Petr Lukáš 7.6.1988 P lak065 Luboš Lakatoš 2.8.1991 K

3. příklad konstrukce EXISTS nov078 Jan Novák 5.9.1987 prezenční luk194 Petr Lukáš 7.6.1988 prezenční lak065 Luboš Lakatoš 2.8.1991 kombinovaný mla452 Lukáš Mladý 1.10.1992 dálkový Vyberte všechny studenty, jejichž příjmení je zároveň jménem.

3. příklad konstrukce EXISTS nov078 Jan Novák 5.9.1987 prezenční luk194 Petr Lukáš 7.6.1988 prezenční lak065 Luboš Lakatoš 2.8.1991 kombinovaný mla452 Lukáš Mladý 1.10.1992 dálkový Vyberte všechny studenty, jejichž příjmení je zároveň jménem. FROM S1 WHERE EXISTS ( FROM S2 WHERE S2.jmeno = S1.prijmeni ) luk194 Petr Lukáš 7.6.1988 prezenční

3. příklad konstrukce EXISTS nov078 Jan Novák 5.9.1987 prezenční luk194 Petr Lukáš 7.6.1988 prezenční lak065 Luboš Lakatoš 2.8.1991 kombinovaný mla452 Lukáš Mladý 1.10.1992 dálkový FROM S1 WHERE EXISTS ( FROM S2 WHERE S2.jmeno = S1.prijmeni ) Nemůžeme si dovolit představu, že se nejprve provede vnitřní a potom vnější dotaz. luk194 Petr Lukáš 7.6.1988 prezenční

3. příklad konstrukce EXISTS nov078 Jan Novák 5.9.1987 prezenční luk194 Petr Lukáš 7.6.1988 prezenční lak065 Luboš Lakatoš 2.8.1991 kombinovaný mla452 Lukáš Mladý 1.10.1992 dálkový FROM S1 WHERE EXISTS ( FROM S2 WHERE S2.jmeno = S1.prijmeni ) Nemůžeme si dovolit představu, že se nejprve provede vnitřní a potom vnější dotaz. Vnitřní dotaz je závislý na vnějším. Je nutné si uvědomit, že podmínka WHERE se vyhodnocuje zvlášť pro každý vznikající záznam výstupu. luk194 Petr Lukáš 7.6.1988 prezenční

3. příklad konstrukce EXISTS login jmeno prijmeni typ_studia nov078 Jan Novák prezenční luk194 Petr Lukáš prezenční lak065 Luboš Lakatoš kombinovaný mla452 Lukáš Mladý dálkový FROM S1 WHERE EXISTS ( FROM S2 WHERE S2.jmeno = S1.prijmeni ) Připrav prázdný seznam result; for (s1 in ) { bool exists = false; for (s2 in ) { if (s2.jmeno == s1.prijmeni) { exists = true; } } if (exists) { přidej s1 do result; } } luk194 Petr Lukáš 7.6.1988 prezenční

3. příklad konstrukce EXISTS S1 nov078 Jan Novák 5.9.1987 prezenční luk194 Petr Lukáš 7.6.1988 prezenční lak065 Luboš Lakatoš 2.8.1991 kombinovaný mla452 Lukáš Mladý 1.10.1992 dálkový FROM S1 WHERE EXISTS ( FROM S2 WHERE S2.jmeno = Novák ) S1.prijmeni Pro záznam o Janu Novákovi, existuje nějaký student s křestním jménem Novák? NEEXISTUJE Jan Novák tedy nebude na výstupu.

3. příklad konstrukce EXISTS S1 S2 nov078 Jan Novák 5.9.1987 prezenční luk194 Petr Lukáš 7.6.1988 prezenční lak065 Luboš Lakatoš 2.8.1991 kombinovaný mla452 Lukáš Mladý 1.10.1992 dálkový FROM S1 WHERE EXISTS ( FROM S2 WHERE S2.jmeno = Lukáš ) S1.prijmeni Pro záznam o Petru Lukášovi, existuje nějaký student s křestním jménem Lukáš? ANO, EXISTUJE Petr Lukáš tedy bude na výstupu. luk194 Petr Lukáš 7.6.1988 prezenční

3. příklad konstrukce EXISTS S1 nov078 Jan Novák 5.9.1987 prezenční luk194 Petr Lukáš 7.6.1988 prezenční lak065 Luboš Lakatoš 2.8.1991 kombinovaný mla452 Lukáš Mladý 1.10.1992 dálkový FROM S1 WHERE EXISTS ( FROM S2 WHERE S2.jmeno = Lakatoš ) S1.prijmeni Pro záznam o Luboši Lakatošovi, existuje nějaký student s křestním jménem Lakatoš? NEEXISTUJE Luboš Lakatoš tedy nebude na výstupu. luk194 Petr Lukáš 7.6.1988 prezenční

3. příklad konstrukce EXISTS S1 nov078 Jan Novák 5.9.1987 prezenční luk194 Petr Lukáš 7.6.1988 prezenční lak065 Luboš Lakatoš 2.8.1991 kombinovaný mla452 Lukáš Mladý 1.10.1992 dálkový FROM S1 WHERE EXISTS ( FROM S2 WHERE S2.jmeno = Mladý ) S1.prijmeni Pro záznam o Lukáši Mladém, existuje nějaký student se jménem Mladý? NEEXISTUJE Lukáš Mladý tedy nebude na výstupu. luk194 Petr Lukáš 7.6.1988 prezenční

4. Příklad konstrukce ALL login jmeno prijmeni datum_narozeni nov078 Jan Novák 5.9.1987 luk194 Petr Lukáš 7.6.1988 lak065 Luboš Lakatoš 2.8.1991 mla452 Lukáš Mladý 1.10.1992 Ucitel login jmeno prijmeni datum_narozeni nov078 Ivan Hrozivý 1.2.1965 luk194 Karel Přísný 5.12.1972 lak065 Zdeněk Veliký 25.6.1990 mla452 Václav Důsledný 1.10.1985 Vyber všechny učitele, kteří jsou starší než všichni studenti

4. Příklad konstrukce ALL login jmeno prijmeni datum_narozeni nov078 Jan Novák 5.9.1987 luk194 Petr Lukáš 7.6.1988 lak065 Luboš Lakatoš 2.8.1991 mla452 Lukáš Mladý 1.10.1992 Ucitel login jmeno prijmeni datum_narozeni nov078 Ivan Hrozivý 1.2.1965 luk194 Karel Přísný 5.12.1972 lak065 Zdeněk Veliký 25.6.1990 mla452 Václav Důsledný 1.10.1985 Vyber všechny učitele, kteří jsou starší než všichni studenti FROM Ucitel WHERE datum_narozeni < ALL(SELECT datum_narozeni FROM ) login jmeno Prijmeni datum_narozeni nov078 Ivan Hrozivý 1.2.1965 luk194 Karel Přísný 5.12.1972 mla452 Václav Důsledný 1.10.1985

4. Příklad konstrukce ALL login jmeno prijmeni datum_narozeni nov078 Jan Novák 5.9.1987 luk194 Petr Lukáš 7.6.1988 lak065 Luboš Lakatoš 2.8.1991 mla452 Lukáš Mladý 1.10.1992 Ucitel login jmeno prijmeni datum_narozeni nov078 Ivan Hrozivý 1.2.1965 luk194 Karel Přísný 5.12.1972 lak065 Zdeněk Veliký 25.6.1990 mla452 Václav Důsledný 1.10.1985 FROM Ucitel WHERE datum_narozeni < ALL(SELECT datum_narozeni FROM ) login jmeno Prijmeni datum_narozeni nov078 Ivan Hrozivý 1.2.1965 luk194 Karel Přísný 5.12.1972 mla452 Václav Důsledný 1.10.1985

4. Příklad konstrukce ALL login jmeno prijmeni datum_narozeni nov078 Jan Novák 5.9.1987 luk194 Petr Lukáš 7.6.1988 lak065 Luboš Lakatoš 2.8.1991 mla452 Lukáš Mladý 1.10.1992 Ucitel login jmeno prijmeni datum_narozeni nov078 Ivan Hrozivý 1.2.1965 luk194 Karel Přísný 5.12.1972 lak065 Zdeněk Veliký 25.6.1990 mla452 Václav Důsledný 1.10.1985 FROM Ucitel WHERE datum_narozeni < ALL(5.9.1987, 7.6.1988, 2.8.1991, 1.10.1992) login jmeno Prijmeni datum_narozeni nov078 Ivan Hrozivý 1.2.1965 luk194 Karel Přísný 5.12.1972 mla452 Václav Důsledný 1.10.1985

5. Příklad konstrukce ANY (SOME) Ucitel login jmeno prijmeni datum_narozeni login jmeno prijmeni datum_narozeni nov078 Jan Novák 5.9.1987 nov078 Ivan Hrozivý 1.2.1965 luk194 Petr Lukáš 7.6.1988 luk194 Karel Přísný 5.12.1972 lak065 Luboš Lakatoš 2.8.1991 lak065 Zdeněk Veliký 25.6.1990 mla452 Lukáš Mladý 1.10.1992 mla452 Václav Důsledný 1.10.1985 Vyber studenty, kteří jsou starší než nějaký učitel FROM WHERE datum_narozeni < ANY(SELECT datum_narozeni FROM Ucitel) login jmeno prijmeni datum_narozeni nov078 Jan Novák 5.9.1987 luk194 Petr Lukáš 7.6.1988

5. Příklad konstrukce ANY (SOME) Ucitel login jmeno prijmeni datum_narozeni login jmeno prijmeni datum_narozeni nov078 Jan Novák 5.9.1987 nov078 Ivan Hrozivý 1.2.1965 luk194 Petr Lukáš 7.6.1988 luk194 Karel Přísný 5.12.1972 lak065 Luboš Lakatoš 2.8.1991 lak065 Zdeněk Veliký 25.6.1990 mla452 Lukáš Mladý 1.10.1992 mla452 Václav Důsledný 1.10.1985 Vyber studenty, kteří jsou starší než nějaký učitel FROM WHERE datum_narozeni < ANY(SELECT datum_narozeni FROM Ucitel) login jmeno prijmeni datum_narozeni nov078 Jan Novák 5.9.1987 luk194 Petr Lukáš 7.6.1988

5. Příklad konstrukce ANY (SOME) Ucitel login jmeno prijmeni datum_narozeni login jmeno prijmeni datum_narozeni nov078 Jan Novák 5.9.1987 nov078 Ivan Hrozivý 1.2.1965 luk194 Petr Lukáš 7.6.1988 luk194 Karel Přísný 5.12.1972 lak065 Luboš Lakatoš 2.8.1991 lak065 Zdeněk Veliký 25.6.1990 mla452 Lukáš Mladý 1.10.1992 mla452 Václav Důsledný 1.10.1985 Vyber studenty, kteří jsou starší než nějaký učitel FROM WHERE datum_narozeni < ANY(1.2.1965, 5.12.1972, 25.6.1990, 1.10.1985) login jmeno prijmeni datum_narozeni nov078 Jan Novák 5.9.1987 luk194 Petr Lukáš 7.6.1988

Shrnutí IN EXISTS ALL ANY Ptám se, zda hodnota atributu spadá do nějakého výčtu. Test na existenci záznamu Porovnání s výčtem hodnot, porovnání musí platit pro všechny hodnoty ve výčtu Porovnání s výčtem hodnot, porovnání musí platit alespoň jednou

Shrnutí Uvedené konstrukce se velmi často kombinují s použitím poddotazu. Pokud je vnitřní poddodtaz nezávislý na vnějším dotazu (tj. nenachází se tam žádná podmínka nebo výraz, který by se na vnější dotaz odkazoval), můžeme si představit vyhodnocení celého dotazu tak, že se nejprve vyhodnotí vnitřek, potom vnějšek. Pokud je vnitřní poddotaz závislý, musíme si vyhodnocení představit tak, že se vnitřní dotaz provede pro každý např. testovaný záznam z dotazu vnějšího.

Cvičení www.dbedu.cs.vsb.cz Přihlášení přes jednotný login a heslo Vpravo sloupec -> České kurzy -> UDBS