Roman Danel Institut ekonomiky a systémů řízení 2016

Slides:



Advertisements
Podobné prezentace
Databázové systémy Zabezpečení DBS. Cíle, které je třeba vzít v úvahu při návrhu databázové aplikace z pohledu bezpečnosti: •Důvěrnost - informace by.
Advertisements

Přístup k databázím z WWW
Základy jazyka SQL Jan Tichava
Ladislav Hofman, Jan Slavík TUL Předmět databázové systémy
Zpracování SQL Lubomír Andrle 5. přednáška
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.
Návrh a tvorba WWW Přednáška 6 PHP II – Databáze.
 Informací se data a vztahy mezi nimi stávají vhodnou interpretací pro uživatele, která odhaluje uspořádání, vztahy, tendence a trendy  Existuje celá.
Přednáška č. 5 Proces návrhu databáze
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.
Informatika pro ekonomy II přednáška 11
Databázové systémy II Přednáška č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Fakulta elektrotechniky a informatiky
Databázové systémy II Přednáška č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Fakulta elektrotechniky a informatiky
Databázové systémy II Přednáška č. 5 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
PROGRAMOVACÍ JAZYKY (c) Tralvex Yeap. All Rights Reserved.
Temporální databáze a TSQL
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.
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.
Databáze Jiří Kalousek.
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.
Caché Security. Jak vypadá zabezpečení dnes Jak bude vypadat a co by Caché měla umět v budoucnu Včera, dnes a zítra.
Databáze výhody a nevýhody Ing. Emilie Šeptáková
Databázové systémy II Přednáška č. 8 – Pohledy (Views)
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.
Vypracoval: Ondřej Dvorský Třída: VIII.A
Principals, Securables, Schema Vít Ochozka. Entity databáze - zdroje Securables –Entity databáze (zdroje), ke kterým SQL reguluje přístup podle práv –Hierachie.
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.
Administrace Oracle Práva a role, audit Filip Řepka 2010.
Ing. Tomáš Váňa, Ing. Jiří Zechmeister
Databázové systémy II Přednáška V Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
Objektový přístup v databázích Objektová identita (místo primárních klíčů) –Reference (místo cizích klíčů) Objektový přístup k návrhu – objekty stejného.
Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy II Přednáška č. 9. Transakce je logická jednotka práce sestávající z jednoho nebo více SQL příkazů, které jsou atomické z hlediska.
Transakční zpracování v SQL P. Částek. Transakce Transakce = logická jednotka práce Podaří-li se všechny části transakce, potvrdíme je. COMMIT Jestliže.
Aplikační role Vít Ochozka. K čemu nám slouží Omezit přístup k databázi AKORD jen prostřednictvím konkrétní aplikace Jiné aplikace – MS excel, MS access,
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 Zabezpečení DBS. Cíle, které je třeba vzít v úvahu při návrhu databázové aplikace z pohledu bezpečnosti: Důvěrnost - informace by neměly.
Vnořené SQL (embedded SQL) Dotazovací jazyky I
Administrace Oracle Paralelní zpracování.
Zanořené SQL a dynamické SQL
Databázové aplikace v Delphi
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.
Dynamické SQL (dynamic SQL)‏ Dotazovací jazyky Šárka Hlušičková.
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
Databázové systémy přednáška 6 – Indexy
Databázové systémy přednáška 8 – Transakce
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 přednáška 3 – CRUD
Databázové systémy a SQL
Databázové systémy a SQL
Přednáška 9 Triggery.
Vytvořil: Robert Döring
Databázové systémy a SQL
Transkript prezentace:

Roman Danel Institut ekonomiky a systémů řízení 2016 Databázové systémy přednáška 7 –Triggery, pohledy, uložené procedury, kurzory Roman Danel Institut ekonomiky a systémů řízení 2016

Obsah Trigger Pohled (view) Uložená procedura Kurzor

Trigger Koncept IBM (1976) Pojmenovaný databázový objekt, který je aktivován, jestliže nastane událost splňující podmínky jeho spuštění Událost: delete, update, insert…. Je součástí transakce!! Při operaci update lze specifikovat spuštění pro konkrétní sloupec

Trigger - syntax CREATE TRIGGER trigger_name ON table/view WITH option FOR AFTER/INSTEAD OF INSERT/UPDATE/DELETE [WITH APPEND] AS sql statements

DDL Trigger CREATE TRIGGER trigger_name ON DATABASE FOR DROP_TABLE AS

Použití triggerů Logování aktivity – auditní záznamy Kontrola integrity Kontrola dat Automatická aktualizace vypočítávaných hodnot

Triggery MS SQL Server Virtuální tabulky Inserted a Deleted Počet triggerů na tabulce není omezen 2 režimy spuštění AFTER INSTEAD OF

Zdroj: www.dotnetinterviewquestions.in

PostgreSQL Trigger per-row – spouští se pro každý řádek dotazu Trigger per-statement

Triggery - Oracle Zdroj: http://docs.oracle.com/

Triggery - Oracle

