Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
1
Databázové jazyky Jaroslav Pokorný FI BVŠP Bratislava
Databázové systémy Databázové jazyky Jaroslav Pokorný FI BVŠP Bratislava
2
Databázové jazyky jazyky pro manipulaci dat (JMD)
aktualizační příkazy INSERT, DELETE, UPDATE dotazovací jazyky (relační algebra, SELECT v SQL) jazyky pro definici dat (JDD) příkaz CREATE TABLE a další v SQL J. Pokorný
3
Databázový dotaz Praktická definice databázového dotazu
(Databázový) dotaz typu (S T) je vyčíslitelná funkce q, která pro každou databázi S* poskytne odpověď q(S*) typu T. omezení: hodnoty v q(S*) jsou z S*, odpověď nezávisí na reprezentaci dat v DB prvky DB se chápou jako neinterpretované objekty Dotazovací jazyk nad S je množina výrazů na konečnou abecedou + významová funkce přiřazující každému výrazu dotaz. J. Pokorný
4
Vyjadřovací síla Vyjadřovací síla dotazovacího jazyka J nad S je množina všech dotazů M(J), které lze pomocí J vyjádřit. J1 < J2 právě když M(J1) M(J2) J1 J2 právě když M(J1) = M(J2) Dotazovací jazyk, kterým lze vyjádřit všechny databázové dotazy se nazývá úplný. J. Pokorný
5
Dotaz v relační algebře
Př.: postup po krocích – uložení mezivýsledků KINO(Název_k, Adresa), FILM(Jméno_f, Herec, Rok) MÁ_NA_PROGRAMU(Název_k, Jméno_f, Datum) 1. krok (selekce) R1:= MÁ_NA_PROGRAMU(Název_k = ‘Mír’) J. Pokorný
6
Dotaz v relační algebře
2. krok (projekce) R2 := R1[jméno_f, Datum] 3. krok (spojení) R3 := FILM * R2 J. Pokorný
7
Dotaz v relační algebře
4: krok (projekce) R4:= R3[Herec] bez mezivýsledků: (MÁ_NA_PROGRAMU(název_k=‘Mír’)[jméno_f, Datum] * FILM) [Herec] česky: "Nalezni herce, kteří hrají ve filmech v kinu Mír". J. Pokorný
8
Za relačním modelem prázdná hodnota NULL, pravdivostní hodnota UNKNOWN
(levé, pravé, plné) vnější spojení Motivace pro NULL: seznam filmů v jednotlivých kinech, avšak i v těch, kde se zrovna nic nekoná (dotaz KINO * MÁ_NA_PROGRAMU problém neřeší) J. Pokorný
9
Za relačním modelem J. Pokorný
10
Za relačním modelem levé vnější spojení
R *L S = (R * S) (R’ (NULL,...,NULL)), kde R’ R – (R * S)[A] Důsledky: (R *LS)[A] R, pravé vnější spojení R *R S = (R * S) ((NULL,...,NULL) S’) úplné vnější spojení R *F S = (R *L S) (R *R S) J. Pokorný
11
Úvod do jazyka SQL Jazyk SQL vznikl z jazyka SEQUEL (Structured English Query Language) vyvíjeného ve firmě IBM (publ. v r. 1974) V r standardizován SQL Další standardy: SQL92, SQL:1999, SQL:2003, Pz.: každý následující je nadmnožinou předchozího J. Pokorný
12
Přehled SQL92 jazyk pro definici dat,
interaktivní jazyk pro manipulaci dat, jazyk pro manipulaci dat v hostitelské verzi, možnost definice pohledů, možnost definice IO, systémový katalog možnost definice přístupových práv, jazyk modulů, řízení transakcí. J. Pokorný 2
13
Schéma příkladu VÝPŮJČKY(Č_KOPIE, Č_ZAK, ROD_Č, CENA, DATUM_V)
{údaje o výpůjčkách kopií - číslo zakázky, zákazník, cena, datum navrácení} KINA(NÁZEV_K, ADRESA, JMÉNO_V) {údaje o kinech a jejich vedoucích} FILMY(JMÉNO_F, REŽISÉR) {údaje o filmech a jejich režisérech} PŘEDSTAVENÍ(NÁZEV_K, JMÉNO_F, DATUM) {údaje o kinech hrajících filmy} ZÁKAZNÍCI(ROD_Č, Č_ZAK, JMÉNO, ADRESA) {údaje o zákazníkovi} ZAMĚSTNANCI(OSOBNÍ_Č, ADRESA, JMÉNO, PLAT) {údaje o zaměstnancích půjčovny} KOPIE(Č_KOPIE JMÉNO_F) {kopie filmů} REZERVACE(JMÉNO_F, ROD_Č ) {rezervace filmů zákazníky} J. Pokorný 3
14
Definice dat v SQL CREATE TABLE Dále: odvozené tabulky ( É pohledy).
CREATE TABLE VÝPŮJČKY (č_kopie CHAR(3) NOT NULL, č_zak CHARACTER(6) NOT NULL, cena DECIMAL(5,2), rod_č CHARACTER(10) NOT NULL, datum_v DATE); J. Pokorný
15
Definice dat v SQL IO sloupce
NOT NULL sloupec nesmí obsahovat hodnotu NULL, DEFAULT určení implicitní hodnoty sloupce , UNIQUE všechny hodnoty ve sloupci musí být unikátní, NULL hodnota nevadí, PRIMARY KEY sloupec je primárním klíčem tabulky, FOREIGN KEY sloupec je cizím klíče definující referenční integritu s jinou tabulkou CHECK logický výraz definuje přídavné IO IO tabulky (např. složený primární klíč), pojmenování IO J. Pokorný
16
Definice dat v SQL ALTER TABLE DROP TABLE CREATE SCHEMA
CREATE TABLE jméno-tabulky (seznam_prvků_tabulky) seznam_prvků_tabulky ::= prvek_tabulky[,prvek_tabulky]... prvek_tabulky ::= definice_sloupce | definice_IO_tabulky ALTER TABLE ADD sloupec, DROP sloupec, ALTER sloupec, ADD CONSTRAINT a DROP CONTRAINT Př.: ALTER TABLE KINA ADD počet_míst INT DROP TABLE CREATE SCHEMA obsahuje definice základních tabulek, pohledů, domén, integritních omezení, uživatelská práva J. Pokorný
17
Definice dat v SQL DROP SCHEMA
Lze: RESTRICT, CASCADE Df.: Databáze v SQL je kolekce tabulek a pohledů. Může být definována jedním nebo více schématy. schéma 2 schéma 1 J. Pokorný
18
Typy dat v SQL numerické (přesné a aproximativní), znakové řetězce,
bitové řetězce, temporální data, časové intervaly. Dále: NULL (je prvkem každého datového typu) TRUE, FALSE, UNKNOWN Konverze: automatické, explicitní (funkce CAST) J. Pokorný
19
Typy dat v SQL přesné numerické typy INTEGER (celé),
SMALLINT („menší“ implementace než INTEGER), NUMERIC, DECIMAL. DECIMAL(p,q), p cifer, desetinná čárka q cifer zprava. NUMERIC (podobné DECIMAL) s přesností implementačně definovanou, p musí být menší nebo rovno této přesnosti. J. Pokorný
20
Typy dat v SQL aproximativní numerické typy
FLOAT (reálné, parametrizované event. p) REAL (reálné, s pevnou přesností danou implementací) DOUBLE PRECISION (reálné, s pevnou přesností danou implementací, ale větší než REAL) znakové řetězce CHARACTER(n) (délka n, zprava mezery) CHARACTER VARYING(n) (max.délka n) J. Pokorný
21
Příklad . . . CREATE TABLE KINA . . . CREATE TABLE PŘEDSTAVENÍ
(Nazev_k Char_Varying(20) NOT NULL, Jmeno_f Char_Varying(20) NOT NULL, Datum Date NOT NULL, PRIMARY KEY (Nazev_k, Jmeno_f), FOREIGN KEY (Nazev_k) REFERENCES KINA, FOREIGN KEY (Jmeno_f) REFERENCES FILMY); Pz.: Tabulka v SQL nemusí mít primární klíč! J. Pokorný
22
Indexy v SQL nadrelační rys,
podpora přístupových cest k datům v dotazu index obyčejný a typu cluster Pozor: rozdíl od 2 indexů na Jméno a Adresa CREATE INDEX Idx_zak_jm_adr ON ZÁKAZNÍCI (Jméno, Adresa) J. Pokorný
23
Klastrovaný vs. neklastrovaný index
(Indexový soubor) klastrovaný neklastrovaný seznamy ukazatelů seznamy ukazatelů řádky relace (relace) řádky relace J. Pokorný
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.