Jazyk SQL 3 - DML, DDL, TCL, DCL

Podobné dokumenty
Transformace konceptuálního modelu na relační

Dotazy v SQL. Výraz relační algebry R1( )[A1,A2,...,Aj] lze zapsat takto: SELECT A1,A2,...,Aj FROM R1 WHERE. Výraz (R1, R2... Rk)( )[A1,A2,...

Databáze I. Přednáška 4

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

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

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

Jazyk SQL slajdy k přednášce NDBI001

Jazyk SQL 1. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

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

6. SQL složitější dotazy, QBE

Jazyk SQL. Jaroslav Pokorný MFF UK, Praha J. Pokorný 1

Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hoksza, Ph.D.

Databázové systémy BIK-DBS

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

Databázové systémy úvod

Konceptuální modelování a SQL

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

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

Databáze SQL SELECT. David Hoksza

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

Jazyk SQL 2. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c M.Valenta, 2011 BI-DBS, ZS 2011/12

- sloupcové integritní omezení

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

Databázové systémy Cvičení 5.2

DBS Transformace konceptuálního schématu na

Integritní omezení (IO)

RELAČNÍ DATABÁZOVÉ SYSTÉMY

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

4IT218 Databáze. 4IT218 Databáze

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

Optimalizace dotazů a databázové transakce v Oracle

Databázové systémy I

1. Relační databázový model

Databázové systémy. Integritní omezení. Vilém Vychodil. V. Vychodil (KMI/DATA1, Přednáška 9) Integritní omezení Databázové systémy 1 / 33

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

Databáze I. Přednáška 6

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

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

Databáze I. Přednáška 7

Structured Query Language SQL

Administrace Oracle. Práva a role, audit

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

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

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

Materiál ke cvičením - SQL

Kapitola 4: SQL. Základní struktura

Dotazovací jazyk SQL I

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

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

Kapitola 6: Omezení integrity. Omezení domény

Databázové systémy a SQL

Práva a role. Martin Polák. NDBI013 Administrace Oracle

Materializované pohledy

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

DUM 12 téma: Příkazy pro tvorbu databáze

PRŮBĚHOVÝ TEST Z PŘEDNÁŠEK

Dotazovací jazyk SQL I

Databázové systémy BIK-DBS

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

Administrace Oracle Práva a role, audit. Kukhar Maria

2. blok část A Jazyk SQL, datové typy

DBS relační DB model, relační algebra

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):

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

Co bude výsledkem mého SELECTu? RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

8.2 Používání a tvorba databází

Zápisování dat do databáze

PG 9.5 novinky ve vývoji aplikací

KIV/ZIS cvičení 6. Tomáš Potužák

Marian Kamenický. Syntea software group a.s. marian.kamenicky. MFFUK Praha 2012/13

DJ2 rekurze v SQL. slajdy k přednášce NDBI001. Jaroslav Pokorný

Oracle XML DB. Tomáš Nykodým

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

3. Jazyky relačních databázových systémů

Databázové systémy BIK-DBS

Co se stane po jeho vykonání? Vyberte libovolný počet možných odpovědí. Správná nemusí být žádná, ale také mohou být správné všechny.

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

Databázové systémy I

Sada 1 - PHP. 14. Úvod do jazyka SQL

SQL - úvod. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, P edn. 6

Databázové systémy úvod

Audit DB. Referát. Vypracoval: Zdeněk Doležal MFF UK Praha 11/5/06

Souvislost E-R schématu s relačním

Databázové systémy a SQL

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

Transformace ER SQL. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, P edn. 9

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

A5M33IZS Informační a znalostní systémy. Relační databázová technologie

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

Operátory ROLLUP a CUBE

Databázové systémy I. 7. Přednáška

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

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

6. blok část B Vnořené dotazy

SQL - SELECT. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, P edn. 7

01. Kdy se začala formovat koncept relačních databází (Vznik relačního modelu, první definice SQL)? a) 1950 b) 1960 c) 1970 d) 1980

Jazyk PL/SQL Úvod, blok

Databázové systémy I. 3. přednáška

Transkript:

Jazyk SQL 3 - DML, DDL, TCL, DCL Michal Valenta Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2012/13 https://edux.fit.cvut.cz/courses/bi-dbs/ Michal Valenta (FIT ČVUT) Jazyk SQL 3 - DML, DDL, TCL, DCL BI-DBS, 2012 1 / 26

