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

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

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

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

Ú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í

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

Databázové systémy I

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

KIV/ZIS - SELECT, opakování

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

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

Databáze SQL SELECT. David Hoksza

Databázové systémy a SQL

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

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

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

MS Access Dotazy SQL

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

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

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

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

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

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

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

5. blok Souhrnné a skupinové dotazy

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

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

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

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

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

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

MS Access Dotazy SQL

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

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

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

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

Operátory ROLLUP a CUBE

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

Databázové systémy Tomáš Skopal

U koly na procvic ení jazyka T-SQL

Databázové systémy a SQL

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

Distanční opora předmětu: Databázové systémy Tématický blok č. 1: Dotazovací jazyk SQL Autor: RNDr. Jan Lánský, Ph.D.

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

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

Architektury databázových

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

Kapitola 4: SQL. Základní struktura

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

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

Dotazy tvorba nových polí (vypočítané pole)

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

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

- sloupcové integritní omezení

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

Řešené příklady STUDENT(RČ, JMÉNO, SPECIALIZACE) PŘEDMĚT(KÓD, NÁZEV, SYLLABUS, GARANT) ZÁPIS(RČ, KÓD, SEMESTR, ZNÁMKA)

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

PROCESOR RELAČNÍ ALGEBRY

RNDr. Jakub Lokoč, Ph.D. RNDr. Michal Kopecký, Ph.D. Katedra softwarového inženýrství Matematicko-Fyzikální fakulta Univerzita Karlova v Praze

DATA CUBE. Mgr. Jiří Helmich

Materiál ke cvičením - SQL

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

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

1. Relační databázový model

PG 9.5 novinky ve vývoji aplikací

Databázové systémy a SQL

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

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

Dotazování v relačním modelu a SQL

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

Analýza a modelování dat 3. přednáška. Helena Palovská

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

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

SQL - SELECT. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, P edn. 7

SQL. strukturovaný dotazovací jazyk. Structured Query Language (SQL)

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

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.

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

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

6. SQL složitější dotazy, QBE

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

Dotazovací jazyky I. Datová krychle. Soběslav Benda

