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

Slides:



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

MS ACCESS - DOTAZY DATABÁZOVÉ SYSTÉMY.
VISUAL BASIC Práce s řetězci Použitá literatura: Kvoch: Visual Basic 4.
Počítače a programování 1 Přednáška 13 Jiří Šebesta.
Vlastní skript může být umístěn: v hlavičce stránky v těle stránky
Dynamické dokumenty na straně klienta Informatika pro ekonomy II.
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]],...
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
Teorie zpracování dat Ukázková písemka. Kapitola 4 Je dána tabulka Zam (login, jmeno, plat, funkce), implementovaná je v SŘBD používajícím indexové soubory.
Databázové systémy 1 Cvičení č. 8 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy 1 - řešení Cvičení č. 10 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
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 II Přednáška č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy 2 Cvičení č. 6 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Fakulta elektrotechniky a informatiky
Databázové systémy 1 Cvičení č. 3 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Algoritmy I Cvičení č. 3.
Temporální databáze a TSQL
MS EXCEL Chybové hodnoty
Databázové systémy 2 Cvičení č. 7 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.
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
Datové typy a práce s nimi
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.
Administrace Oracle Práva a role, audit Filip Řepka 2010.
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.
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 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 Cvičení č. 10 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ů.
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 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 Ing. Roman Danel, Ph.D.
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.
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.
KIV/ZD cvičení 5 Tomáš Potužák.
Vzorové řešení zápočtového testu
Algoritmizace a programování
Databázové systémy a SQL
Databázové systémy a SQL
Databázové systémy a SQL
Transkript prezentace:

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

Obsah cvičení -Opakování (procedury, funkce, balíčky) -Triggery pro klientské události -Práce s datem Databázové systémy 2 – cvičení 9 2

Triggery pro klientské události Vyvolány konkrétní událostí nad uživatelovým schématem (CREATE, GRANT, REVOKE, TRUNCTE, …) Kompletní výčet událostí: – Atributy triggerů nad klientskými událostmi. - Atributy blíže popisují událost, ke které došlo. Viz tabulka : Databázové systémy 2 – cvičení 9 3 Název atributuPopis ora_syseventTyp události (CREATE,LOGON,DROP,…) ora_login_userUživatel, který akci provedl. ora_dict_obj_nameNázev databázového objektu. ora_dict_obj_typeTyp databázového objektu. ora_dict_obj_ownerVlastník objektu.

Oracle a datum Datový ty DATE. Základní funkce: – TO_DATE - Provede převod ze znakového datového typu na datový typ DATE. – TO_CHAR - Převede datový typ DATE na znakovou reprezentaci. – SYSDATE - Vrátí aktuální datum. – ROUND - Funkce vrátí zaokrouhlené datum ke specifické jednotce (měsíc, rok, …). – TRUNC - Funkce provede „oříznutá“ data ke specifické jednotce. – MIN, MAX - Nalezení nejmenšího a největšího data. Databázové systémy 2 – cvičení 9 4

TO_DATE: – TO_DATE(, [ format_mask ], [ nls_language ]) string1 - řetězce, který chceme převést na datum. format_mask - maska pro námi zadaný řetězec nls_language - maska se vybere podle národního nastavení databáze SELECT TO_DATE(' ','DD.MM.YYYY') FROM dual; SELECT TO_DATE(' :15','DD.MM.YYYY HH24:MI') FROM dual; Databázové systémy 2 – cvičení 9 5 Oracle a datum

TO_CHAR: – TO_CHAR(, [ format_mask ], [ nls_language ]) date - datum, které konvertujem na řetězec. format_mask - maska formátu výstupního řetězce. nls_language - maska se zvolí dle národního nastavení databáze. TO_CHAR(' ','MM/DD/YY') = „12/04/11“ TO_CHAR(' ','DDD') = „355“ TO_CHAR(' ', 'Q') = Databázové systémy 2 – cvičení 9 6 Oracle a datum

Aritmetika – Ve spojení s daty můžeme využívat operátory + a - – Příklady: + Přičte daný počet (integer) dní k datu (date) - Odečte daný počet dní od data - Vrátí rozdíl (ve dnech) mezi oběma daty. + NELZE Další příklady práce s type DATE: – Databázové systémy 2 – cvičení 9 7 Oracle a datum

Příklady Vytvořte balíček CV9_DATUMY. V rámci balíčku vytvořte následující funkce: – Funkce datumy_rozdil(datum_od DATE, datum_do DATE, typ CHAR) Návratovým typem je datový typ NUMBER. Funkce vrátí časový rozdíl mezi zadanými daty dle zvoleného typu. Typ může nabývat hodnot D (Dny), H (Hodiny), M (Minuty) a S (Sekundy). Výsledek zaokrouhlete na dvě desetinná místa. Ověřte, zda byly vyplněny oba datumy a v parametru typ je zadána přípustná hodnota. V případě že nebude dodrženo, funkce skončí výjimkou s textem „Špatné prarametry” Databázové systémy 2 – cvičení 9 8