SQL DML příkazy INSERT, UPDATE, DELETE, MERGE transakční zpracování záleží na nastavení klienta (autocommit on off) předpokládejme autocommit off, potom: transakce je tvořena sekvencí DML a SELECT příkazů potvrzena příkazem COMMIT odvolána příkazem ROLLBACK ostatní session vidí v průběhu transakce staré hodnoty, dokud tato není potvrzena příkazy DDL nebo DCL provedou implicitní COMMIT systematický výklad transakčního zpracování bude podán v samostatné přednášce při zpracování DML příkazů si DBMS hlídá platnost integritních omezení Michal Valenta (FIT ČVUT) Jazyk SQL 3 - DML, DDL, TCL, DCL BI-DBS, 2012 3 / 26

Aktualizace v SQL příklady Smazání řádku / řádek DELETE FROM Filmy WHERE jmeno_f = Puška ; - - pozor na správně formulovanou podmínku zmněna hodnoty řádku / řádek UPDATE Zakaznici SET jmeno = Gotzová WHERE rod_c = 4655292130 ; - - pozor na správně formulovanou podmínku UPDATE Zákazníci SET jméno = Müller WHERE jméno = Muller ; Michal Valenta (FIT ČVUT) Jazyk SQL 3 - DML, DDL, TCL, DCL BI-DBS, 2012 4 / 26

UPDATE více řádek pomocí vnořeného dotazu Doplň k tabulce Zakaznici redundantní atribut pocet_pujcek a jednorázově dopočti jeho hodnoty. ALTER TABLE zakaznici Add Pocet_pujcek Number; - - přidáme sloupec to tabulky zákazníci UPDATE Zákazníci Z - - jednorázově do něj doplníme hodnoty SET Pocet_pujcek = (SELECT count(*) from Vypucky V WHERE V.rod_c = Z.rod_c); Pokud se databáze mění, je třeba udržovat tuto informaci konzistentní!!!. Lze toho dosáhnout například pomocí triggerů. Michal Valenta (FIT ČVUT) Jazyk SQL 3 - DML, DDL, TCL, DCL BI-DBS, 2012 5 / 26

INSERT Vložení jednoho řádku do tabulky Zakaznici. INSERT INTO Zakazníci (rod_c, jmeno) VALUES ( 4804230160, Novák ); Vložení více řádek vnořeným SELECTem CREATE TABLE Kolik_kopii - - nejprve vytvoříme tabulku (rod_c CHAR(10), pocet SMALLINT); INSERT INTO Kolik_kopii SELECT rod_c, COUNT(c_kopie) FROM Vypujcky GROUP BY rod_c; - -... a pak ji naplníme daty nebo celé v jednom příkazu: CREATE TABLE Kolik_kopii (rod_c CHAR(10), pocet SMALLINT) AS SELECT rod_c, COUNT(c_kopie) FROM Vypujcky GROUP BY rod_c; Michal Valenta (FIT ČVUT) Jazyk SQL 3 - DML, DDL, TCL, DCL BI-DBS, 2012 6 / 26

Pohledy - syntaxe, příklad Definice pohledu syntaxe CREATE VIEW jméno-pohledu [(v-jméno-atr[,v-jméno-atr]...)] AS dotaz WITH CHECK OPTION; Pohled obsahující pouze Pražáky CREATE VIEW Prazaci AS SELECT c_ct, jmeno, adresa FROM Zakaznici WHERE adresa LIKE %PRAHA% ; DROP VIEW Prazaci; CREATE VIEW Dluznici (rod_c, pocet_vypujcek) AS SELECT rod_c, COUNT(c_kopie) FROM Vypucky GROUP BY rod_c; SELECT * from Dluznici where pocet_vypujcek > 5; Michal Valenta (FIT ČVUT) Jazyk SQL 3 - DML, DDL, TCL, DCL BI-DBS, 2012 8 / 26

Pohledy - charakteristika pohled je virtuální relace v datové slovníku je uložen ve formě SELECT příkazu, kterým je definován z hlediska dotazování je pohled zaměnitelný s tabulkou DML operace nad pohledy v omezené míře musí se jednat o tzv simple view (neobsahuje operace join, agregace, výrazy,...) DML nesmí být zakázany v jeho definici klauzule READ ONLY je doporučeníhodné používat klauzuli WITH CHECK OPTION DML nad tzv. complex views lze realizovat pomocí instead-of triggerů k čemu pohledy slouží: odstínění informací, které uživatel/role nemá vidět zpřehlednění složitých dotazů snazší vývoj aplikací pohledy nepřinášejí výkonové zrychlení k tomu lze použít tzv. materializované pohledy (MATERIALIZED VIEWS) Michal Valenta (FIT ČVUT) Jazyk SQL 3 - DML, DDL, TCL, DCL BI-DBS, 2012 9 / 26

