Databázové systémy a SQL

Slides:



Advertisements
Podobné prezentace
MS ACCESS - DOTAZY DATABÁZOVÉ SYSTÉMY.
Advertisements

Základy jazyka SQL Jan Tichava
Ladislav Hofman, Jan Slavík TUL Předmět databázové systémy
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 Realizace sběru dat v rámci realizovaných úloh.
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
Fakulta elektrotechniky a informatiky
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 II Přednáška č. 5 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Temporální databáze a TSQL
Relační databáze Jakub Lokoč.
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 II Přednáška č. 4, 5 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Procedurální rozšíření Transact SQL Michal Kopecký Výběr ze slajdů k 3. přednášce předmětu Databázové Aplikace (DBI026) na MFF UK.
Databázové systémy I Cvičení č. 9 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
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.
MS ACCESS parametrický dotaz
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.
Rauer Luboš Kopic Petr Blažek Tomáš. Structured Query Language - dotazovací jazyk -> pracuje s dotazy - neprocedurální jazyk - mocný, ale přitom jednoduchý.
Databázové systémy 2 Cvičení č. 6 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Čí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
MySQL ÚVOD DO JAZYKA SQL
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 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.
Informatika II PAA DOTAZOVACÍ JAZYKY
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.
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.
Základní obeznámení s jazykem SQL Databázové systémy.
Databázové Aplikace Slidy ke cvičení DBI026, část 3 KSI MFF UK Verze
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.
Cvičení 11 Ing. Pavel Bednář
Architektury a techniky DS Cvičení č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Analýza možností SŘBD PostgreSQL / PostGIS pro vytvoření datového skladu v prostředí GIS Jaromír Kamler Vedoucí: Antonín Orlík.
Příkazy jazyka SQL ve VFP a na SQL Serveru
Databázové systémy I Cvičení č. 5 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Autor, Název akce Databázové systémy a SQL Lekce 7 Daniel Klimeš.
Autor, Název akce Databázové systémy a SQL Lekce 2 Daniel Klimeš 1.
Roman Danel Institut ekonomiky a systémů řízení 2016
Databázové systémy I Přednáška 8 Databázové systémy 1 – KIT/IDAS1
Databázové systémy a SQL
Dotazovací jazyk SQL - III
Databázové systémy a SQL
Databázové systémy a SQL
Databázové systémy a SQL
Databázové systémy a SQL
Databázové systémy a SQL
Databázové systémy a SQL
Šablona 32 VY_32_INOVACE_038.ICT.34
Přednáška 9 Triggery.
Databázové systémy a SQL
Databázové systémy a SQL
Databázové systémy a SQL
Transkript prezentace:

Databázové systémy a SQL Lekce 9 Daniel Klimeš, Monika Kratochvílová

Funkce CREATE OR REPLACE FUNCTION nazev_funkce ([argument datovy_typ,…]) RETURNS typ_navratove_hodnoty AS $$ [DECLARE nazev_deklarovane_promenne datovy_typ; …] BEGIN telo_funkce RETURN navratova_hodnota; END; $$ LANGUAGE PLPGSQL; DROP FUNCTION nazev_funkce ([argument datovy_typ,…]); SELECT nazev_funkce ([argument datovy_typ,…]); Daniel Klimeš, Databázové systémy a SQL

Function CREATE OR REPLACE FUNCTION nazev_funkce ([argument datovy_typ,…]) RETURNS typ_navratove_hodnoty AS $$ [DECLARE nazev_deklarovane_promenne datovy_typ; …] BEGIN telo_funkce RETURN navratova_hodnota; END; $$ LANGUAGE PLPGSQL; Číslo: NUMERIC Text: TEXT/VARCHAR Datum: DATE Do těla funkce se odkazuji na návratovou hodnotu pomocí dolaru a čísla určující pořadí argumentu (př.: $1) Daniel Klimeš, Databázové systémy a SQL

Function CREATE OR REPLACE FUNCTION nazev_funkce ([argument datovy_typ,…]) RETURNS typ_navratove_hodnoty AS $$ [DECLARE nazev_deklarovane_promenne datovy_typ; …] BEGIN telo_funkce RETURN navratova_hodnota; END; $$ LANGUAGE PLPGSQL; NUMERIC TEXT/VARCHAR TABLE VOID Daniel Klimeš, Databázové systémy a SQL

