Databázové systémy I Přednáška 7 Databázové systémy 1 – KIT/IDAS1

Slides:



Advertisements
Podobné prezentace
Databázové systémy I Přednáška č. 5 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Advertisements

SQL – základní pojmy Ing. Roman Danel, Ph.D.
Databázové systémy I Přednáška č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Strategické otázky výzkumníka 1.Jaký typ výzkumu zvolit? 2.Na jakém vzorku bude výzkum probíhat? 3.Jaké výzkumné metody a techniky uplatnit?
Období vzniku: duben _inovace_FG.9.48 Autor : Vladimír TesaříkČlověk a svět práce, finanční gramotnost, nové auto.
ŠkolaZŠ Třeboň, Sokolská 296, Třeboň AutorMgr. Jana Drtinová Číslo VY_62_INOVACE_6015 NázevMzda Téma hodinyMzdy PředmětZáklady finanční gramotnosti.
Univerzita třetího věku kurz Znalci Databáze 2.
Operační program Vzdělávání pro konkurenceschopnost Název projektu: Inovace magisterského studijního programu Fakulty ekonomiky a managementu Registrační.
Inf Tabulkový procesor - funkce. Výukový materiál Číslo projektu: CZ.1.07/1.5.00/ Šablona: III/2 Inovace a zkvalitnění výuky prostřednictvím ICT.
Systém správy dokumentace akreditované zkušební laboratoře Bc. Jan Randl, 4912.
Význam diferenciálních rovnic převzato od Doc. Rapanta.
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o, Orlová Lutyně AUTOR: Ing. Oldřich Vavříček NÁZEV: Podpora výuky v technických oborech TEMA: Základy elektrotechniky.
Mgr. Bedřich Myšička vrchní ředitel sekce ekonomické Sekce ekonomická 10. dubna 2014.
Číslo projektu školy CZ.1.07/1.5.00/ Číslo a název šablony klíčové aktivity III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo materiáluVY_32_INOVACE_OdP_S2_07.
Analytické myšlení Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Mgr. Milan Pobořil, Ph.D.. Slezské gymnázium, Opava, příspěvková organizace.
Název kapitoly Název podkapitoly Text Schvalovací proces + hodnoticí kritéria Jakub Krátký Praha, 5. května 2016.
Řetězce v jazyce C ● řetězec je posloupnost znaků ● řetězcové konstanty se v C vkládají mezi uvozovky, např. "Ahoj Hugo!" ● v paměti je řetězec uložen.
Autor práce: Denisa Vydrová Vedoucí práce: Ing. Petra Solarová, Ph.D. Oponent práce: Ing. František Martíšek České Budějovice, červen 2016.
Databáze © Mgr. Petr Loskot
Úvod do databází MS Access (1).
Schvalovací proces a hodnoticí kritéria
Základy automatického řízení 1
Počet čísel Počet hodnot
Databázové systémy I Přednáška 8 Databázové systémy 1 – KIT/IDAS1
Matematika 3 – Statistika Kapitola 4: Diskrétní náhodná veličina
Evaluace předmětů studenty (Anketky)
Lineární funkce - příklady
Hledání nejvyšších a nejnižších hodnot
Číslo projektu CZ.1.07/1.5.00/ Číslo materiálu
Výukový materiál zpracován v rámci projektu
Základní logické funkce
Jedno-indexový model a určení podílů cenných papírů v portfoliu
8.1.2 Podprostory.
Poměr Co je poměr. Změna v daném poměru..
Inf Tabulkový procesor - formátování
Databáze MS ACCESS 2010.
ROZVRHOVÁNÍ SLUŽEB VE ZDRAVOTNICKÉM ZAŘÍZENÍ
Veřejná správa, Regionální rozvoj Litoměřice Jan Jůna 2012
Poměr v základním tvaru.
Schvalovací proces + hodnoticí kritéria
CW-057 LOGISTIKA 34. PŘEDNÁŠKA Lineární programování – 4/G Leden 2017
4.1 – 4.3 Lineární nerovnice i jednoduchý podílový tvar
Výukový materiál zpracován v rámci projektu
SÁRA ŠPAČKOVÁ MARKÉTA KOČÍBOVÁ MARCELA CHROMČÁKOVÁ LUKÁŠ BARTOŠ B3E1
Schvalovací proces + hodnoticí kritéria
Regulátory spojité VY_32_INOVACE_37_755
Benefit7.
Informatika pro ekonomy přednáška 8
Číslo projektu CZ.1.07/1.5.00/ Číslo materiálu VY_32_INOVACE_21-01
NÁZEV ŠKOLY: Základní škola Josefa Bublíka, Bánov
MS Excel – příklady na databázové funkce
Počítačová cvičení z předmětu Datové sklady
Microsoft Office Access
Provozováno Výzkumným ústavem pedagogickým v Praze.
Dotazovací jazyk SQL I.
Materiál byl vytvořen v rámci projektu
Jiří Vyskočil, Marko Genyg-Berezovskyj 2010
Teorie chyb a vyrovnávací počet 1
A5M33IZS – Informační a znalostní systémy
TŘÍDĚNÍ DAT je základní způsob zpracování dat.
Přednáška 6 SQL – spojení tabulek.
Přednáška 8 INDEXY, POHLEDY.
Poměr v základním tvaru.
Matematika + opakování a upevňování učiva
Informatika pro ekonomy přednáška 8
Informatika – Průměr a min-max
Informatika – Základní operace s buňkami
Základy infinitezimálního počtu
Seminář o stavebním spoření
Algoritmizace a datové struktury (14ASD)
Transkript prezentace:

