Databázové systémy a SQL

Slides:



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

Základy jazyka SQL Jan Tichava
Vstupy a výstupy v JavaScriptu Vstup: použitím metody prompt objektu window čtením hodnot z položek formuláře Výstup : použitím metody alert objektu window.
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.
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
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
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.
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.
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.
Procedury a funkce Základní charakteristika a použití v programu.
Databázové systémy II Přednáška č. 4, 5 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
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 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 I Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Databázové systémy Přednáška č. 6.
SQL – základní pojmy Ing. Roman Danel, Ph.D.
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.
Databázové systémy II Přednáška V Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Pascal - cykly.
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.
UNIX Shell skripty Roman Danel VŠB TU Ostrava, Hornicko – geologická fakulta.
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ů.
Typy cyklů Do...Loop For...Next For Each...Next.
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 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.
Vnořené SQL (embedded SQL) Dotazovací jazyky I
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.
1 Syntaxe a sémantika aktivních databází Databázové triggery Aktivní pravidla 10. listopadu 2004 Zuzana Reitermanová & Vojtěch Hlaveš.
Příkazy jazyka SQL ve VFP a na SQL Serveru
Dynamická webová aplikace Autor:Ondřej Soukup Třída:I3.
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.
Autor, Název akce Databázové systémy a SQL Daniel Klimeš 1.
Databázové systémy a SQL
Roman Danel Institut ekonomiky a systémů řízení 2016
Databázové systémy a SQL
Dotazovací jazyk SQL - III
Databázové systémy a SQL
Databázové systémy I Přednáška 11 Databázové systémy 1 – KIT/IDAS1
Databázové systémy a SQL
Databázové systémy a SQL
Databázové systémy a SQL
Opakování základních příkazů a syntaxí v programovacím jazyce Pascal
Databázové systémy a SQL
Přednáška 9 Triggery.
Přednáška 10 Uložené procedury.
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 7 Daniel Klimeš

Seskupení SQL příkazů SQL skripty Procedury a funkce SQL skripty Skripty = seřazený seznam SQL DDL/DML příkazů CREATE, DROP, INSERT, UPDATE, DELETE Příkazy odděleny středníkem Vytváření databázové struktury Jednorázové vkládání dat Transformace dat ORACLE možnost tvořit jednoduché reportovací sestavy příkaz SELECT možnost použití proměnných skript se spouští v sqlplus aplikaci POSTGRESQL Skripty spustitelné stejně jako příkazy v pgAdmin Nebo v aplikaci psql Daniel Klimeš, Databázové systémy a SQL

Procedury a funkce Objekty databáze, stejně jako tabulky Vytvoření příkazem CREATE, zrušení příkazem DROP Možné sdílení mezi uživateli, lze definovat oprávnění na spuštění Skládá se z DML SQL příkazů Konstrukce jazyka PL/SQL (ORACLE) – Procedural Language Procedura x Funkce Vstupní a výstupní parametry Lze spustit pouze v anonymním bloku nebo z jiné procedury 1návratová hodnota Použití v SELECT příkazu stejně jako např. funkce ROUND, SUBSTR, … Daniel Klimeš, Databázové systémy a SQL

Základy PL/SQL Standardní procedurální programovací jazyk, obdoba C, Java, Pascal Příkazy se vykonávají postupně + programovací smyčky Základní prvky Bloky kódu ohraničeny BEGIN END Definice proměnných Operátor přiřazení hodnoty do proměnné Podmíněný výraz Programovací smyčka Volání jiných procedur či funkcí Prvky odděleny středníkem Daniel Klimeš, Databázové systémy a SQL

PL/SQL anonymní blok Ad-hoc spouštěný blok PL/SQL kódu Neukládá se, není součástí databáze Připomíná SQL skript Obsahuje PL/SQL konstrukce; Ohraničen BEGIN END Příklad: Id pacientů s chybným datem narození zapiš do pomocné tabulky BEGIN FOR rs IN (SELECT * FROM patients) LOOP IF (rs.date_of_birth > SYSDATE) THEN INSERT INTO test_tab (patient_id) values (rs.patient_id); END IF; END LOOP; END; Daniel Klimeš, Databázové systémy a SQL

PL/SQL - FOR BEGIN – povinné otevření bloku FOR rs IN (SELECT * FROM patients) LOOP IF (rs.date_of_birth > SYSDATE) THEN INSERT INTO test_tab (patient_id) values (rs.patient_id); END IF; -- ukončení podmíněného výrazu END LOOP; -- ukončení smyčky END; – ukončení bloku FOR rs IN (SELECT * FROM patients) LOOP příkaz smyčky proměnná rs (kurzor, „vektor“) postupně nabývá hodnot řádků, které vrací SELECT příkaz (jednotlivé pacienty) proměnná rs se nemusí deklarovat Pro každý vrácený řádek SELECT příkazu se provedou příkazy uzavřené mezi LOOP a END LOOP Smyčka končí po zpracování všech záznamů SELECTU Pokud SELECT nevrací žádné řádky, blok smyčky se přeskočí Daniel Klimeš, Databázové systémy a SQL