Příklad: Funkce pro součet dvou hodnot. CREATE OR REPLACE FUNCTION soucet (cislo1 NUMERIC, cislo2 NUMERIC) RETURNS NUMERIC AS $$ BEGIN RETURN $1 + $2; -- (nebo cislo1 + cislo2;) END; $$ LANGUAGE PLPGSQL; CREATE OR REPLACE FUNCTION soucet2 (NUMERIC, NUMERIC) DECLARE vysledek NUMERIC; SELECT $1 + $2 INTO vysledek; -- (nebo lepe vysledek = $1 + $2;) RETURN vysledek; Daniel Klimeš, Databázové systémy a SQL

Vytvořte funkci pro výpočet procenta. Funkce - cvičení Vytvořte funkci pro výpočet procenta. Daniel Klimeš, Databázové systémy a SQL

Vytvořte funkci pro výpočet procenta. Funkce - cvičení Vytvořte funkci pro výpočet procenta. CREATE OR REPLACE FUNCTION procento(numeric,numeric) RETURNS NUMERIC AS $$ DECLARE vysledek NUMERIC; BEGIN vysledek = ROUND(100*$1/$2, 2); RETURN vysledek; END; $$ LANGUAGE PLPGSQL; Daniel Klimeš, Databázové systémy a SQL

Vytvořte funkci pro výpočet věku pouze v letech. Funkce - cvičení Vytvořte funkci pro výpočet věku pouze v letech. Daniel Klimeš, Databázové systémy a SQL

Vytvořte funkci pro výpočet věku (pouze v letech). Funkce - cvičení Vytvořte funkci pro výpočet věku (pouze v letech). CREATE OR REPLACE FUNCTION vek_roky(date) RETURNS NUMERIC AS $$ DECLARE vek NUMERIC; BEGIN vek = DATE_PART ('year', age($1)); RETURN vek; END; $$ LANGUAGE PLPGSQL; Daniel Klimeš, Databázové systémy a SQL

Funkce - cvičení Vytvořte tabulku vysetreni, která bude obsahovat id_pacienta, pocet_pred, pocet_po a datum_narozeni. A nainsertujte do tabulky dva libovolné záznamy. Daniel Klimeš, Databázové systémy a SQL

Funkce - cvičení Vytvořte tabulku vysetreni, která bude obsahovat id_pacienta, pocet_pred, pocet_po a datum_narozeni. A nainsertujte do tabulky dva libovolné záznamy. SHOW DATESTYLE; SET datestyle = "ISO, DMY"; CREATE TABLE vysetreni ( PACIENT_ID NUMERIC(10), POCET_PRED NUMERIC(10), POCET_PO NUMERIC(10), DAT_NAR DATE ); INSERT INTO vysetreni VALUES (1,10,21,'23.02.1986'), (2,13,24,'25.12.1975'); Daniel Klimeš, Databázové systémy a SQL

Funkce - cvičení Přidejte do tabulky vyšetření sloupec vek a naplňte jej pomocí vámi vytvořené funkce vek_roky. Daniel Klimeš, Databázové systémy a SQL

Funkce - cvičení Přidejte do tabulky vyšetření sloupec vek a naplňte jej pomocí vámi vytvořené funkce vek_roky. ALTER TABLE vysetreni ADD COLUMN vek NUMERIC(2); UPDATE vysetreni SET vek = vek_roky(datum_narozeni); Daniel Klimeš, Databázové systémy a SQL

Funkce - cvičení Přidejte do tabulky vyšetření sloupec změna_procento a naplňte jej pomocí vámi vytvořené funkce procento. Daniel Klimeš, Databázové systémy a SQL

Funkce - cvičení Přidejte do tabulky vyšetření sloupec zmena_procento, který bude znázorňovat procentuální změnu počtu před a po. A naplňte jej pomocí vámi vytvořené funkce procento. ALTER TABLE vysetreni ADD COLUMN zmena_procento NUMERIC(4,2); UPDATE vysetreni SET zmena_procento = procento(pocet_po - pocet_pred, pocet_po); -- poznámka Do argumentu funkce lze vložit i SELECT: ALTER TABLE vysetreni ADD COLUMN procento2 NUMERIC(4,2); UPDATE vysetreni SET procento2 = procento(pocet_pred, (SELECT sum(pocet_pred) FROM vysetreni)); Daniel Klimeš, Databázové systémy a SQL