Databázové systémy I Přednáška 7 Databázové systémy 1 – KIT/IDAS1 Ing. Monika Borkovcová, Ph.D.

Databázové systémy 1 - př. 7 Obsah Logické operátory Opakování Souhrnné dotazy Skupinové dotazy Databázové systémy 1 - př. 7

Databázové systémy 1 - př. 7 Logické operátory AND a zároveň (vrací ANO, pokud oba operandy jsou zároveň ANO) OR nebo (vrací ANO, pokud alespoň jeden operand je ANO) NOT není pravda, že (vrací ANO, když následující operand je NE) Databázové systémy 1 - př. 7

Pravdivostní tabulka AND Operand 1 Operand 2 Výsledek AND ANO NE NULL Databázové systémy 1 - př. 7

Pravdivostní tabulka OR Operand 1 Operand 2 Výsledek AND ANO NE NULL Databázové systémy 1 - př. 7

Pravdivostní tabulka NOT Operand 1 Výsledek AND ANO NE NULL Databázové systémy 1 - př. 7

Databázové systémy 1 - př. 7 Agregační funkce aritmetický průměr AVG ([DISTINCT] [ALL] výraz) počet hodnot COUNT ([DISTINCT] [ALL] výraz) maximum MAX (výraz) minimum MIN (výraz) součet hodnot SUM ([DISTINCT] [ALL] výraz) Databázové systémy 1 - př. 7

Databázové systémy 1 - př. 7 Souhrnné dotazy Velice často nás nezajímají jednotlivé detaily uložené v konkrétních řádcích v jednotlivých tabulkách, ale několik málo souhrnných informací, které sumarizují obsah databáze, například: Kolik zaměstnanců má společnost ? Jaké jsou tržby pobočky ? Kolik lidí jede průměrně v jednom vlaku ? Jaká je průměrná délka života ? Jaká je průměrná mzda ? Kolik vstupenek se prodalo na všechna utkání ? Jaká je nejvyšší a nejnižší vyplácená sociální dálka ? Kdo získal nejméně bodů z testu ? Databázové systémy 1 - př. 7

Databázové systémy 1 - př. 7 Agregační funkce Agregační funkce pracují nad množinou řádků, přičemž vrací právě jeden výsledek pro celou vstupní množinu dat. Tyto funkce pomocí matematických a statistických operací zpracovávají agregované hodnoty z celých sloupců (není-li uvedeno jinak v podmínce). AVG ([DISTINCT] [ALL] výraz) aritmetický průměr COUNT ([DISTINCT] [ALL] výraz) počet hodnot MAX (výraz) maximum MIN (výraz) minimum SUM ([DISTINCT] [ALL] výraz) součet hodnot Databázové systémy 1 - př. 7

