Databázové systémy. Tomáš Skopal. * embedded SQL * externí aplikace. - Databázové aplikace

Podobné dokumenty
Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června krovacek@students.zcu.cz

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

Informační systémy 2008/2009. Radim Farana. Obsah. Skripty a dávky. Nastavení aktuální databáze. USE DatabaseName

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Databázové systémy úvod

4. lekce Přístup k databázi z vyššího programovacího jazyka

Databáze 2011/2012 T-SQL - kurzory, funkce. RNDr.David Hoksza, Ph.D.

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

10. Architektura klient/server a třívrstvá architektura

10. Architektura klient/server a třívrstvá architektura

C# - Databáze úvod, ADO.NET. Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí

Distanční opora předmětu: Databázové systémy Tématický blok č. 8: Transact SQL Autor: RNDr. Jan Lánský, Ph.D.

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23

SQL - trigger, Databázové modelování

Kód v databázi. RNDr. Ondřej Zýka

Použití databází na Webu

Stručný obsah. část III Aktualizace dat Kapitola 10: Aktualizace databáze 257 Kapitola 11: Integrita dat 275 Kapitola 12: Zpracování transakcí 307

Databáze II. 1. přednáška. Helena Palovská

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

Semináˇr Java X JDBC Semináˇr Java X p.1/25

SQL v14. 4D Developer konference. 4D Developer conference 2015 Prague, CZ Celebrating 30 years

Databázové a informační systémy

KAPITOLA 1 Představení platformy Microsoft SQL Server 2008

Databázové a informační systémy Jana Šarmanová

Embedded SQL Dotazovací Jazyky I. Bc. CHOMUT Miroslav Bc. VODOLÁN Miroslav

Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

Fyzické uložení dat a indexy

Ukázka knihy z internetového knihkupectví

Jazyk SQL databáze SQLite. připravil ing. petr polách

Stěhování aplikací. Michal Tomek, Sales Manager

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Text úlohy. Systémový katalog (DICTIONARY):

Programování v jazyku C# II. 5.kapitola

Jazyk PL/SQL Úvod, blok

TÉMATICKÝ OKRUH TZD, DIS a TIS

Databáze 2013/2014. Konceptuální model DB. RNDr. David Hoksza, Ph.D.

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Embedded SQL v C/C++ úvod. Administrace Oracle Kateřina Opočenská

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

O Apache Derby detailněji. Hynek Mlnařík

Databázové systémy I

Optimalizace dotazů a databázové transakce v Oracle

Databáze SQL SELECT. David Hoksza

Michal Krátký, Miroslav Beneš

Tvorba informačních systémů

Typ 2 - připojení prostřednictvím kódu nativního klienta pro přístup k síti

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3.

Programování a implementace Microsoft SQL Server 2014 databází

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

Databázové systémy. Cvičení 6: SQL

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

DATABÁZOVÉ A INFORMAČNÍ SYSTÉMY

4IT218 Databáze. 4IT218 Databáze

Databáze I. 1. přednáška. Helena Palovská

SQL. strukturovaný dotazovací jazyk. Structured Query Language (SQL)

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

Seznámení s knihovnou ADO.NET

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

1 Úvod. J. Zendulka: Databázové systémy - 1 Úvod 1

Embedded SQL v C/C++ III - pole, struktury. Jindřich Vodrážka

J. Zendulka: Databázové systémy - 1 Úvod Intuitivní vymezení pojmu databáze

Databázové systémy. Dotazovací jazyk SQL - III

Lekce 6 - Správa prostorových dat

Datová vrstva informačního systému. Miroslav Beneš

Datová vrstva informačního systému. Java Database Connectivity JDBC. Obsah přednášky JDBC. Datová vrstva informačního systému

FIREBIRD relační databázový systém. Tomáš Svoboda

12. Postrelační databázové systémy

Databáze II. 2. přednáška. Helena Palovská

:20 1/13 Techniky T-SQL

Úvod do Entity Frameworku

Deklarativní IO shrnutí minulé přednášky

Databázové systémy a SQL

SYBASE ADAPTIVE SERVER JAVA V DATABÁZI

Semestrální práce z DAS2 a WWW

InterSystems Caché Post-Relational Database

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

RNDr. Michal Kopecký, Ph.D. Department of Software Engineering, Faculty of Mathematics and Physics, Charles University in Prague

12. Postrelační databázové systémy

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

DATABÁZE A INFORMAČNÍ SYSTÉMY

Jazyk SQL 3 - DML, DDL, TCL, DCL

Úvod do databázových systémů

Zranitelnost databáze a ochrana vašich citlivých dat. Michal Lukanič, Database Specialist

Nové jazykové brány do Caché. Daniel Kutáč

Kapitola 4: SQL. Základní struktura

