KIV/ZIS cvičení 6 Tomáš Potužák. Pokračování SQL Klauzule GROUP BY a dotazy nad více tabulkami Stáhnout soubor studenti_dotazy_sql.mdb.

Slides:



Advertisements
Podobné prezentace
Aplikační a programové vybavení
Advertisements

KIV/ZIS Cvičení 6 SQL - SELECT.
Základy jazyka SQL Jan Tichava
SQL: DDL v ORACLE CREATE TABLE jméno_tabulky (atribut datový_typ [DEFAULT][attribut_constraint] [, atribut datový_typ [DEFAULT] [attribut_constraint]],...
Aplikační a programové vybavení
Jazyk SQL Ing. Zdena DOBEŠOVÁ. SQL Structured Query Language 1974 SEQUEL (Structured English Query Language) neprocedurální relační dotazovací jazyk norma.
Microsoft Office Access
DATABÁZOVÉ SYSTÉMY Ing. Roman Danel, Ph.D.
YDASYS1 Ing. Monika Šimková.
Informační systémy Realizace uložených procedur a spouští, jejich praktické využití.
Informační systémy Nástroje pro sběr dat, návrh a realizace databáze.
AGREGACE Distinct, Group By, Having, SUM, …. DISTINCT  Slučování stejných řádků ve výsledku dotazu. AGREGACE 2 JménoPříjmeníID FrantišekVomáčka1 JosefPokorný2.
Další dotazy SQL Structured Query Language. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
SQL Structured Query Language
Informatika pro ekonomy II přednáška 11
Databázové systémy 1 Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy 1 Cvičení č. 4 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy 1 Cvičení č. 2 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy 1 Cvičení č. 3 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
1 BUMI Úvod do medicínské informatiky Počítačové cvičení č. 3 Ing. Vratislav Čmiel.
Temporální databáze a TSQL
MySQL - Vytvoření nové tabulky  create table jméno_tabulky (jméno_položky typ_položky,... ) Přehled nejběžnějších datových typů Přehled nejběžnějších.
Databázové systémy II Přednáška č. 8 – Pohledy (Views)
Databázové systémy 2 Cvičení č. 7 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
KIV/ZIS cvičení 1 Tomáš Potužák.
Fakulta elektrotechniky a informatiky
Databázové systémy I Cvičení č. 9 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Relační databáze.
Vypracoval: Ondřej Dvorský Třída: VIII.A
MS ACCESS parametrický dotaz
Databázové systémy I Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Databázové systémy Přednáška č. 6.
SQL – základní pojmy Ing. Roman Danel, Ph.D.
SQL PVA Jan Hora. SQL „graficky“ Grafický vs. pravý SQL SELECT ORDED BY WHERE.
Rauer Luboš Kopic Petr Blažek Tomáš. Structured Query Language - dotazovací jazyk -> pracuje s dotazy - neprocedurální jazyk - mocný, ale přitom jednoduchý.
Fakulta elektrotechniky a informatiky
KIV/ZIS cvičení 3 Tomáš Potužák.
Fakulta elektrotechniky a informatiky
Číslo šablony: III/2 VY_32_INOVACE_P4_3.8 Tematická oblast: Aplikační software pro práci s informacemi II. Databáze – základy SQL Typ: DUM - kombinovaný.
Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy I Cvičení č. 10 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Databázové systémy I Cvičení č. 7 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Informatika II PAA DOTAZOVACÍ JAZYKY
ACCESS – Primární klíče, relace 15. září 2013VY_32_INOVACE_080305_ACCESS_Primarni_klice_relace_DUM Autorem materiálu a všech jeho částí, není-li uvedeno.
Aplikační a programové vybavení
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_01B13 Autor Ing. Jiří Kalousek Období vytvoření březen.
Architektury a techniky DS Cvičení č. 5 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy 2 Cvičení č. 5 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
KIV/ZIS cvičení 4 Tomáš Potužák. Dotazy - úvod Umožňují pracovat s databází –Získávat specifické informace z tabulky, případně z více tabulek najednou.
Databázové systémy SQL Výběr dat.
DATABÁZOVÉ SYSTÉMY Ing. Roman Danel, Ph.D.
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_01B15 Autor Ing. Jiří Kalousek Období vytvoření březen.
SQL Další dotazy a pohledy Databázové systémy. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
Databázové systémy 1 Cvičení č. 5 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
ACCESS DOTAZY Ing. Jana Horáková IKT MS Office
SQL – příkaz SELECT Ing. Roman Danel, Ph.D.
Databázové systémy I Přednáška 5 Databázové systémy 1 – KIT/IDAS1
NÁZEV ŠKOLY:SOŠ Net Office, spol. s r.o. Orlová Lutyně
KIV/ZD cvičení 5 Tomáš Potužák.
Ing. Tomáš Váňa, Ing. Jiří Zechmeister
Databázové systémy a SQL
Databázové systémy a SQL
[ START WITH podmínka ] CONNECT BY podmínka
Optimalizace SQL dotazů
Databázové systémy a SQL
Přednáška 7 SQL – JOIN.
Přednáška 9 Triggery.
Praktický modul - zadání
Databázové systémy a SQL
Transkript prezentace:

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

Pokračování SQL Klauzule GROUP BY a dotazy nad více tabulkami Stáhnout soubor studenti_dotazy_sql.mdb

Slučování záznamů do skupin (1) Chceme zjistit informace obsažené ve více záznamech najednou Klauzule GROUP BY se seznamem sloupců, podle kterých se mají záznamy spojit Nakonec lze přidat podmínku pro již sloučené záznamy – klauzule HAVING s podmínkou

Slučování záznamů do skupin (2) Příklad 1 – Vypište výše stipendií vyplácené studentům s počtem studentů, který danou výši stipendia dostává. Studenty bez stipendia neuvažujte. –SELECT stipendium, COUNT(os_cislo) AS [Počet studentů] FROM student WHERE stipendium > 0 GROUP BY stipendium;

Slučování záznamů do skupin (3) Příklad 2 – Zadání jako příklad 1, ale vypište jen stipendia, která berou alespoň 2 studenti –SELECT stipendium, COUNT(os_cislo) AS [Počet studentů] FROM student WHERE stipendium > 0 GROUP BY stipendium HAVING COUNT(os_cislo) >= 2; Příklad 3 – Vypište stáří studentů s počtem studentů u každého věku

Slučování záznamů do skupin (4) Příklad 4 – Zadání jako příklad 3, ale vypište jen věk, který mají alespoň 2 studenti Příklad 5 – Zadání stejné jako příklad 4, ale místo věku použijte rok narození (sloupec vypočtený jako ( vek)). Pozor – v klauzuli HAVING a GROUP BY se nedají použít nové názvy sloupců, celý výraz se tam musí zopakovat.

Spojení více tabulek (1) Chceme získat informaci, která je ve více tabulkách (Např. seznam studentů s názvy a čísly semestrálních prací) Tabulky, ze kterých chceme informaci získat, by spolu měli souviset (měla by mezi nimi existovat vazba  v obou tabulkách jsou související záznamy) Spojení se dělá přes rovnost primárního a odpovídajícího cizího klíče

Spojení více tabulek (2) Spojení je více typů podle toho, jak se přistupuje k záznamům, které nemají odpovídající záznam v druhé tabulce (např. student bez semestrální práce) –Přirozené spojení (natural join) – do výsledku dotazu zahrnuty jen záznamy vyskytující se v obou tabulkách (tj. cizí klíč je nastaven). Záznamy (řádky) z pravé i levé tabulky, které nemají odpovídající záznam v druhé tabulce nejsou do dotazu zahrnuty

Spojení více tabulek (3) –Levé spojení (left join) – Do výsledku dotazu jsou zahrnuty i řádky z levé tabulky, které nemají odpovídající záznam v pravé tabulce –Pravé spojení (right join) – Do výsledku dotazu jsou zahrnuty i řádky z pravé tabulky, které nemají odpovídající záznam v levé tabulce

Přirozené spojení (1) Příklad 6 – Vypište studenty (jméno, příjmení, os. číslo) společně s rozvrhovou akcí, kterou navštěvují (den, týden, od, do) –SELECT jmeno, prijmeni, os_cislo, den, tyden, od, do FROM student, rozvrhova_akce WHERE rozvrhova_akce_id = rozvrhova_akce.id; Příklad 7 – Jako příklad 6, ale vypište jen studenty starší 21 let chodící na pondělní rozvrhové akce

Přirozené spojení (2) Místo plně kvalifikovaných názvů (viz předchozí dva příklady) lze použít aliasy  zkrácení zápisu Nezaměňovat s novým pojmenováním sloupce (klauzule AS)! Příklad 8 – Jako příklad 6 s aliasy –SELECT jmeno, prijmeni, os_cislo, den, tyden, od, do FROM student s, rozvrhova_akce r WHERE s.rozvrhova_akce_id = r.id;

Přirozené spojení (3) Příklad 9 – Vypište studenty (jméno, příjmení, os_číslo) společně s jejich semestrální prací (číslo, název) Příklad 10 – Vypište seznam semestrálních prací (číslo, název) s počtem studentů, kteří si tyto práce vybrali Příklad 11 – Vypište seznam studentů společně s počtem cvičení, které navštívili

Přirozené spojení (4) Příklad 12 – Vypište studenty (jméno, příjmení, os. číslo) společně s cvičeními, které navštívili (pořadí, název) Příklad 13 – Vytvořte dotaz, který vypíše všechny studenty, kteří byli alespoň na dvou cvičení s počtem návštěv cvičení Příklad 14 – Vypište studenty starší 20ti let s počtem návštěv cvičení, kteří byli alespoň na dvou cvičeních

Přirozené spojení (5) Jak se vyhodnocuje dotaz z příkladu 14

Přirozené spojení (6) Pro přirozené spojení existuje i alternativní zápis, který používá MS Access Příklad 15 – Vypište studenty (jméno, příjmení, věk) starší 20ti let společně s jejich semestrální prací (číslo, název) –SELECT jmeno, prijmeni, vek, cislo, nazev FROM student s INNER JOIN semestralni_prace sp ON s.semestralni_prace_id = sp.id WHERE vek > 20;

Levé (pravé) spojení (1) Příklad 16 – Vypište úplný seznam semestrálních prací s počtem studentů, kteří si je vybrali –SELECT cislo, nazev, COUNT(semestralni_prace_id) AS Pocet_studentu FROM semestralni_prace sp LEFT JOIN student s ON s.semestralni_prace_id = sp.id GROUP BY cislo, nazev;

Levé (pravé) spojení (2) Příklad 17 – Vypište seznam všech studentů s počtem návštěv cvičení, kteří byli maximálně na jednom cvičení. Použijte pravé spojení. Aby ve sloupci cizího klíče v jedné tabulce mohlo být NULL: –U cizího klíče musí být „Je nutno vyplnit – NE“ –U vazby mezi tabulkami nesmí být zaškrtnuto „Zajistit referenční integritu“

DML – další dotazy Kromě příkazu SELECT jsou součástí DML příkazy pro manipulaci se záznamy v tabulce –Přidání záznamu – INSERT –Úprava záznamu – UPDATE –Smazání záznamu – DELETE V MS Access většinou nejsou potřeba, úpravy záznamů se provádí interaktivně v tabulkách/formulářích

Příkaz INSERT INSERT INTO tabulka VALUES (hodn1, hodn2, …); INSERT INTO tabulka (sloupec1, sloupec2, …) VALUES (hodn1, hodn2, …) Příklad 18 – Vložte novou semestrální práci do tabulky semestrální práce –INSERT INTO semestralni_prace (cislo, nazev, popis) VALUES (9, ‘Zaměstnanci’, ‘Databáze zaměstnanců firmy’);

Příkaz UPDATE UPDATE tabulka SET sloupec1 = hodn1, sloupec2 = hodn2,… WHERE podmínka; Příklad 19 – Změňte název a popis semestrální práce číslo 9 na „Hotel“ a „Databáze hostů hotelu“ –UPDATE semestralni_prace SET nazev = ‘Hotel’, popis = ‘Databáze hostů hotelu’ WHERE cislo = 9;

Příkaz DELETE DELETE FROM tabulka WHERE podmínka; Příklad 20 – Smažte semestrální práci číslo 9 z tabulky semestrální práce –DELETE FROM semestralni_prace WHERE cislo = 9;

Nastavení přístupových práv U databáze lze nastavit přístupové heslo –Musí být otevřena ve výhradním režimu Lze vytvářet nové uživatele, skupiny uživatelů Uživatele lze přidávat/odebírat ze skupin Uživatelů či skupinám lze přiřadit práva k jednotlivým objektům – tabulkám, dotazům, atd.