Agregační funkce a datové typy Data ve výrazech zpracovávaných funkcemi SUM() a AVG() musí být numerického typu, funkce pro hledání extrémních hodnot MIN() a MAX() mohou pracovat nad sloupci a výrazy v numerickém formátu, řetězci či ve formátu datum/čas. Při použití funkcí MIN() a MAX() nad řetězcovými daty je třeba si uvědomit, že porovnání dvou řetězců je závislé na použité znakové sadě. Ačkoli standard SQL2 obsahuje podporu pro národní znakové sady a alternativní posloupnosti řazení, implementace těchto vlastností se však mezi jednotlivými databázovými systémy liší. Databázové systémy 1 - př. 7

Agregační funkce – syntaxe SELECT A_OBCHOD SCHÉMA Příklady: SELECT AVG(cena) FROM produkty; průměrná hodnota ve sloupci cena v tabulce produkty, počítají se jen z uvedených hodnot – tj. NOT NULL SELECT MIN(cena) FROM produkty WHERE oznaceni LIKE ‘L%’; minimální (uvedená) hodnota ve sloupci cena v tabulce produkty pro řádky splňující danou podmínku SELECT count(cena) FROM produkty WHERE cena >= 25000; počet uvedených hodnot ve sloupci cena v tabulce produkty pro řádky splňující danou podmínku SELECT count(*) FROM produkty; počet řádků tabulky produkty Agregační funkce tedy ignorují hodnoty NULL !!! Databázové systémy 1 - př. 7

Agregační funkce – syntaxe SELECT Příklad: SELECT SUM(skutecne_trzby)-SUM(plan_trzby), SUM(skutecne_trzby-plan_trzby) FROM obchodni_vysledky; Pozor na skutečnost, že výsledkem tohoto dotazu mohou být za jistých okolností 2 různé hodnoty! Rozdíl nastane v okamžiku, kdy v některém řádku bude scházet například vyplněná hodnota skutecne_trzby (bude tedy null), ale plánovaná tržba bude uvedena. Zatímco plánovaná tržba ovlivní výsledek SUM(plan_trzby), tak hodnota SUM (skutecne_trzby-plan_trzby) ovlivněna nebude. Volba správného dotazu záleží na tom, jaký výsledek požadujeme a zda dokážeme potřebu správně naformulovat do SQL dotazu. Databázové systémy 1 - př. 7

Agregační funkce – syntaxe SELECT A_OBCHOD SCHÉMA Použitím klíčového slova DISTINCT můžeme eliminovat započtení duplicitních hodnot ve sloupcové funkci. SELECT count(DISTINCT mesto) FROM pobocky; Podívejme se na rozdíl výsledku tohoto dotazu s výsledky dotazu následujícího SELECT count(mesto) FROM pobocky; První dotaz s klíčovým slovem DISTINCT zjistí počet rozdílných NOT NULL hodnot ve sloupci mesto, druhý dotaz počet NOT NULL hodnot ve sloupci mesto. Výsledkem jsou tedy obecně úplně různé informace. Volba dotazu opět záleží na zadání a jeho přesném pochopení. Databázové systémy 1 - př. 7

Databázové systémy 1 - př. 7 Skupinové dotazy Na rozdíl od souhrnných dotazů dochází k výpočtu agregačních funkcí pro konkrétní skupiny řádků. Nevzniká tedy na výstupu jeden jediný řádek, ale řádky pro jednotlivé skupiny. Kolik zaměstnanců mají jednotlivá oddělení společnosti ? Jaké jsou tržby poboček společnosti ? Kolik lidí jede průměrně v jednom vlaku na dané trase ? Jaká je průměrná délka života pro muže a ženy ? Jaká je průměrná mzda v různých sektorech ? Kolik vstupenek se prodalo na jednotlivá utkání ? Jaká je nejvyšší a nejnižší vyplácená sociální dálka v krajích ? Kdo získal nejméně bodů z testu v daném předmětu ? Databázové systémy 1 - př. 7

Skupinové dotazy – syntaxe SELECT SELECT <sloupec_1>, <sloupec_2>, ... <sloupec_n>, <agregační_funkce (výraz)> FROM <seznam tabulek> WHERE <podmínky> GROUP BY <sloupec_1>, <sloupec_2>, ... <sloupec_n>; V předchozích příkladech jsme vyhodnocovali hodnoty v celých sloupcích, nyní budeme vytvářet mezisoučty, které budou vztahovat k jednotlivým skupinám. Pod pojmem skupina můžeme chápat konkrétní pobočku společnosti, studovaný předmět, město, osobu, … Všechny sloupce, které nejsou agregovány a jsou uvedeny za klíčovým slovem SELECT (definují skupiny, pro něž dochází k výpočtu agregačních funkcí) musí být uvedeny i za klauzulí GROUP BY. Databázové systémy 1 - př. 7