Příkaz WITH - příklad Najdi seznam kin, ve kterých hrají všechny filmy s M. Brandem R1:=PROGRAM[NÁZEV_K] R2:=FILM(HEREC="BRANDO")[JMÉNO_F] R:=R1*R2 S:= R/ PROGRAM[NÁZEV_K, JMÉNP_F] T:=S[NÁZEV_K] U:=PROGRAM[NÁZEV_K] -T Michal Valenta (FIT ČVUT) Jazyk SQL 3 - DML, DDL, TCL, DCL BI-DBS, 2012 10 / 26

Příkaz WITH - příklad Najdi seznam kin, ve kterých hrají všechny filmy s M. Brandem With R1 As Select Nazev_k From PROGRAM, R2 As Select Jmeno_F From Film Where Herec= Brando, R As Select * From R1 Cross Join R2, S As (Select * From R) Except (Select Název_k, Jméno_f From Program), T As Select Distinct Nazev_k From S (Select Distinct Nazev_k From Program) Except (Select * From T); Michal Valenta (FIT ČVUT) Jazyk SQL 3 - DML, DDL, TCL, DCL BI-DBS, 2012 11 / 26

CREATE TABLE CREATE TABLE CREATE TABLE tabulka ( sloupec datovy_typ [io_sloupce [, io_sloupce...]],... [io_tabulky [, io_tabulky...]] ); CREATE TABLE VYPUJCKY ( c_kopie CHAR (3) NOT NULL, c_zak CHARACTER (6) NOT NULL, cena DECIMAL(5,2), rod_c CHARACTER (10) NOT NULL, datum_v DATE); Michal Valenta (FIT ČVUT) Jazyk SQL 3 - DML, DDL, TCL, DCL BI-DBS, 2012 12 / 26

ALTER TABLE, DROP TABLE ALTER TABLE ADD sloupec, DROP sloupec, ALTER sloupec, ADD CONSTRAINT io, DROP CONSTRAINT io ALTER TABLE KINA ADD pocet_mist INTEGER; DROP TABLE DROP TABLE tabulka [CASCADE CONSTRAINTS] DROP TABLE KINA CASCADE CONSTRAINTS; Michal Valenta (FIT ČVUT) Jazyk SQL 3 - DML, DDL, TCL, DCL BI-DBS, 2012 13 / 26

Integritní omezení v SQL IO sloupce: NOT NULL DEFAULT UNIQUE PRIMARY KEY REFERENCES CHECK IO tabulky - stejné jako IO sloupce (NOT NULL je speciálním případem CHECK) složené IO vždy na úrovni tabulky pojmenování IO není syntakticky nutné, ale vřele doporučované Michal Valenta (FIT ČVUT) Jazyk SQL 3 - DML, DDL, TCL, DCL BI-DBS, 2012 14 / 26

Příklad DDL s IO DROP TABLE KINA CASCADE CONSTRAINTS; CREATE TABLE KINA...... CREATE TABLE PŘESTAVENÍ (NAZEV_K Char_Varying(20) NOT NULL, JMENO_F Char_Varying(20) NOT NULL, DATUM date NOT NULL, CONSTRAINT PREDSTAVENI_PK PRIMARY KEY (NAZEV_K, JMENO_F) CONSTRAINT PREDSTVENI_KINA_FK FOREING KEY (NAZEV_K) REFERENCES KINA, CONSTRAINT PREDSTAVENI_FILMY_FK FOREING KEY (JMENO_F) REFERENCES FILMY); Michal Valenta (FIT ČVUT) Jazyk SQL 3 - DML, DDL, TCL, DCL BI-DBS, 2012 15 / 26

Referenční integrita a kaskádní DELETE / UPDATE Referenční integrita (cizí klíč) v SQL 4 možné způsoby reakce: [ CONSTRAINT constraint_name ] FOREIGN KEY ( column_name [,... ] ) REFERENCES reftable [ ( refcolumn [,... ] ) ] [ ON DELETE action ] [ ON UPDATE action ] action ::= [NO ACTION RESTRICT CASCADE SET NULL SET DEFAULT] CREATE TABLE order_items ( product_no integer REFERENCES products ON DELETE RESTRICT, order_id integer REFERENCES orders ON DELETE CASCADE, quantity integer, PRIMARY KEY (product_no, order_id)); Poznámka: implementace tohoto rysu nebývá kompletní. Michal Valenta (FIT ČVUT) Jazyk SQL 3 - DML, DDL, TCL, DCL BI-DBS, 2012 16 / 26