Příklady Pokračovaní balíčku CV9_DATUMY: – Funkce pracovni_den(datum DATE) Návratový typ NUMBER. Funkce určí, zda zadané datum je pracovním dnem (funkce vrátí 1) či nikoliv (0). Zanedbejte svátky. (Tedy pokud byl svátek v pracovní den, pro funkci je to stále pracovní den). – Funkce den_v_mesici(datum DATE, prvni NUMBER) Návratový typ DATE. Funkce vrátí datum, jenž bude prvním dnem měsíce (první = 1) či posledním dnem v měsíci (první = 0) vzhledem k zadanému datu. Př. datum a první = 1 = Databázové systémy 2 – cvičení 9 9

Příklady Vytvořte pohled cv9_trpaslici_tezby_sum(JMENO VARCHAR2, VYTEZENO NUMBER, DEN_TYP VARCHAR2) – Pohled vytvoří přehled, ve kterém bude celkový souhrn vytěžené rudy pro každého trpaslíka a typ dne (Po-Pá/So-Ne). – Pro určení typu dne můžete využít funkci z vašeho balíčku cv9_datumy. – Pohled seřaďte vzestupně dle jména trpaslíka. Databázové systémy 2 – cvičení 9 10

Příklady Vytvořte funkci CV9_TEZBY_PREDPOVED (P_ID_TRPASLIKA NUMBER, P_DATUM_OD DATE, P_DATUM_DO DATE ) RETURN NUMBER – Funkce vypočte odhad vytěžené rudy v zadaném období (p_datum_od - p_datum_do) a u vybraného trpaslíka na základě historických těžeb v tabulce A_SNEHURKA.TEZBY. – Jako základ pro výpočet použijte průměr vytěžených kg na kalendářní den v únoru 2006 – Ve funkci zkontrolujte, zda jsou vyplněny všechny parametry. Pokud nejsou, pak funkce skončí výjimkou. Výjimka bude obsahovat text: „Špatné parametry“ Databázové systémy 2 – cvičení 9 11

Příklady Pokračování CV9_TEZBY_PREDPOVED – Dále zkontrolujte, zda datum_od není větší než datum_do. Pokud bude, pak funkce skončí výjimkou. Textem výjimky bude: „Datum od je větší než datum do!“. – Dále zajistěte, aby zadané období nekolidovalo s pracovním obdobím zadaného trpaslíka. Pokud bude, vyvolejte výjimku s textem: „ Zadaný rozsah spadá do pracovního období trpaslíka! “ Za začátek pracovního období se považuje první den kdy trpaslík pracoval na šachtě, jako poslední den období se volí poslední den v záznamu těžeb. Databázové systémy 2 – cvičení 9 12

Příklady Vytvořte proceduru CV9_TRPASLICI_PREDPOVED (P_DATUM_OD DATE, P_DATUM_DO DATE ) – Procedura na standardní výstup vypíše s pomocí funkce CV9_TEZBY_PREDPOVED předpověď pro všechny trpaslíky v zadaném období. – Zajistěte, aby procedura vždy vypsala všechny trpaslíky, bez ohledu na to, zda volání funkce CV9_TEZBY_PREDPOVED skončilo výjimkou. Pokud skončí výjimkou, tak u daného trpaslíka zobrazte text: „Chyba při výpočtu“. – Pokud uživatel nevyplní datum_od či datum_do, tak je nahraďte aktuálním datem. – Předpovídané množství zaokrouhlete na jedno desetinné místo. – Výstup procedury zhotovte dle příkladů na následující stránce. – Dodržte formátovaní včetně odsazení. Databázové systémy 2 – cvičení 9 13

Příklady Databázové systémy 2 – cvičení 9 14

Příklady Vytvořte tabulku cv9_my_actions ( uzivatel VARCHAR2(50) NOT NULL, udalost VARCHAR2(50) NOT NULL, typ_objektu VARCHAR2(50), nazev_objektu VARCHAR2(50), datum TIMESTAMP); Databázové systémy 2 – cvičení 9 15

Příklady Vytvořte trigger cv9_trigger_ddl, který bude do tabulky cv9_my_actions ukládat informace o všech DDL operacích provedených ve vašem schématu. Tímto triggerem naplňte všechny sloupce tabulky cv9_my_actions. Vytvořte triggery CV9_TRG_LOGON a CV9_TRG_LOGOFF, které budou zaznamenávat vaše přihlášení a odhlášení do schématu. Tyto informace zapisujte opět do tabulky cv9_my_actions (sloupce typ_objektu a nazev_objektu nechte prázdné). Ukázka tabulky cv9_my_actions je na následující stránce. Databázové systémy 2 – cvičení 9 16

Příklady Databázové systémy 2 – cvičení 9 17

Příklady Po vyřešení a odzkoušení funkce všech vytvořených databázových objektů v rámci tohoto zadání deaktivujte všechny vámi vytvořené triggery. Obsah tabulky cv9_my_actions ponechejte (předpokládá se, že je neprázdný a jsou v ní řádky ohledně přihlášení, odhlášení a DDL operacích). Databázové systémy 2 – cvičení 9 18

cvičení 9 – 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í 9 19