PL/SQL - IF BEGIN – povinné otevření bloku FOR rs IN (SELECT * FROM patients) LOOP IF (rs.date_of_birth > SYSDATE) THEN INSERT INTO test_tab (patient_id) values (rs.patient_id); END IF; -- ukončení podmíněného výrazu END LOOP; -- ukončení smyčky END; – ukončení bloku IF (rs.date_of_birth > SYSDATE) THEN podmíněný výraz pokud je splněna podmínka provedou se příkazy mezi THEN a END IF Pokud ne pokračuje se až za END IF Daniel Klimeš, Databázové systémy a SQL

Proměnná v PL/SQL DECLARE i NUMBER; BEGIN i:=0; DELETE FROM TEST_TAB; FOR rs IN (SELECT * FROM patients) LOOP IF (rs.date_of_birth > SYSDATE) THEN INSERT INTO test_tab (patient_id) values (rs.patient_id); i:=i+1; END IF; END LOOP; DBMS_OUTPUT.PUT_LINE('Celkem ' || i); END; DECLARE – zahajuje blok definice proměnných, každá proměnná musí být deklarovaná na začátku kódu Operátor přiřazení – := DBMS_OUTPUT.PUT_LINE('Celkem ' || i); - výpis ladící informace Daniel Klimeš, Databázové systémy a SQL

Uložená procedura/funkce CREATE OR REPLACE PROCEDURE jmeno_proc (parametry) IS i NUMBER; -- deklarace proměných BEGIN –tělo procedury END; CREATE OR REPLACE FUNCTION jmeno_funkce (parametry) RETURN NUMBER IS i NUMBER; BEGIN --tělo funkce END; Parametry – (jmeno_parametru datovy_typ ) odděleno čárkami Např.: (datum DATE, cislo NUMBER) Daniel Klimeš, Databázové systémy a SQL

Procedura – vytvoření časové osy Přehled počtu zařazených pacientů po měsících: CREATE VIEW mesicni_pocty AS SELECT TO_CHAR(date_of_enrollment, ‘yyyy-mm’) mesic, COUNT(*) pocet FROM patient_study WHERE study_id = 43 GROUP BY TO_CHAR(date_of_enrollment, ‘yyyy-mm’) ORDER BY 1 Chybí některé měsíce Vytvoření časové osy v pomocné tabulce Tabulka KALENDAR, její naplnění procedurou PROC_KALENDAR Daniel Klimeš, Databázové systémy a SQL

PL/SQL procedura Spuštění: begin CREATE OR REPLACE PROCEDURE proc_kalendar (od DATE, mesicu NUMBER) IS i NUMBER; BEGIN DELETE FROM kalendar; FOR i IN 0..mesicu-1 LOOP insert into kalendar (mesic) values (to_char(add_months(od, i), 'yyyy-mm')); END LOOP; END proc_kalendar; Spuštění: begin proc_kalendar(to_date('01.01.2010', 'dd.mm.yyyy'), 12); end; Doplněný výpis: SELECT k.mesic, NVL(mp.pocet,0) pocet FROM kalendar k LEFT JOIN mesicni_pocty mp ON k.mesic = mp.mesic Daniel Klimeš, Databázové systémy a SQL

Příklad PL/SQL funkce CREATE OR REPLACE FUNCTION age (datum1 DATE, datum2 DATE) RETURN NUMBER IS roku NUMBER; BEGIN roku := ABS(TRUNC(MONTHS_BETWEEN(datum1, datum2) / 12)); RETURN roku; END; Spuštění: SELECT age(SYSDATE, date_of_birth) FROM patients Daniel Klimeš, Databázové systémy a SQL

Funkce v POSTGRESQL – jazyk plpgsql CREATE OR REPLACE FUNCTION f_insert (NUMERIC) RETURNS NUMERIC AS $$ BEGIN FOR i IN 1..$1 LOOP INSERT INTO dk_insert (a) VALUES ((RANDOM() * 100) :: NUMERIC); END LOOP; RETURN $1; END; $$ LANGUAGE PLPGSQL; CREATE TABLE dk_insert (a NUMERIC); SELECT f_insert(100) FROM GENERATE_SERIES(1,1); Daniel Klimeš, Databázové systémy a SQL