Databázové systémy 2 Cvičení č. 6 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.

Slides:



Advertisements
Podobné prezentace
Databázové systémy 2 Cvičení č. 8
Advertisements

KIV/ZIS Cvičení 6 SQL - SELECT.
Vlastní skript může být umístěn: v hlavičce stránky v těle stránky
Databázové systémy 2 Cvičení č. 9 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.
SQL: DDL v ORACLE CREATE TABLE jméno_tabulky (atribut datový_typ [DEFAULT][attribut_constraint] [, atribut datový_typ [DEFAULT] [attribut_constraint]],...
DATOVÝ TYP POLE.
Fakulta elektrotechniky a informatiky
Informační systémy Realizace uložených procedur a spouští, jejich praktické využití.
Databázové systémy 2 Zkouška :00. Příklad I Vytvořte proceduru ZK_TRPASLICI_PLNENI(datum_od VARCHAR2, datum_do VARCHAR2), která na standardní.
Informatika pro ekonomy II přednáška 11
Databázové systémy 1 Cvičení č. 8 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Fakulta elektrotechniky a informatiky
Architektury a techniky DS Tvorba efektivních příkazů I Přednáška č. 3 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Architektury a techniky DS Cvičení č. 4 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
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 I Přednáška č. 5 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy II Přednáška č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy 1 Cvičení č. 3 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy II Přednáška č. 5 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Temporální databáze a TSQL
PL/SQL Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd. Rozšířením jazyka SQL.
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 2 Cvičení č. 7 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy II Přednáška č. 4, 5 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databáze Tabulky a typy dat VY_32_INOVACE_7B11. Proč datové typy ? Abychom mohli do tabulky vložit data, musíme jednotlivým polím (sloupcům) přiřadit.
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
Databázové systémy 2 Cvičení č. 2 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy I Cvičení č. 9 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Databázové systémy 2 Cvičení V Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky
Databázové systémy 2 Zkouška – 8:00. Příklad I - Funkce Vytvořte funkci ZK_HR_ODDELENI (p_oddeleni_id NUMBER). Funkce vrátí řetězec, obsahující.
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.
Databázové systémy 2 Cvičení č. 4 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy I Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Databázové systémy 2 Cvičení č. 6 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Fakulta elektrotechniky a informatiky
Fakulta elektrotechniky a informatiky
Databázové systémy 2 Zkouška – 08:00. Příklad I – Funkce – 4 body Vytvořte funkci F_ZK1(p_id_zamestnance NUMBER) RETURN VARCHAR2. Daná funkce.
Architektury a techniky DS Efektivní programování v jazyce PL/SQL
Databázové systémy 2 Zkouška :00. Příklad I IDAS2 – zkouška :00 2 Vytvořte proceduru ZK_TRP_PRODUKTIVITA(P_DATUM_OD IN VARCHAR2,
Databázové systémy II Přednáška V Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
Databázové systémy I Cvičení č. 8 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy 2 Zkouška – 08:00. Příklad I – Procedura – 5 bodů Vytvořte proceduru P_ZK3(p_oddeleni_id_from NUMBER, p_oddeleni_id_to NUMBER,
Databázové systémy II Cvičení č. 3 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy 2 Zkouška – 8:00. Příklad I - Procedura Vytvořte proceduru PROCEDURE ZK_ZAM_HISTOGRAM(P_ROK_OD IN NUMBER, P_ROK_DO IN NUMBER)
Databázové systémy I Cvičení č. 10 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Databázové systémy 2 Zkouška – 8:00. Příklad I – Procedura – 5 bodů Vytvořte proceduru P_ZK4(p_oddeleni_id_from NUMBER, p_oddeleni_id_to NUMBER)
Databázové systémy 2 Zkouška – 12:00. Příklad I - Funkce Vytvořte funkci ZK_TRP_TREND(P_ID_TRPASLIKA IN NUMBER, P_DATUM_OD IN VARCHAR2, P_DATUM_DO.
Databázové systémy I Cvičení č. 7 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Databázové systémy 2 Zkouška – 8:00. Příklad I – Procedura – 5 bodů Vytvořte proceduru P_ZK2(p_table_name VARCHAR2, p_min_nuls NUMBER, p_drop.
Dynamic SQL P. Částek. Dynamic SQL Embedded SQL je překládaný preprocesorem => za běhu nelze nechat uživatele rozhodovat o vzhledu samotných SQL příkazů.
Aplikační a programové vybavení
Databázové systémy 2 Zkouška – 8:00. Příklad I - Funkce Vytvořte funkci ZK_TRP_TREND(P_ID_TRPASLIKA IN NUMBER, P_DATUM_OD IN VARCHAR2, P_DATUM_DO.
Databázové systémy 2 Cvičení č. 5 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy SQL Výběr dat.
Databázové systémy 2 Cvičení č. 4 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy 2 Zkouška – 8:00. Příklad I - Procedura Vytvořte proceduru PROCEDURE ZK_ZAM_HISTOGRAM(P_ROK_OD IN NUMBER, P_ROK_DO IN NUMBER)
Databázové systémy 2 Cvičení IV Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky
Databázové systémy 2 Zkouška – 12:00. Příklad I - Funkce Vytvořte funkci ZK_IS_COLUMN_FK(P_TABLE_NAME IN VARCHAR2, P_COLUMN_NAME IN VARCHAR2)
Databázové systémy 2 Zkouška – 8:00. Příklad I - Funkce Vytvořte funkci ZK_DIFF_MIN_MAX (P_ZAM_ID NUMBER) RETURN VARCHAR2. Funkce může vracet.
Databázové systémy 2 Cvičení č. 5 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Architektury a techniky DS Cvičení č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy 1 Cvičení č. 5 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy I Cvičení č. 8 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2015.
Databázové systémy a SQL
Databázové systémy a SQL
Přednáška 9 Triggery.
Databázové systémy a SQL
Transkript prezentace:

Databázové systémy 2 Cvičení č. 6 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice

Obsah cvičení -Práce s DBMS_OUTPUT. -Explicitní a implicitní kurzory. -Kurzory s parametrem. -Záznamy. -Definice procedur. Databázové systémy 2 – cvičení 6 2

Cvičení 6 Základní používání DBMS_OUTPUT: DECLARE i_text VARCHAR2(100) DEFAULT 'Ahoj světe!'; i_cislo NUMBER(10,8); BEGIN dbms_output.put_line(i_text); i_text := NULL; dbms_output.put_line(i_text); i_cislo := 22/7; dbms_output.put_line(i_cislo); i_text := 'Nový text'; i_text := i_text || ' ' || i_cislo; dbms_output.put_line(i_text); END; / Databázové systémy 2 – cvičení 5 3 Databázové systémy 2 – cvičení 6 3

4 Cvičení 6 Příklad používání DBMS_RANDOM: DECLARE x PLS_INTEGER; rn NUMBER(20); BEGIN SELECT hsecs INTO rn FROM gv$timer; dbms_random.initialize(rn); FOR i IN LOOP x := dbms_random.random; dbms_output.put_line(x); rn := x; END LOOP; dbms_random.terminate; END; /

Procedury Procedura je posloupnost příkazů, které se provedou v okamžiku spuštění procedury. Na základě vstupních parametrů jsou vráceny výsledky v podobě výstupních parametrů. Syntaxe CREATE [OR REPLACE] PROCEDURE [( )] AS … deklarační sekce …………………………. BEGIN … výkonná sekce …………………………. EXCEPTION … sekce pro zpracování výjimek …………………………. END; Databázové systémy 2 - př. 4, 5 5

Procedury Příklad definice procedury CREATE [OR REPLACE] PROCEDURE zvyseni_mzdy (procento IN NUMBER) AS BEGIN UPDATE pracovnici SET mzda = mzda * (1+procento/100); END; Příklad spuštění procedury EXECUTE zvyseni_mzdy(6); nebo EXEC zvyseni_mzdy(6); nebo BEGIN zvyseni_mzdy(6); END; Databázové systémy 2 - př. 4, 5 6

Databázové systémy 2 – cvičení 6 7 Cvičení 6 – Příklad I -Vytvořte proceduru CV6_NASTAV_PLATY, která vloží záznamy do tabulky cv6_trpaslici_plat(id_trpaslika NUMBER(2,0),plat NUMBER(8,2)), kterou si vytvoříte ve vašem schématu. -Tabulka cv6_trpaslici_plat bude obsahovat kromě identifikátoru trpaslíka i jeho vypočtený plat. Plat bude vypočten tak, že za každý skutečně vytěžený kg v období – obdrží trpaslík 1,25 zlaťáku. Výjimkou jsou trpaslíci, jejichž výška je méně než 110 cm, ti obdrží paušálně navíc 30 zlaťáků. Pro naplnění tabulky využijte explicitního kurzoru. Kromě toho procedura navíc vypíše na výstupní zařízení informaci o tom, kolik bylo trpaslíkům celkem vyplaceno. -Viz ukázka: Výdaje: 4323,75

Databázové systémy 2 – cvičení 6 8 Cvičení 6 – Příklad II -Vytvořte proceduru CV6_MIN_MAX_PLAT, která na výstup vypíše trpaslíky, jejichž mzda byla nejnižší a nejvyšší. -Pro údaje o mzdě trpaslíka využijte vámi naplněnou tabulku cv6_trpaslici_plat. -Výstup by měl být v následujícím formátu: Nejvyšší plat: Rypal - 808,75 zlatých Nejnižší plat: Brucoun - 356,25 zlatých

Databázové systémy 2 – cvičení 6 9 Cvičení 6 – Příklad III -Vytvořte proceduru CV6_TRPASLIK_VLASTNOSTI. -Procedura bude vkládat záznamy do tabulky CV6_TRPASLICI_VLASTNOSTI(jmeno VARCHAR2(20), vlastnosti VARCHAR2(100)), kterou si vytvoříte ve vlastním schématu. Pro každého trpaslíka vznikne v tabulce jeden záznam (i kdyby žádné vlastnosti trpaslík neměl), který bude obsahovat jeho jméno a zřetězený seznam vlastností oddělený středníkem (vlastnost1;vlastnost2;…;). -Pro naplnění tabulky využijte implicitní kurzory. -Příklad z naplněné tabulky:

Databázové systémy 2 – cvičení 6 10 Cvičení 6 – Příklad IV -Vytvořte proceduru CV6_TRPASLICI_ZEBRICEK. -Procedura CV6_TRPASLICI_ZEBRICEK (OD VARCHAR2, DO VARCHAR2) vypíše (na standardní výstup) žebříček nejvýše tří trpaslíků, kteří v zadaném období (parametry od, do) vytěžili absolutně nejvíce rudy. -Parametry od, do zadejte pomocí řetězce, jejich převod na datový typ DATE realizujte až uvnitř procedury. -Na prvním řádku výstupu uveďte, za jaké období je žebříček sestaven. Formát: Výpis za období od - do: -Dále bude následovat samotné pořadí trpaslíku. Vždy se objeví maximálně 3 trpaslíci. Viz ukázka na následujícím snímku.

Databázové systémy 2 – cvičení 6 11 Cvičení 6 – Příklad IV

Databázové systémy 2 – cvičení 6 12 Cvičení 6 – Příklad V -Vytvořte proceduru CV6_TEZBY_RUDY. -Procedura CV6_TEZBY_RUDY (P_RUDA VARCHAR2) vypíše (na standardní výstup) přehled těžeb pro rudu zadanou parametrem za každý den, kdy se daná ruda těžila. -Výstup bude seřazen vzestupně, podle data těžby. Ve výstupu se objeví suma všech těžeb v daný den spolu s počtem trpaslíků, kteří danou rudu ten den těžili. -Výstup má následující formát: -Datum(formát DD-MM-YYYY): suma_tezeb kg (počet_trp.) -Procedura nerozlišuje, jakými písmeny byl parametr p_ruda zadán. Tzn., že pro proceduru jsou parametry „Železná“ a „ŽELEZNÁ“ rovnocenné.

Databázové systémy 2 – cvičení 6 13 Cvičení 6 – Příklad V

Databázové systémy 2 – cvičení 6 14 Cvičení 6 – Zásady pro vypracování -Dodržujte názvy objektů i jejich atributů přesně dle zadání. -Pro příklady využívejte jako zdroj dat schéma A_O_SNEHURCE. -V příkladech v nichž vkládáte data do vašich tabulek, nezapomínejte vámi vložená data potvrzovat ( COMMIT ). -U procedur, které vkládají data do tabulek, je vhodné provést vymazaní všech dat z cílových tabulek před samotným vkládáním nových dat. Předejdete tím vzniku duplicitních záznamů způsobených opakovaným spouštěním procedur.

A_O_SNEHURCE Databázové systémy 1 – cvičení 7 15

Cvičení 6 – 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 2 – cvičení 6 16