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

Slides:



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

Vlastní skript může být umístěn: v hlavičce stránky v těle stránky
Základy jazyka SQL Jan Tichava
Databázové systémy 2 Cvičení č. 9 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.
A5M33IZS – Informační a znalostní systémy Dotazovací jazyk SQL - I.
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.
LOV, Listbox, Poplist a Combobox v Oracle Forms LOV – seznam hodnot, které se zobrazí po stisku klávesy Enter v textovém poli. LOV – seznam hodnot, které.
Fakulta elektrotechniky a informatiky
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.
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.
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
Databázové systémy II Přednáška č. 6 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 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.
1 BUMI Úvod do medicínské informatiky Počítačové cvičení č. 3 Ing. Vratislav Čmiel.
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
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.
Š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 teorie a návrh relačních databázových systémů část II.
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.
SQL PVA Jan Hora. SQL „graficky“ Grafický vs. pravý SQL SELECT ORDED BY WHERE.
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
Čí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ý.
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 Cvičení č. 10 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy II Cvičení č. 3 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.
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í
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.
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é Aplikace Slidy ke cvičení DBI026, část 3 KSI MFF UK Verze
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.
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.
Databázové systémy I Cvičení č. 5 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Dotazovací jazyk SQL I.
Databázové systémy přednáška 2 – Datové typy
Databázové systémy a SQL
Databázové systémy a SQL
Databázové systémy a SQL
Přednáška 9 Triggery.
Databázové systémy a SQL
Databázové systémy a SQL
Transkript prezentace:

Databázové systémy 2 Cvičení č. 8 Ing. Tomáš Váňa (tomas.vana@student.upce.cz) Fakulta elektrotechniky a informatiky Univerzita Pardubice

Obsah cvičení Triggery nad tabulkami. Triggery nad pohledy („Insted of triggery“). Sekvence. Regulární výrazy. Výjimky. Databázové systémy 2 – cvičení 8

Databázové systémy 2 – cvičení 8 Sekvence Sekvence podle pravidel dokáže generovat požadovaná čísla. Sekvence generují jedinečná čísla v rámci všech transakcí v databázi. Výhodné využití pro umělé primární klíče. Často se ve užívají v kombinaci s triggerem. CREATE SEQUENCE [schema.]name [START WITH integer] [INCREMENT BY integer] [MAXVALUE integer|NOMAXVALUE] [MINVALUE integer|NOMINVALUE] [CYCLE|NOCYCLE] [CACHE integer|NOCACHE] [ORDER|NOORDER] Databázové systémy 2 – cvičení 8

Databázové systémy 2 – cvičení 8 Sekvence Příklad vytvoření sekvence: CREATE SEQUENCE CV8_MY_ID_SEQ START WITH 1 INCREMENT BY 1; Příklad použití sekvence v triggeru: create or replace TRIGGER GET_NEW_ID BEFORE INSERT ON MY_TABLE FOR EACH ROW BEGIN SELECT cv8_lide_seq.NEXTVAL INTO :new.id FROM dual; END; Databázové systémy 2 – cvičení 8

Databázové systémy 2 – cvičení 8 Vlastnosti triggerů Uvnitř triggeru můžeme používat tři logické funkce (INSERTING, UPDATING, DELETING), které umožní identifikovat, který příkaz inicioval spuštění triggeru. Vlastnost Chování INSERTING TRUE, jestliže se jedná o příkaz INSERT, jinak FALSE UPDATING TRUE, jestliže se jedná o příkaz UPDATE, jinak FALSE DELETING TRUE, jestliže se jedná o příkaz DELETE, jinak FALSE Databázové systémy 2 – cvičení 8

Databázové systémy 2 – cvičení 8 Vlastnosti triggerů Příklad využití: Databázové systémy 2 – cvičení 8

Databázové systémy 2 – cvičení 8 Regulární výrazy Regulární výraz je řetězec popisující celou množinu řetězců. Využití: Vyhledávaní textu (testovaní shody, zjištění pozice). Manipulace s textem (záměna textu, extrakce). Regularní výrazy v Oracle DB: Funkce: REGEXP_LIKE REGEXP_REPLACE REGEXP_SUBSTR REGEXP_COUNT REGEXP_INSTR Význam jednotlivých funkcí naleznete na: http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28424/adfns_regexp.htm# Databázové systémy 2 – cvičení 8

Databázové systémy 2 – cvičení 8 Regulární výrazy Využití v rámci databáze: Vyhledávaní podle vzoru. SELECT first_name, last_name FROM employees WHERE REGEXP_LIKE (first_name, '^Ste(v|ph)en$'); Formátování výstupu. SELECT names "names", REGEXP_REPLACE(names, '^(\S+)\s(\S+)\s(\S+)$', '\3, \1 \2') AS "names after regexp" FROM famous_people; Check constraint. CONSTRAINT c_contacts_pnf CHECK (REGEXP_LIKE (p_number, '^\(\d{3}\) \d{3}-\d{4}$')) Databázové systémy 2 – cvičení 8

Databázové systémy 2 – cvičení 8 Regulární výrazy REGEXP_LIKE Obdobná funkce jako LIKE. REGEXP_LIKE místo jednoduchého vzoru (%hledany_text%) využívá vyhledávání na základě vzoru zapsaného jako regulární výraz. Syntaxe: REGEXP_LIKE(zdrojovy_text, vzor) zdrojovy_text - text, ve kterém hledáme vzor – regulární výraz, který se aplikuje na zdrojový text. Tabulka zástupných znaků pro regulární výraz: http://download.oracle.com/docs/cd/B14117_01/appdev.101/b10795/adfns_re.htm#1006817 Databázové systémy 2 – cvičení 8