Okamžik kontroly IO, dočasné vypnutí/zapnutí IO SQL zavádí možnosti stanovit při deklaraci integritního omezení čas, kdy se má kontrolovat. Kontrolu IO lze definovat jako odložitelnou (DEFERRED) až na konec transakce. V rámci session pak lze stanovit zda se takové IO kontroluje IMMEDIATE (v rámci provedení DML) nebo až na konci transakce. Oracle dovoluje v příkazu ALTER TABLE také IO dočasně vypnout/zneplatnit DISABLE/ENABLE CONSTRAINT. Zpětné zapnutí IO pak může/nemusí vyžadovat kontrolu platnosti dat již vložených v databázi. Michal Valenta (FIT ČVUT) Jazyk SQL 3 - DML, DDL, TCL, DCL BI-DBS, 2012 17 / 26

Typy dat v SQL numerické textové rozsáhlé znakové řetězce (CLOB) rozsáhlé bitové řetězce (BLOB) datum a čas interval poznámka NULL je prvkem každého datového typu tříhodnotová logika: TRUE, FALSE, UNKNOWN Konverze : implicitní, explicitní (pomocí funkce CAST) Michal Valenta (FIT ČVUT) Jazyk SQL 3 - DML, DDL, TCL, DCL BI-DBS, 2012 18 / 26

Typy dat v SQL přesné numerické typy INTEGER, SMALLINT, NUMERIC, DECIMAL, NUMER - DECIMAL(p,q) p... přesnost q... měřítko aproximativní numerické typy FLOAT REAL DOUBLE PRECISION Michal Valenta (FIT ČVUT) Jazyk SQL 3 - DML, DDL, TCL, DCL BI-DBS, 2012 19 / 26

Typy dat v SQL znakové řetězce CHARACTER(n) (délka n,zprava mezery) CHARACTER VARYING(n) aproximativní numerické typy DATE TIMESTAMP INTERVAL Michal Valenta (FIT ČVUT) Jazyk SQL 3 - DML, DDL, TCL, DCL BI-DBS, 2012 20 / 26

DCL - příkazy GRANT a REVOKE schema (uživatel), role kdo vytvoří objekt, je jeho vlastníkem (je v jeho schématu) a může s ním manipulovat vlastník objektu může umožnit nakládání s objektem jinému uživateli nebo jiné roli grantovat lze (dle typu objektu): SELECT, INSERT, UPDATE, DELETE, ALTER, EXECUTE, INDEX, REFERENCE GRANT - přidá právo REVOKE - odebere právo GRANT SELECT ON V_Filmy TO XNOVAKJ3; GRANT ALL PRIVILEGES ON V_filmy TO PUBLIC; REVOKE INSERT ON Filmy FROM XNOVAKJ3; poznámky: systémová / objektová privilegia, role PUBLIC (oracle), schéma nemusí byt totožné s uživatelem (jak je tomu v Oracle) Michal Valenta (FIT ČVUT) Jazyk SQL 3 - DML, DDL, TCL, DCL BI-DBS, 2012 22 / 26

Příkazy COMMIT, ROLLBACK, SAVEPOINT Potvrzení/odvolání změn provedených v příslušné transakci nezáleží na počtu DML a SELECT příkazů ani na počtu změněných řádků. COMMIT - potvrzení změn - všechny provedené změny jsou perzistentně uloženy v databázi, ostatní session od této chvíle provedené změny vidí. ROLLBACK - odvolání změn - všechny změny provedené v příslušné transakci jsou odvolány. SAVEPOINT - možnost definování značky uvnitř transakce, ke které lze vztáhnou ROLLBACK. Michal Valenta (FIT ČVUT) Jazyk SQL 3 - DML, DDL, TCL, DCL BI-DBS, 2012 24 / 26

Systémový katalog systémový katalog, datový slovník (data dictionary), metadata,... -> přístup k metadatům příslušné databáze standardizace existuje, ale není dodržována výrobci k datům v systémovém katalogu lze přistupovat pomocí příkazů SELECT dotazy nad systémovým katalogem umožňují skriptování databáze příklad Oracle: pohledy s prefixy USER_, ALL_, DBA_ Příklady: SELECT OBJECN_NAME, OBJECT_TYPE, OWNER FROM ALL_OBJECTS; SELECT * FROM USER_CONSTRAINTS; SELECT DROP TABLE table_name CASCADE CONSTRAINTS; FROM USER_TABLES; Michal Valenta (FIT ČVUT) Jazyk SQL 3 - DML, DDL, TCL, DCL BI-DBS, 2012 26 / 26