Skupinové dotazy – syntaxe SELECT Příklad: SELECT dodavatel_id, AVG(cena) FROM produkty GROUP BY dodavatel_id; Databázový systém nejdříve rozdělí produkty do skupin podle DODAVATEL_ID, pro každého dodavatele jedna skupina. V rámci každé skupiny mají všechny produkty stejnou hodnotu DODAVATEL_ID. Pro každou skupinu pak vypočte požadované agregační funkce. Dotazy obsahující klauzuli GROUP BY označujeme jako skupinové dotazy, neboť seskupují data ze zdrojových tabulek do skupin a pro každou z těchto skupin vytváří jediný souhrnný řádek. Sloupce uváděné za klauzulí GROUP BY označujeme jako seskupující sloupce. Databázové systémy 1 - př. 7

Omezení výsledků skupinových dotazů SELECT <sloupec_1>, <sloupec_2>, ... <sloupec_n>, <agregační_funkce (výraz)> FROM <seznam tabulek> WHERE <podmínky> GROUP BY <sloupec_1>, <sloupec_2>, ... <sloupec_n> HAVING <podmínky pro agregované výsledky>; Ve výsledku budou pouze ty agregované řádky, které splňují podmínky uvedené za klauzulí HAVING. Omezení uvedená za klauzulí HAVING se aplikují až po vytvoření skupin, tedy před zobrazením (případně seřazením) výsledku. Databázové systémy 1 - př. 7

Omezení výsledků skupinových dotazů A_OBCHOD SCHÉMA Příklady: SELECT dodavatel_id, AVG(cena) FROM produkty GROUP BY dodavatel_id HAVING AVG(cena) >=33000; SELECT nazev, AVG(cena) FROM dodavatele JOIN produkty ON dodavatele.dodavatel_id = produkty.dodavatel_id GROUP BY nazev HAVING AVG(cena) >=33000; Databázové systémy 1 - př. 7

Postup provádění skupinových dotazů spojení tabulek (dle zadaných podmínek spojení) JOIN Aplikace omezujících podmínek za klauzulí WHERE Seskupení řádků do skupin (dle atributů uvedených za klauzulí) GROUP BY Výpočet agregačních funkcí SUM, COUNT, MAX, MIN, AVG nad skupinami řádků – pro každou skupinu vznikne jediný řádek Aplikace omezujících podmínek za klauzulí HAVING Seřazení výsledku dle klauzule ORDER BY Databázové systémy 1 - př. 7

Databázové systémy 1 - př. 7 Příklad SELECT nazev, AVG(cena) prum_cena, count(*) pocet_produktu FROM A_OBCHOD.dodavatele JOIN A_OBCHOD.produkty ON dodavatele.dodavatel_id = produkty.dodavatel_id WHERE oznaceni not like 'A2500H' and nazev like 'ASUS' GROUP BY nazev HAVING count(cena)>0 ORDER BY nazev; Databázové systémy 1 - př. 7

Databázové systémy 1 - př. 7 Shrnutí • Agregační funkce slouží k výpočtu součtu, průměru, minimální a maximální hodnoty nebo k určení počtu hodnot ve sloupci nebo ve výsledku dotazu. • Souhrnný dotaz neobsahuje klauzuli GROUP BY a generuje jediný řádek výsledku dotazu. • Skupinové dotazy obsahují klauzuli GROUP BY a generují řádky na výstup dotazu pro každou kombinaci atributů uvedených za klauzulí GROUP BY. • Klauzule HAVING vykonává obdobnou funkci jako klauzule WHERE. Zatímco klauzule WHERE se aplikuje na řádky vstupující do zpracování, klauzule HAVING se aplikuje až na agregované hodnoty v již seskupených řádcích. Databázové systémy 1 - př. 7

Databázové systémy 1 - př. 7 Prostor pro dotazy Děkuji za pozornost http://www.iconfinder.com/icondetails/40094/128/database_storage_icon Databázové systémy 1 - př. 7