Užití triggeru - příklad

Užití triggeru - příklad

Triggery Pozor na rekurzi – lze zakázat SET RECURSIVE_TRIGGERS=OFF NESTED_LEVEL – nepřímá rekurze ON/OFF DISABLE TRIGGERS – vypnutí vykonávání DISABLE TRIGGER ALL ON DATABASE DISABLE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory; Systémové tabulky: sys.triggers Sys.objects – DDL trigger Sys.server_triggers

View - pohled Virtuální tabulka definovaná jako výsledek dotazu (nad jednou nebo více tabulkami) Chová se jako fyzická tabulka Omezená možnost aktualizace dat Význam – opakující se dotazy, zjednodušení práce

View create view vwPracovnici as select * from pracovnici; Drop view vwPracovnici;

Uložené procedury a funkce (Stored procedures and Functions)

Uložená procedura Pojmenovaný databázový objekt, který obsahuje program v jazyce SQL Skript – dávka – uložená přímo v databázi Může je spouštět jen autorizovaný uživatel Rychlejší než online dotazy (exekuční plán je připraven při prvním spuštění) Přenositelnost aplikací (procedury pro každý systém)

Jazyk v procedurách Microsoft SQL Server – T-SQL Oracle: PL/SQL SQL dotazy, cykly, podmínky Při volání lze předat parametry Nelze interakci s uživatelem

Terminologie Funkce – funkcionální programování Procedura – strukturované (procedurální) programování Metoda – objektové programování

Uložená procedura - syntax USE AdventureWorks; GO CREATE PROCEDURE dbo.sp_who AS SELECT FirstName, LastName FROM Person.Contact; GO EXEC sp_who; EXEC dbo.sp_who; GO DROP PROCEDURE dbo.sp_who;

Syntax CREATE PROCEDURE proc_name [@paramater_1 data_type [=default_value], ….] [OUT/OUTPUT] [WITH procedure_option] [FOR REPLICATION] AS Begin sql statements end

Procedure options ENCRYPTION RECOMPILE EXECUTE_AS_clause

Spuštění procedury – MS SQL Server EXEC name EXEC owner.name EXEC xp_name systémová procedura EXEC sys.xp_subdirs 'c:\';

Oprávnění GRANT EXECUTE ON proc_name TO database

Funkce Jako procedura, vrací však hodnotu SCALAR FUNCTION TABLE-VALUED FUNCTION Table value – speciální typ proměnné, řádky tabulky, např. výsledek SELECT dotazu

Scalar Funtion CREATE FUNCTION function_name [@parameter AS data_type, … ] RETURNS return_data_type [WITH function_options] AS BEGIN statements RETURN scalar_expression END

Table-valued function CREATE FUNCTION function_name [@parameter AS data_type, … ] RETURNS @ret_value TABLE table_type_definition [WITH function_options] AS BEGIN statements RETURN END

Procedury v MySql Až od verze 5.x create procedure sp_VratSoftware()  begin    select * from software;  end  call sp_VratSoftware()  http://www.linuxsoft.cz/article.php?id_article=1003

Procedury v Oracle PL/SQL http://www.oracle.com/

Kurzor

SQL – „množiny“ Kurzory – procedurální přístup Pracují s daty jako s tabulkou, kde lze postupně procházet řádky (obdoba filozofie ISAM databází z dob dBase – DBF)

SQL – lokální tabulky Local tmp table Global tmp table CREATE TABLE #LocalTab ( column definition ) Global tmp table CREATE TABLE ##LocalTab ( column definition ) Jsou umístěny do tempdb Zruší se, jakmile se odpojí relace SELECT * INTO tab_name1 FROM tab_name2

Typy kurzorových tabulek FORWARD_ONLY – posun po řádcích pouze vpřed, nevyžaduje přístup do tempdb, default DYNAMIC STATIC KEYSET

Syntaxe DECLARE cur_name CURSOR FORWARD_ONLY [LOCAL/GLOBAL] FOR SELECT col1, col2 FROM table_name OPEN cur_name [FOR READ_ONLY/UPDATE OF col] FETCH cur_name INTO @variable While (@@FETCH_STATUS=0) BEGIN statements FETCH NEXT cur_name into @variable END CLOSE cur_name DEALLOCATE cur_name -- zruší paměť přiřazenou kurz. tab.

Doporučené použití Pokud to jde, vyhnout se použití kurzoru Pouze pro administraci nebo opravu dat

Systémové procedury pro práci s kurzory – MS SQL Server Sp_cursor_list – vrací seznam kurzorů Sp_describe_cursor Sp_describe_cursor_columns Sp_describe_cursor_tables

Práce s chybami RAISERROR(Text, Závažnost, Stav) [WITH LOG] @@ERROR <16 Information = 16 Warning > 16 Error > 20 Fatal error (ukončení dávky)

Práce s chybami RAISERROR Stav = 127 -> nastaví errorlevel pro operační systém na kód chyby @@ERROR Využití – pro řádkového klienta iSQL, oSQL