Databázové systémy 2 – cvičení 8 Regulární výrazy Příklady práce s regulárními výrazy v Oracle DB: http://orafaq.com/node/2404 http://www.adp-gmbh.ch/ora/sql/re/index.html http://psoug.org/reference/regexp.html Databázové systémy 2 – cvičení 8

Databázové systémy 2 – cvičení 8 Příklady Vytvořte všechny tabulky z přiloženého skriptu. (Skript naleznete na serveru projektu LEARN). Vytvořte sekvenci CV8_LIDE_SEQ. Vytvořenou sekvenci využijte v triggeru nad tabulkou CV8_LIDE. Trigger se bude jmenovat CV8_LIDE_ID a jeho úkolem bude automaticky doplňovat ID u nově vkládaných záznamů. Databázové systémy 2 – cvičení 8

Databázové systémy 2 – cvičení 8 Příklady Dále nad tabulkou vytvořte trigger CV8_LIDE_SMAZAT. Trigger zajistí zkopírování mazaného záznamu do tabulky CV8_LIDE_SMAZANI. Záznam nezapomeňte opatřit datem, kdy ke smazaní daného záznamu došlo (atribut datum_smazani). Databázové systémy 2 – cvičení 8

Databázové systémy 2 – cvičení 8 Příklady Stále nad tabulkou CV8_LIDE vytvořte trigger CV8_LIDE_VALIDACE. Trigger bude aktivován při vkládání a aktualizaci záznamů. Trigger zajistí: V případě, že jméno a příjmení nebudou zadány s velkým prvním písmenem, trigger provede opravu. Do tabulky je možné vložit jen osoby, starší 15 let. Pokud se někdo pokusí vložit osobu mladší 15 let, trigger musí vyvolat výjimku s textem: „Osoba je mladší 15 let“. Trigger vyvolá výjimku s textem „Měnit ID v tabulce cv8_lide je zakázané! “ v případě, že se někdo pokusí změnit hodnotu ve sloupci ID. Databázové systémy 2 – cvičení 8

Databázové systémy 2 – cvičení 8 Příklady Pokračování CV8_LIDE_VALIDACE: Trigger bude obsluhovat atribut validni, který bude udávat, zda daná osoba z tabulky má korektně vyplněny všechny informace. Za korektní vyplnění se považuje: Délka telefonního čísla je nejméně 9 znaků. Adresa má nejméně 10 znaků. Email obsahuje validní emailovou adresu. (využijte regulární výraz) Rodné číslo je ve správném formátu. (http://latrine.dgx.cz/jak-overit-platne-ic-a-rodne-cislo) V případě, že údaje budou korektně vyplněny, nastaví trigger atribut validní na 1, jinak 0. Databázové systémy 2 – cvičení 8

Databázové systémy 2 – cvičení 8 Příklady Nad tabulkou CV8_ZAJMY vytvořte trigger CV8_ZAJMY_SMAZAT. Trigger dovolí vymazat záznam z tabulky CV8_ZAJMY jen v případě, že daný zájem sdílí maximálně dva lidé. V takovém případě trigger zajistí smazaní záznamů i z tabulky CV8_LIDE_ZAJMY. Jinak vyvolá výjimku s textem „Daný zájem sdílí více než 2 osoby “. V tomto případě mazaní z tabulek neproběhne. Databázové systémy 2 – cvičení 8

Databázové systémy 2 – cvičení 8 Příklady Dále nad tabulkou CV8_ZAJMY vytvořte trigger CV8_ZAJMY_DML, který se bude zapisovat informace o DML operacích nad tabulkou CV8_ZAJMY. Každá DML operace bude zaznamenána do tabulky CV8_LOG_TABLE. Evidujte následující informace: Databázové systémy 2 – cvičení 8

Databázové systémy 2 – cvičení 8 Příklady Nad tabulkou CV8_ZAJMY vytvořte trigger CV8_ZAJMY_UPDATE, který zajistí, že změna ID v tabulce CV8_ZAJMY se promítne i do tabulky CV8_LIDE_ZAJMY. Databázové systémy 2 – cvičení 8

Databázové systémy 2 – cvičení 8 Příklady Nad tabulkou CV8_LIDE_ZAJMY vytvořte trigger CV8_LIDE_ZAJMY_DML s naprosto stejnou logikou jako CV8_ZAJMY_DML. Databázové systémy 2 – cvičení 8

Databázové systémy 2 – cvičení 8 Příklady Vytvořte pohled CV8_LIDE_ZAJMY_VIEW(ID_LID NUMBER, JMENO VARCHAR2, PRIJMENI VARCHAR2, ID_ZAJ NUMBER, ZAJEM VARCHAR2). Pohled by měl poskytovat následující výstup: Databázové systémy 2 – cvičení 8

Databázové systémy 2 – cvičení 8 Příklady Nad pohledem CV8_LIDE_ZAJMY_VIEW vytvořte trigger CV8_LIDE_ZAJMY_VIEW_TRG, který umožní měnit atributy jmeno, prijmeni a zajem. Ke změně hodnot atributů musí dojít v samotných zdrojových tabulkách. Databázové systémy 2 – cvičení 8

Databázové systémy 2 – cvičení 8 Cvičení 8 – 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í 8