Funkce bez argumentu - cvičení Vytvořte postupně funkci, v rámci které provedete: Vytvoříte tabulku Naimportujete data Proveďte základní úpravu dat Nakategorizujete některé proměnné Všechny předchozí dotazy zaobalte do funkce Daniel Klimeš, Databázové systémy a SQL

Funkce bez argumentu - cvičení Vytvořte postupně funkci, v rámci které provedete: Vytvoříte tabulku 1. Stáhněte si ze sdíleného disku csv soubor mamo_scr.csv 2. Soubor otevřete v nějakém programu (např. excel) 3. Data si prohlédněte 4. Zjistěte, jaké sloupce soubor obsahuje a jakého jsou datového typu 5. Podle zdrojového souboru vytvořte tabulku v databázi Daniel Klimeš, Databázové systémy a SQL

Funkce bez argumentu - cvičení Vytvořte postupně funkci, v rámci které provedete: Vytvoříte tabulku 1. Stáhněte si ze sdíleného disku csv soubor mamo_scr.csv 2. Soubor otevřete v nějakém programu (např. excel) 3. Data si prohlédněte 4. Zjistěte, jaké sloupce soubor obsahuje a jakého jsou datového typu 5. Podle zdrojového souboru vytvořte tabulku v databázi CREATE TABLE mamo_scr ( id_pacientky NUMERIC(10), datum_narozeni DATE, kraj VARCHAR(3), metoda NUMERIC(3), datum_vys DATE, vysledek_vys NUMERIC(3) ); Daniel Klimeš, Databázové systémy a SQL

Funkce bez argumentu - cvičení Vytvořte postupně funkci, v rámci které provedete: Naimportujete data Napište COPY příkaz pro import dat z adresáře ve vašem počítači Dejte si pozor na nastavení oprávnění – nastavte pro EVERYONE Daniel Klimeš, Databázové systémy a SQL

Funkce bez argumentu - cvičení Vytvořte postupně funkci, v rámci které provedete: Naimportujete data Napište COPY příkaz pro import dat z adresáře ve vašem počítači Dejte si pozor na nastavení oprávnění – nastavte pro EVERYONE COPY mamo_scr FROM 'C:document/…/mamo_scr.csv' CSV delimiter ';' header null ''; Daniel Klimeš, Databázové systémy a SQL

Funkce bez argumentu - cvičení Vytvořte postupně funkci, v rámci které provedete: Proveďte základní úpravu dat Odstraňte všechny záznamy, kde chybí datum narození nebo datum vyšetření Ověřte konzistenci datumů a případné chybné záznamy odstraňte Doplňte hodnotu ve sloupci kraj na 999, kde kraj není uveden Změňte hodnotu metody na NULL v případě, že nespadá mezi hodnoty 1,2,3,4,5,6,7,9 a hodnotu výsledku vyšetření v případě, že nespadá mezi hodnoty 1 až 10 Daniel Klimeš, Databázové systémy a SQL

Funkce bez argumentu - cvičení Vytvořte postupně funkci, v rámci které provedete: Proveďte základní úpravu dat Odstraňte všechny záznamy, kde chybí datum narození nebo datum vyšetření Ověřte konzistenci datumů a případné chybné záznamy odstraňte Doplňte hodnotu ve sloupci kraj na 999, kde kraj není uveden Změňte hodnotu metody na NULL v případě, že nespadá mezi hodnoty 1,2,3,4,5,6,7,9 a hodnotu výsledku vyšetření v případě, že nespadá mezi hodnoty 1 až 10 DELETE FROM mamo_scr WHERE datum_narozeni IS NULL OR datum_vys IS NULL OR vysledek_vys IS NULL; WHERE datum_narozeni > datum_vys OR datum_vys > CURRENT_DATE OR datum_narozeni > CURRENT_DATE; UPDATE mamo_scr SET kraj = '999' WHERE kraj IS NULL; UPDATE mamo_scr SET metoda = NULL WHERE metoda <1 OR metoda > 9 OR metoda = 8; UPDATE mamo_scr SET vysledek_vys = NULL WHERE vysledek_vys <1 OR vysledek_vys > 10; Daniel Klimeš, Databázové systémy a SQL

