Databázové systémy 1 Cvičení č. 3 Fakulta elektrotechniky a informatiky Univerzita Pardubice
Obsah cvičení -Opakování ze cvičení 2 -Cizí klíče (příkaz ALTER TABLE) -Vnitřní spojení JOIN -Vnější levé spojení LEFT JOIN -Pohledy Databázové systémy 1 – cvičení 3 2
3 Cvičení 3 – Příklady Jsou dány následující tabulky: STUDENTI ( ID_studenta, jmeno, prijmeni, nastup ) UCITELE ( ID_ucitele, jmeno, prijmeni ) UCI ( ID_studenta, ID_ucitele, predmet ) KNIHY ( ID_knihy, ID_studenta, nazev ) Skript pro vytvoření tabulek spolu s daty naleznete na fei-learn.upceucebny.cz
Cizí klíč Stručná definice: – Sloupec, jehož hodnota v jedné tabulce odpovídá primárnímu klíči v jiné (ve speciálních případech i stejné) tabulce, nazýváme cizí klíč. – Tabulka, která cizí klíč obsahuje, se nazývá dceřiná tabulka. Tabulka, na kterou cizí klíč odkazuje, se pak nazývá rodičovská tabulka. Existují dva způsoby definování: – V rámci příkazu CREATE TABLE, – nebo v příkazu ALTER TABLE. Databázové systémy 1 – cvičení 3 4
Cizí klíč (CREATE TABLE) Databázové systémy 1 – cvičení 3 5 Syntaxe:
Cizí klíč (CREATE TABLE) Databázové systémy 1 – cvičení 3 6 Příklad:
Cizí klíč (ALTER TABLE) Příkaz ALTER TABLE slouží k modifikaci struktury existující tabulky – Přidávání/odebrání/modifikace sloupců, přidávaní omezení,… Syntaxe příkazu ALTER TABLE pro přidání cizího klíče: Databázové systémy 1 – cvičení 3 7
Cizí klíč (ALTER TABLE) Příklad: Databázové systémy 1 – cvičení 3 8
Cvičení 3 – Příklady 1.Ve vytvořených tabulkách definujte vhodné cizí klíče. 2.Vypište jména a příjmení všech učitelů v abecedním pořadí dle příjmení. 3.Vypište příjmení všech studentů, jejichž jméno začíná písmenem „J“. Výstup bude seřazen sestupně. 4.Vnitřním spojením vypište obsah tabulek STUDENTI a UCI. 5.Ze spojení tabulek STUDENTI a UCI vypište studentovo příjmení a název předmětu, který má zapsaný. 6.Vypište jména a příjmení všech studentů, jenž mají zapsaný nějaký předmět. Vystup bude seřazen dle příjmení vzestupně. 7.Vypište názvy všech knih, jenž si vypůjčili studenti se jménem „Jana“. 8.Vypište jména a příjmení všech učitelů, jenž vyučují předmět „Databáze“. 9.Vypište knihy, které mají vypůjčeni studenti, jejichž jméno začíná písmenem „J“. Výstup seřaďte dle názvu knihy. Databázové systémy 1 – cvičení 3 9
Cvičení 3 – Příklady 10.Pomocí vnitřního spojení vypište obsah tabulek STUDENTI, UCITELE, UCI. 11.Vypište příjmení studentů a k ním příjmení učitelů, kteří navštěvují/vyučují předmět „Databáze“. Výstup bude seřazen sestupně dle příjmení studenta. 12.Vypište id_studentů, jenž mají zapsaný alespoň jeden předmět a zároveň mají vypůjčenu alespoň jednu knihu. 13.Vnějším spojením vypište obsah tabulek UCITELE a UCI, ve výsledku se objeví i ti učitelé, kteří neučí žádný předmět. 14.Vypište seznam studentů (jméno a příjmení) spolu s jejich zapsanými předměty. Ve výpise se objeví i studenti, kteří nemají zapsaný žádný předmět. Databázové systémy 1 – cvičení 3 10
Pohledy Definice: – Pohled je virtuální tabulka v databázi, jejíž obsah je definován dotazem. – Příklad příkladu pro vytvoření pohledu: Databázové systémy 1 – cvičení 3 11
Cvičení 3 - pohledy 1.Vytvořte pohled cv3_ucitel_uci(prijmeni,predmet), který vypíše příjmení vyučujícího spolu s názvem předmětu který učí. 2.Vytvořte pohled cv3_studenti_knihy (prijmeni, nazev_knihy), který zobrazí příjmení studenta a knihu kterou půjčil. Z přehledu vylučte studenta s ID=„ST20001“. 3.Vytvořte pohled cv3_ucitele_studenti(ucitele_prijmeni, studenti_prijmeni, predmet), který zobrazí příjmení učitele, spolu s příjmením studenta a předmětu, ve kterém ho vyučuje. Pohled bude seřazen dle příjmení učitele. 4.Vytvořte pohled cv3_seznam_knih(nazev,prijmeni) který vypíše všechny knihy a k nimž připojí příjmení studenta, jenž má danou knihu půjčenou. V seznamu se musí objevit i knihy, jenž nejsou aktuálně půjčené. Databázové systémy 1 – cvičení 3 12
Cvičení 3 – kontrola Všechny databázové objekty z tohoto cvičení vytvořte se svém schématu. Pro splnění cvičení je nutné, aby všechny objekty byly správně vytvořeny a funkční do půlnoci dne před následujícím cvičením. Databázové systémy 1 – cvičení 3 13