Obsah. Verze SQL Serveru

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

ADO.NET Objekt Command (online scenář)

Databázové systémy úvod

Databázové systémy úvod

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

Fakulta elektrotechniky a informatiky Databázové systémy 2. Leden 2010 souhrn. Červené dobře (nejspíš), modré možná

Jazyk C# - přístup k datům

Operátory ROLLUP a CUBE

Transkript:

Databázové systémy Tomáš Skopal - Databázové aplikace * embedded SQL * externí aplikace

Osnova přednášky vnitřní programovací konstrukce (Embedded SQL) uložené procedury kurzory triggery vnější programování (přes rozhraní/knihovny) rozhraní ODBC, JDBC, knihovna ADO.NET rozhraní podporující objektově-relační mapování Microsoft ADO Java Hibernate

Programování v Embedded SQL procedurální rozšíření SQL, std. SQL je podjazyk (proto Embedded - vnořené) SQL server: Transact SQL (T-SQL) Oracle: PL/SQL přínosy řídící konstrukce (nelze skriptovat), if-then, for/while cykly kurzory (podpora sekvenčního průchodu přes řádky tabulky) menší komunikační režie (kód uložen na serveru, narozdíl od skriptování) zobecnění integritních omezení triggery vyšší bezpečnost kód na serveru může mít vyšší práva (skripty ne) nevýhody aplikace nepřenositelná mezi různými DB platformami standardizace až v rámci SQL 1999 ale nikdo nedodržuje

Struktura (SQL Server) DECLARE sekce BEGIN... END Např.: DECLARE @prum_vek FLOAT BEGIN SELECT @prum_vek = AVG(vek) FROM Zamestnanec END

Uložené procedury (SQL Server) CREATE PROCEDURE jmproc [; číslo] [deklarace_parametru [, ]] [WITH RECOMPILE] AS příkazy [;] Deklarace parametru @jméno typ [= výraz] [OUT[PUT]] OUT[PUT] parametr je výstupní číslo umožňuje vytvoření více verzí stejné procedury Volání procedury EXEC[UTE] jmproc [výraz [, ]] Parametry se předávají podle pořadí EXEC[UTE] jmproc [@jméno=výraz [, ]] Parametry se předávají podle jména

Procedury, příklad CREATE PROCEDURE Platba @ucetzdroj INTEGER, @ucetcil INTEGER, @castka INTEGER = 0 AS BEGIN UPDATE Accounts SET zustatek = zustatek - @castka END WHERE ucet=@ucetzdroj; UPDATE Accounts SET zustatek = zustatek + @castka WHERE ucet=@ucetcil; EXEC Platba 21-87526287/0300, 78-9876287/0800, 25000;

Kurzory (SQL Server) Deklarace C [SCROLL] CURSOR FOR SELECT ; Získání dat FETCH {NEXT PRIOR ABSOLUTE n RELATIVE n LAST FIRST} FROM C [INTO @proměnná [, ]] Pokud kurzor není deklarovaný s klíčovým slovem SCROLL, je možné použít jen NEXT

Kurzory, příklad (placení daní) DECLARE Cur CURSOR FOR SELECT * FROM Accounts; BEGIN OPEN Cur DECLARE @acc int, @zus int; FETCH NEXT FROM Cur INTO @acc, @zus; WHILE @@FETCH_STATUS=0 BEGIN EXEC Platba(@acc, CU_URAD, @zus*0.01) FETCH NEXT FROM Cur; END; CLOSE Cur; DEALLOCATE Cur; END