Dotazy v SQL. Výraz relační algebry R1( )[A1,A2,...,Aj] lze zapsat takto: SELECT A1,A2,...,Aj FROM R1 WHERE. Výraz (R1, R2... Rk)( )[A1,A2,...

Zpracování informací

téma: Výběrové dotazy v MS Access

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

ÚVOD DO DATABÁZÍ. Metodické listy pro předmět

DB1 cvičení 4 spojení tabulek a složitější dotazy

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

Jazyk SQL slajdy k přednášce NDBI001

Tiskové sestavy. Zdroj záznamu pro tiskovou sestavu. Průvodce sestavou. Použití databází

Úvod do SQL v systému SAS Martin Branda

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

Praktické ukázky použití SQL. Informační a znalostní systémy

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

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

TEORIE ZPRACOVÁNÍ DAT Cvičení 8

Transkript:

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

Opakování K čemu se používají následující konstrukce? 1. IN 2. EXISTS 3. ALL 4. ANY Co je výsledkem IN a EXISTS?

Opakování K čemu se používají následující konstrukce? 1. IN ptáme se, jestli hodnota je v nějakém výčtu 2. EXISTS testujeme existenci záznamu 3. ALL testujeme, zda určité porovnání platí pro všechny z výčtu 4. ANY testujeme, zda určité porovnání platí alespoň jednou pro nějaký výčet Co je výsledkem IN a EXISTS? Booleovská hodnota, tzn. IN a EXISTS jsou vždy součástí nějakého logického výrazu (např. v klauzuli WHERE)

Klauzule příkazu SELECT

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é!

Náplň cvičení Spojování tabulek Agregační funkce Vnořené dotazy a poddotazy

Spojování tabulek Spojování tabulek

1. příklad vnitřní spojení Student 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í

1. příklad vnitřní spojení Student 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 Student, Skola WHERE Student.skola = Skola.id jmeno Jan Petr Luboš nazev VŠB TUO VŠB TUO Ostravská univerzita

1. příklad vnitřní spojení Student 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 Student, Skola WHERE Student.skola = Skola.id = SELECT jmeno, nazev FROM Student JOIN Skola ON Student.skola = Skola.id jmeno Jan Petr Luboš nazev VŠB TUO VŠB TUO Ostravská univerzita

1. příklad vnitřní spojení Stále platí představa, jako bychom nejprve udělali kartézský součin a následně profiltrovali jen smysluplné kombinace záznamů. Student login jmeno skola nov078 Jan 1 luk194 Petr 1 lak065 Luboš 2 Skola id nazev 1 VŠB TUO 2 Ostravská univerzita SELECT jmeno, nazev FROM Student JOIN Skola ON Student.skola = Skola.id jmeno Jan Petr Luboš nazev VŠB TUO VŠB TUO Ostravská univerzita

2. příklad vnější spojení Student login jmeno skola nov078 Jan 1 luk194 Petr 1 lak065 Luboš 2 Skola id nazev 1 VŠB TUO 2 Ostravská univerzita Vyber názvy všech škol a jména studentů, kteří v nich studují

2. příklad vnější spojení Student login jmeno skola nov078 Jan 1 luk194 Petr 1 lak065 Luboš 2 Skola id nazev 1 VŠB TUO 2 Ostravská univerzita Vyber názvy všech škol a jména studentů, kteří v nich studují SELECT nazev, jmeno FROM Skola JOIN Student ON Skola.id = Student.skola nazev VŠB TUO VŠB TUO Ostravská univerzita jmeno Jan Petr Luboš Je výsledek správně? V tuto chvíli ano, ale

2. příklad vnější spojení Student login jmeno skola nov078 Jan 1 luk194 Petr 1 lak065 Luboš 2 Skola id nazev 1 VŠB TUO 2 Ostravská univerzita 3 ČVUT v Praze Vyber názvy všech škol a jména studentů, kteří v nich studují SELECT nazev, jmeno FROM Skola JOIN Student ON Skola.id = Student.skola nazev VŠB TUO VŠB TUO Ostravská univerzita jmeno Jan Petr Luboš Je výsledek správně? NE, ve výsledku není ČVUT.

2. příklad vnější spojení Student login jmeno skola nov078 Jan 1 luk194 Petr 1 lak065 Luboš 2 Skola id nazev 1 VŠB TUO 2 Ostravská univerzita 3 ČVUT v Praze Vyber názvy všech škol a jména studentů, kteří v nich studují SELECT nazev, jmeno FROM Skola LEFT JOIN Student ON Skola.id = Student.skola nazev VŠB TUO VŠB TUO Ostravská univerzita ČVUT v Praze jmeno Jan Petr Luboš NULL

Hodnota NULL Vyjadřuje prázdnou hodnotu (nevyplněno) Pro test na hodnotu NULL se používá speciální operátor IS NULL. Jakékoli jiné porovnání s hodnotou NULL vrací výsledek nepravda. Vyber všechny osoby, kde není vyplněna adresa. SELECT * FROM Osoba WHERE adresa = NULL SELECT * FROM Osoba WHERE adresa IS NULL

Typy spojení INNER JOIN Vnitřní spojení ekvivalent spojování pomocí podmínky WHERE OUTER JOIN Vnější levé nebo pravé spojení, které navíc zachovává všechny záznamy z levé nebo pravé tabulky.

3. příklad spojování více tabulek Kategorie Vyrobek Prodej Uzivatel id_kategorie nazev id_vyrobek id_kategorie nazev id_prodej id_vyrobek id_uzivatel cena id_uzivatel jmeno prijmeni Recenze id_recenze id_vyrobek titulek text Reklamace id_reklamace id_prodej duvod

3. příklad spojování více tabulek Kategorie Vyrobek Prodej Uzivatel Recenze Reklamace Vypište nadpisy recenzí, recenzované produkty a jejich kategorie. SELECT Recenze.Nadpis, Vyrobek.Nazev, Kategorie.Nazev FROM Recenze JOIN Vyrobek ON Recenze.id_vyrobek = Vyrobek.id_vyrobek JOIN Kategorie ON Vyrobek.id_kategorie = Kategorie.id_kategorie

Agregační funkce Agregační funkce

4. příklad minimum Vyrobky id_vyrobku nazev cena 1 Acer TravelMate P253-E Acer 10 490 Kč 2 HP 650 HP 8 949 Kč 3 HP ProBook 4540s HP 11 990 Kč 4 Acer Aspire V7-581G-53334G52akk Acer 19 990 Kč 5 Apple MacBook Air 13" Apple 33 836 Kč ceny z www.alfacomp.cz ke dni 15.10.2013 Vyberte cenu nejlevnějšího notebooku.

4. příklad minimum Vyrobky id_vyrobku nazev cena 1 Acer TravelMate P253-E Acer 10 490 Kč 2 HP 650 HP 8 949 Kč 3 HP ProBook 4540s HP 11 990 Kč 4 Acer Aspire V7-581G-53334G52akk Acer 19 990 Kč 5 Apple MacBook Air 13" Apple 33 836 Kč ceny z www.alfacomp.cz ke dni 15.10.2013 Vyberte cenu nejlevnějšího notebooku. SELECT MIN(cena) AS [nejmensi_cena] FROM Vyrobky nejmensi_cena 8 990 Kč

5. příklad minimum se seskupením Vyrobky id_vyrobku nazev cena 1 Acer TravelMate P253-E Acer 10 490 Kč 2 HP 650 HP 8 949 Kč 3 HP ProBook 4540s HP 11 990 Kč 4 Acer Aspire V7-581G-53334G52akk Acer 19 990 Kč 5 Apple MacBook Air 13" Apple 33 836 Kč ceny z www.alfacomp.cz ke dni 15.10.2013 Vyberte ceny nejlevnějších notebooků jednotlivých značek.

5. příklad minimum se seskupením Vyrobky id_vyrobku nazev cena 1 Acer TravelMate P253-E Acer 10 490 Kč 2 HP 650 HP 8 949 Kč 3 HP ProBook 4540s HP 11 990 Kč 4 Acer Aspire V7-581G-53334G52akk Acer 19 990 Kč 5 Apple MacBook Air 13" Apple 33 836 Kč ceny z www.alfacomp.cz ke dni 15.10.2013 Vyberte ceny nejlevnějších notebooků jednotlivých značek. SELECT, MIN(cena) AS [nejmensi_cena] FROM Vyrobky GROUP BY Acer HP Apple nejmensi_cena 10 490 Kč 8 949 Kč 33 836 Kč

Seskupení Co je součástí klauzule SELECT a není v agregační funkci, musí být uvedeno v GROUP BY!

6. příklad podmínka skupiny Vyrobky id_vyrobku nazev cena 1 Acer TravelMate P253-E Acer 10 490 Kč 2 HP 650 HP 8 949 Kč 3 HP ProBook 4540s HP 11 990 Kč 4 Acer Aspire V7-581G-53334G52akk Acer 19 990 Kč 5 Apple MacBook Air 13" Apple 33 836 Kč ceny z www.alfacomp.cz ke dni 15.10.2013 Vypište značky, které prodávají nejlevnější notebook za více než 30 000 Kč.

6. příklad podmínka skupiny Vyrobky id_vyrobku nazev cena 1 Acer TravelMate P253-E Acer 10 490 Kč 2 HP 650 HP 8 949 Kč 3 HP ProBook 4540s HP 11 990 Kč 4 Acer Aspire V7-581G-53334G52akk Acer 19 990 Kč 5 Apple MacBook Air 13" Apple 33 836 Kč ceny z www.alfacomp.cz ke dni 15.10.2013 Vypište značky, které prodávají nejlevnější notebook za více než 30 000 Kč. SELECT FROM Vyrobky GROUP BY HAVING MIN(cena) > 30000 Apple

Agregační funkce COUNT (attr) COUNT (DISTINCT attr) SUM (attr) AVG (attr) MIN (attr) MAX (attr) Počet Počet různých Součet Průměr Minimum Maximum Agregační funkce přeskakují NULL hodnoty

Postup zpracování SQL dotazu Vypište značky začínající na A, které prodávají nejlevnší notebook za více než 30 000 Kč. Setřiďte tyto značky podle abecedy vzestupně. SELECT FROM Vyrobky WHERE LIKE A% GROUP BY HAVING MIN(cena) > 30000 ORDER BY id_vyrobku nazev cena 1 Acer TravelMate P253-E Acer 10 490 Kč 2 HP 650 HP 8 949 Kč 3 HP ProBook 4540s HP 11 990 Kč 4 Acer Aspire V7-581G-53334G52akk Acer 19 990 Kč 5 Apple MacBook Air 13" Apple 33 836 Kč

Postup zpracování SQL dotazu Vypište značky začínající na A, které prodávají nejlevnší notebook za více než 30 000 Kč. Setřiďte tyto značky podle abecedy vzestupně. SELECT FROM Vyrobky WHERE LIKE A% GROUP BY HAVING MIN(cena) > 30000 ORDER BY id_vyrobku nazev cena 1 Acer TravelMate P253-E Acer 10 490 Kč 2 HP 650 HP 8 949 Kč 3 HP ProBook 4540s HP 11 990 Kč 4 Acer Aspire V7-581G-53334G52akk Acer 19 990 Kč 5 Apple MacBook Air 13" Apple 33 836 Kč

Postup zpracování SQL dotazu Vypište značky začínající na A, které prodávají nejlevnší notebook za více než 30 000 Kč. Setřiďte tyto značky podle abecedy vzestupně. SELECT FROM Vyrobky WHERE LIKE A% GROUP BY HAVING MIN(cena) > 30000 ORDER BY id_vyrobku nazev cena 1 Acer TravelMate P253-E Acer 10 490 Kč 2 HP 650 HP 8 949 Kč 3 HP ProBook 4540s HP 11 990 Kč 4 Acer Aspire V7-581G-53334G52akk Acer 19 990 Kč 5 Apple MacBook Air 13" Apple 33 836 Kč id_vyrobku nazev cena 1 Acer TravelMate P253-E Acer 10 490 Kč 4 Acer Aspire V7-581G-53334G52akk Acer 19 990 Kč 5 Apple MacBook Air 13" Apple 33 836 Kč

Postup zpracování SQL dotazu Vypište značky začínající na A, které prodávají nejlevnší notebook za více než 30 000 Kč. Setřiďte tyto značky podle abecedy vzestupně. SELECT FROM Vyrobky WHERE LIKE A% GROUP BY HAVING MIN(cena) > 30000 ORDER BY id_vyrobku nazev cena 1 Acer TravelMate P253-E Acer 10 490 Kč 4 Acer Aspire V7-581G-53334G52akk Acer 19 990 Kč 5 Apple MacBook Air 13" Apple 33 836 Kč id_vyrobku nazev cena 1 Acer TravelMate P253-E Acer 10 490 Kč 4 Acer Aspire V7-581G-53334G52akk Acer 19 990 Kč 5 Apple MacBook Air 13" Apple 33 836 Kč

Postup zpracování SQL dotazu Vypište značky začínající na A, které prodávají nejlevnší notebook za více než 30 000 Kč. Setřiďte tyto značky podle abecedy vzestupně. SELECT FROM Vyrobky WHERE LIKE A% GROUP BY HAVING MIN(cena) > 30000 ORDER BY id_vyrobku nazev cena 1 Acer TravelMate P253-E Acer 10 490 Kč 4 Acer Aspire V7-581G-53334G52akk Acer 19 990 Kč 5 Apple MacBook Air 13" Apple 33 836 Kč id_vyrobku nazev cena 5 Apple MacBook Air 13" Apple 33 836 Kč

Postup zpracování SQL dotazu Vypište značky začínající na A, které prodávají nejlevnší notebook za více než 30 000 Kč. Setřiďte tyto značky podle abecedy vzestupně. SELECT FROM Vyrobky WHERE LIKE A% GROUP BY HAVING MIN(cena) > 30000 ORDER BY id_vyrobku nazev cena 5 Apple MacBook Air 13" Apple 33 836 Kč id_vyrobku nazev cena 5 Apple MacBook Air 13" Apple 33 836 Kč

Postup zpracování SQL dotazu Vypište značky začínající na A, které prodávají nejlevnší notebook za více než 30 000 Kč. Setřiďte tyto značky podle abecedy vzestupně. SELECT FROM Vyrobky WHERE LIKE A% GROUP BY HAVING MIN(cena) > 30000 ORDER BY id_vyrobku nazev cena 5 Apple MacBook Air 13" Apple 33 836 Kč Apple

Vnořené dotazy a poddotazy Vnořené dotazy a poddotazy

7. příklad vnořené dotazy Vyrobky id_vyrobku nazev cena 1 Acer TravelMate P253-E Acer 10 490 Kč 2 HP 650 HP 8 949 Kč 3 HP ProBook 4540s HP 11 990 Kč 4 Acer Aspire V7-581G-53334G52akk Acer 19 990 Kč 5 Apple MacBook Air 13" Apple 33 836 Kč ceny z www.alfacomp.cz ke dni 15.10.2013 Vyberte maximální průměrnou cenu notebooků různých značek.

7. příklad vnořené dotazy Vyrobky id_vyrobku nazev cena 1 Acer TravelMate P253-E Acer 10 490 Kč 2 HP 650 HP 8 949 Kč 3 HP ProBook 4540s HP 11 990 Kč 4 Acer Aspire V7-581G-53334G52akk Acer 19 990 Kč 5 Apple MacBook Air 13" Apple 33 836 Kč ceny z www.alfacomp.cz ke dni 15.10.2013 Vyberte maximální průměrnou cenu notebooků různých značek. Vyberte průměrnou cenu notebooků různých značek. SELECT, AVG(cena) AS [prumer] FROM Vyrobky GROUP BY Acer HP Apple prumer 15 240 Kč 10 469 Kč 33 836 Kč

7. příklad vnořené dotazy Vyrobky id_vyrobku nazev cena 1 Acer TravelMate P253-E Acer 10 490 Kč 2 HP 650 HP 8 949 Kč 3 HP ProBook 4540s HP 11 990 Kč 4 Acer Aspire V7-581G-53334G52akk Acer 19 990 Kč 5 Apple MacBook Air 13" Apple 33 836 Kč ceny z www.alfacomp.cz ke dni 15.10.2013 Vyberte maximální průměrnou cenu notebooků různých značek. Vyberte průměrnou cenu notebooků různých značek. SELECT, AVG(cena) AS [prumer] FROM Vyrobky GROUP BY Acer HP Apple prumer 15 240 Kč 10 469 Kč 33 836 Kč Vyberte maximální průměrnou cenu notebooků různých značek. SELECT MAX(prumer) AS [maximum] FROM maximum 33 836 Kč

7. příklad vnořené dotazy Vyrobky id_vyrobku nazev cena 1 Acer TravelMate P253-E Acer 10 490 Kč 2 HP 650 HP 8 949 Kč 3 HP ProBook 4540s HP 11 990 Kč 4 Acer Aspire V7-581G-53334G52akk Acer 19 990 Kč 5 Apple MacBook Air 13" Apple 33 836 Kč ceny z www.alfacomp.cz ke dni 15.10.2013 Vyberte maximální průměrnou cenu notebooků různých značek. SELECT MAX(prumer) AS [maximum] FROM ( SELECT, AVG(cena) AS [prumer] FROM Vyrobky GROUP BY ) prumery maximum 33 836 Kč

Vnořené dotazy Místo tabulky jako zdrojové relace použijeme celý vnořený SELECT. Vnořený SELECT musí být uzávorkovaný a pojmenovaný. Všechny jeho sloupce musí být pojmenované. Výsledkem vnořeného selectu je relace.

8. příklad poddotazy Kategorie Vyrobek Prodej Uzivatel Recenze Reklamace Vypište všechny výrobky a k nim počty prodejů a recenzí. SELECT Vyrobek.Nazev, COUNT(Recenze.id_recenze), COUNT(Prodej.id_prodej) FROM Vyrobek LEFT JOIN Recenze ON Recenze.id_vyrobek = Vyrobek.id_vyrobek LEFT JOIN Prodej ON Vyrobek.id_vyrobek = Prodej.id_vyrobek GROUP BY Vyrobek.Nazev

8. příklad poddotazy Kategorie Vyrobek Prodej Uzivatel Recenze Reklamace Vypište všechny výrobky a k nim počty prodejů a recenzí. SELECT Vyrobek.Nazev, COUNT(Recenze.id_recenze), COUNT(Prodej.id_prodej) FROM Vyrobek LEFT JOIN Recenze ON Recenze.id_vyrobek = Vyrobek.id_vyrobek LEFT JOIN Prodej ON Vyrobek.id_vyrobek = Prodej.id_vyrobek GROUP BY Vyrobek.Nazev Při spojování nesmíme jedinou tabulku vícekrát navázat vztahem směrem 1:N.

8. příklad poddotazy Kategorie Vyrobek Prodej Uzivatel Recenze Reklamace Vypište všechny výrobky a k nim počty prodejů a recenzí. SELECT Vyrobek.Nazev, ( SELECT COUNT(Recenze.id_recenze) FROM Recenze WHERE Recenze.id_vyrobek = Vyrobek.id_vyrobek ) AS [pocet_recenzi], ( SELECT COUNT(Prodej.id_prodej) FROM Prodej WHERE Prodej.id_vyrobek = Vyrobek.id_vyrobek ) AS [pocet_prodeju] FROM Vyrobek Výpočet počtu recenzí Výpočet počtu prodejů

Poddotazy Musí vracet jedinou hodnotu (jeden řádek, jeden sloupec) Lze je použít kdekoli, např. v klauzuli SELECT, v WHERE, ve spojovací podmínce za JOIN ON, v HAVING. Velice užitečné, pokud počítame agregace nad dvěma nazávislýma tabulkama tzn. takovýma, kde si je nemůžeme dovolit jednoduše spojit. V podstatě jimi lze simulovat funkci

Vnořené dotazy vs. poddotazy Vnořené dotazy SELECT T.nazev, SUM(T.pocet) FROM ( SELECT nazev, pocet FROM WHERE ) T WHERE Poddotazy SELECT ( SELECT SUM(pocet) FROM WHERE ) AS hodnota FROM WHERE Vnořený dotaz v klauzuli FROM Sám o sobě představuje tabulku Všechny sloupce musí být pojmenovány Dotaz jakožto zdroj dat musí mít název (alias) Poddotaz v klauzuli SELECT Poddotaz můžeme použít kdykoli potřebujeme spočítat jednu jedinou hodnotu Poddotaz musí vracet jediný řádek a jediný sloupec

Shrnutí 1. Spojování tabulek Použivání vnitřního spojení Používání vnějšího spojení Využití spojovací podmínky Pozor na spojování nezávislých tabulek 2. Agregační funkce COUNT, SUM, AVG, MIN, MAX Význam klauzule GROUP BY Význam klauzule HAVING 3. Vnořené dotazy a poddotazy Používání vnořených dotazů místo tabulek Používání poddotazů pro doptání na určitou hodnotu

Cvičení www.dbedu.cs.vsb.cz Přihlášení přes jednotný login a heslo Vpravo sloupec -> České kurzy -> UDBS Příprava na test V archivu kurzů 2013/2014 na 6. cvičení naleznete loňský skript databáze z testu Procvičovat!