Funkce bez argumentu - cvičení Vytvořte postupně funkci, v rámci které provedete: Nakategorizujete některé proměnné Vytvořte nový sloupce vek (v letech) a vek_kategorie (0-44/45-69/70 a starší) Vytvořte nový sloupec nador s hodnotami NEGATIVNI (vysledek_vys 1,2), BENIGNI (vysledek_vys 3,4), MALIGNI (vysledek_vys >=5) a NEZNAMO (vysledek_vys NULL) Daniel Klimeš, Databázové systémy a SQL

Funkce bez argumentu - cvičení Vytvořte postupně funkci, v rámci které provedete: Nakategorizujete některé proměnné Vytvořte nový sloupce vek (v letech) a vek_kategorie (0-44/45-69/70 a starší) Vytvořte nový sloupec nador (negativni/benigni/maligni/neznamo) ALTER TABLE mamo_scr ADD COLUMN vek NUMERIC(2); UPDATE mamo_scr SET vek=vek_roky(datum_narozeni); ALTER TABLE mamo_scr ADD COLUMN vek_kategorie VARCHAR(20); UPDATE mamo_scr SET vek_kategorie = CASE WHEN vek < 45 THEN '0 - 44' WHEN vek < 70 THEN '45 - 69' ELSE '70 a starší' END; ALTER TABLE mamo_scr ADD COLUMN nador VARCHAR(20); UPDATE mamo_scr SET nador = CASE WHEN vysledek_vys IN (1,2) THEN 'NEGATIVNI' WHEN vysledek_vys IN (3,4) THEN 'BENIGNI' WHEN vysledek_vys >= 5 THEN 'MALIGNI' ELSE 'NEZNAMO' END; Daniel Klimeš, Databázové systémy a SQL

Funkce bez argumentu - cvičení Vytvořte postupně funkci, v rámci které provedete: Všechny předchozí dotazy pro update a delete zaobalte do funkce Daniel Klimeš, Databázové systémy a SQL

Funkce bez argumentu - cvičení Vytvořte postupně funkci, v rámci které provedete: Všechny předchozí dotazy pro update a delete zaobalte do funkce CREATE OR REPLACE FUNCTION mamo_scr() RETURNS VOID AS $$ BEGIN Zde vložte všechny předchozí dotazy pro update a delete (Pokud budete spouštět funkci opakovaně, musíte zajistit, aby se vám data neduplikovala, proto musíte do funkce vložit dotaz pro vymazání všech dat!!) END; $$ LANGUAGE PLPGSQL; SELECT mamo_scr(); Daniel Klimeš, Databázové systémy a SQL

Funkce mamo_scr() CREATE OR REPLACE FUNCTION mamo_scr() RETURNS VOID AS $$ BEGIN DELETE FROM mamo_scr; COPY mamo_scr (id_pacientky, datum_narozeni, kraj, metoda, datum_vys, výsledek_vys) FROM '/home/kratochvilova/vyuka/mamo_scr.csv‚ CSV delimiter ';' header null ''; DELETE FROM mamo_scr WHERE datum_narozeni IS NULL OR datum_vys IS NULL OR vysledek_vys IS NULL; DELETE FROM mamo_scr WHERE datum_narozeni > datum_vys OR datum_vys > CURRENT_DATE OR datum_narozeni > CURRENT_DATE; UPDATE mamo_scr SET kraj = '999' WHERE kraj IS NULL; UPDATE mamo_scr SET metoda = NULL WHERE metoda <1 OR metoda > 9; UPDATE mamo_scr SET vysledek_vys = NULL WHERE vysledek_vys <1 OR vysledek_vys > 10; UPDATE mamo_scr SET vek=vek_roky(datum_narozeni); UPDATE mamo_scr SET vek_kategorie = CASE WHEN vek < 45 THEN '0 - 44‚ WHEN vek < 70 THEN '45 - 69‚ ELSE '70 a starší' END; UPDATE mamo_scr SET nador = CASE WHEN vysledek_vys IN (1,2) THEN 'NEGATIVNI‚ WHEN vysledek_vys IN (3,4) THEN 'BENIGNI‚ WHEN vysledek_vys >= 5 THEN 'MALIGNI‚ ELSE 'NEZNAMO' END; END; $$ LANGUAGE PLPGSQL; Daniel Klimeš, Databázové systémy a SQL