Triggery DML triggery událostí na tabulce/databázi spouštěná uložená procedura rozšíření funkcionality integritních omezení inserted, deleted logické tabulky CREATE TRIGGER trigger_name ON { table view } [ WITH ENCRYPTION ] { FOR AFTER INSTEAD OF } { [ INSERT ] [, ] [ UPDATE ] [, ] [ DELETE ] } [ WITH APPEND ] AS [{IF UPDATE ( column ) [{ AND OR } UPDATE ( column ) ] IF ( COLUMNS_UPDATED ( bitwise_operator updated_bitmask )}] sql_statement [...]

DML - Triggery (příklad) CREATE TRIGGER LowCredit ON Purchasing.PurchaseOrderHeader AFTER INSERT AS DECLARE @creditrating tinyint, @vendorid int SELECT @creditrating = v.creditrating, @vendorid = p.vendorid FROM Purchasing.PurchaseOrderHeader p INNER JOIN inserted i ON p.purchaseorderid = i.purchaseorderid JOIN Purchasing.Vendor v on v.vendorid = i.vendorid IF @creditrating = 5 BEGIN RAISERROR ('This vendor''s credit rating is too low to accept new purchase orders.', 16, 1) ROLLBACK TRANSACTION END

Triggery DDL triggery CREATE TRIGGER trigger_name ON { ALL SERVER DATABASE } [ WITH <ddl_trigger_option> [,...n ] ] { FOR AFTER } { event_type event_group } [,...n ] AS {sql_statement [ ; ] [,...n ] EXTERNAL NAME < method specifier > [ ; ] } <ddl_trigger_option> ::= [ ENCRYPTION ] [ EXECUTE AS Clause ] <method_specifier> ::= assembly_name.class_name.method_name

DDL - Triggery (příklad) CREATE TRIGGER safety ON DATABASE FOR DROP_SYNONYM AS RAISERROR ('You must disable Trigger "safety" to drop synonyms!',10, 1) ROLLBACK

Externí programování DB aplikace externí/samostatné aplikace (tj. mimo aplikační framework DBMS) mohou využívat standardizovaná rozhraní ODBC (Open DataBase Connectivity) 1992, Microsoft JDBC (Java DataBase Connectivity) přes ODBC (většinou), nebo nativní driver/protokol, síťový driver knihovna ADO.NET (Active Data Objects.NET) nad OLE DB, ODBC, případně přímo drivery MS SQL Server, Oracle větší komfort, rychlost a spolehlivost (než ODBC) polonativní databázové objektové programování pomocí objektově-relačního mapování mapování Java Hibernate totéž pro Microsoft.NET

ODBC, konfigurace ve Windows

ODBC, aplikace (C#) using System.Data.Odbc; OdbcConnection DbConnection = new OdbcConnection("DRIVER={SQL Server};SERVER=MyServer;Trusted_connection=yes;DATABASE=northwind; "); DbConnection.Open(); OdbcCommand DbCommand = DbConnection.CreateCommand(); DbCommand.CommandText = "SELECT * FROM Employee"; OdbcDataReader DbReader = DbCommand.ExecuteReader(); int fcount = DbReader.FieldCount; while( DbReader.Read()) { Console.Write( ":" ); for (int i = 0; i < fcount; i++) { String col = DbReader.GetString(i); Console.Write(col + ":"); } Console.WriteLine(); } DbReader.Close(); DbCommand.Dispose(); DbConnection.Close();

JDBC, aplikace (Java) Class.forName( "com.somejdbcvendor.theirjdbcdriver" ); Connection conn = DriverManager.getConnection( "jdbc:somejdbcvendor:other data needed by some jdbc vendor", "mylogin", "mypassword" ); Statement stmt = conn.createstatement(); try { stmt.executeupdate( "INSERT INTO MyTable( name ) VALUES ( 'my name' ) " ); } finally { stmt.close(); }

ADO.NET, aplikace (C#) přes ODBC: SqlConnection pripojeni = new SqlConnection("server=localhost;database=mojeDatabaze;uid=sa;pwd="); přes OLE DB (sqloledb = SQL Server, msdaora = Oracle): OleDbConnection pripojeni = new OleDbConnection ("provider=sqloledb;server=localhost;database="+"mojedatabaze;uid=sa;pwd="); pripojeni.open(); SqlCommand command = new SqlCommand("SELECT * FROM tabulka", pripojeni); command.executenonquery();

Framework Java Hibernate poskytuje perzistenci klasickým Java objektům, tj. poskytuje opravdové objektové databázové programování nutná definice mapování mezi objektem a jeho perzistentní verzí v DB (xml soubor pro každou třídu) zjednodušení: manager paměti organizuje objekty rovnou v databázi (+používá hlavní paměť jako cache, když se k objektu přistupuje) HQL (Hibernate query language) objektový dotazovací jazyk Hibernate překládá HQL do SQL

Ekvivalenty Java Hibernate pro Microsoft.NET Framework ADO.NET Entity Framework NHibernate Persistor.NET a další...

Relační vs. objektový přístup mapování objektů do tabulek přináší režii, kterou uživatel nevidí (což může být dobře i špatně) realiazce objektového DBMS pomocí relačního DBMS relační DBMS jsou vhodné pro datově intenzivní aplikace objektové DBMS by byly neefektivní díky vytváření spousty malých objektů, se kterými se manipuluje uniformně, tj. není třeba je jednotlivě zhmotňovat do objektů objektové DBMS jsou vhodné pro složité Enterprise aplikace, kde DB výkon není na prvním místě relační DBMS zde poskytují nízkoúrovňový přístup k datům, tj. neodstíní programátora, který

Kurs Databázové aplikace DBI026 zaměření Oracle a MS SQL Server (alternativně) embedded SQL, administrace externí aplikace indexování, optimalizace transakce zabezpečení viz http://www.ms.mff.cuni.cz/~kopecky/vyuka/dbapl/