Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Databázové systémy I Přednáška č. 5 Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky

Podobné prezentace


Prezentace na téma: "Databázové systémy I Přednáška č. 5 Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky"— Transkript prezentace:

1 Databázové systémy I Přednáška č. 5 Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky

2 Obsah Jazyk SQL Jednoduché typy základních příkazů CREATE TABLE DROP TABLE SELECT INSERT UPDATE DELETE Databázové systémy 1 - př. 2 2

3 Pravidla pro tabulkovou prezentaci relace (zjednodušení rozmanitostí vztahů zkoumaných teorií relací na binární relace) 1.každý řádek odpovídá jedné entitě relace 2. pořadí řádků je nevýznamné 3. žádné dva řádky nejsou stejné (tabulka neobsahuje duplicitní řádky) Databázové systémy 1 - př. 2 3

4 Pravidla pro tabulkovou prezentaci relace 4. pořadí sloupců je nevýznamné 5. význam každého sloupce je určen jménem atributu 6. žádné dva názvy sloupců (atributy) nejsou stejné 7. hodnoty ve sloupcích jsou atomické (skalární – nelze je dále rozkládat) Databázové systémy 1 - př. 2 4

5 Relace – databázové tabulky Databázové systémy 1 - př. 2 5

6 Porovnání terminologie Databázové systémy 1 - př. 2 6 V odborné literatuře se často používá pojmu relace ve smyslu „vztah“, nikoli ve smyslu „entita“.

7 Přechod k relacím ČísloJménoPříjmeníNarozenOdděleníPobočka 107KarelPilař TechnickéPardubice, Palackého JosefMatěj TechnickéHradec Králové, Sušilova KamilOháňka TechnickéPraha, Dělnická JosefínaKrátká ObchodníPraha, Dělnická 12 ČísloJménoPříjmeníNarozenId_oddPobočka 107KarelPilař JosefMatěj KamilOháňka JosefínaKrátká Id_oddOddělení 1Technické 2Obchodní Id_oddMěstoUlicečp 101PardubicePalackého Hradec KrálovéSušilova PrahaDělnická12 Databázové systémy 1 - př. 2 7

8 Speciální relační operace Projekce výběr sloupců tabulky – vertikální podmnožina Databázové systémy 1 - př. 2 8

9 Speciální relační operace Restrikce výběr určité věty z tabulky na základě stanovené podmínky (výběr řádků tabulky) – horizontální podmnožina Databázové systémy 1 - př. 2 9

10 Databázový jazyk SQL vznik relačního modelu databáze – odpoutání logické organizace dat od fyzického uložení výzkum v IBM ohledně možnosti využití relačních databází -> vytvoření sady příkazů -> jazyk SEQUEL (Structured English Query Language) 1976 představen ERM 1979 Relational Software (dnes Oracle Corporation) 1980 Přejmenování SEQUEL -> SQL (Structured Query Language) Databázové systémy 1 - př. 2 10

11 Databázový jazyk SQL 1986ANSI – standardizace SQL86 (první verze) 1992 V dalších letech se ukázalo, že SQL-86 obsahuje některé nedostatky a naopak v něm nejsou obsaženy některé důležité prvky týkající se hlavně integrity databáze - nový standard SQL-92 (zkráceně SQL2)integrity databáze 1999Standard SQL3 (SQL:1999) reaguje na potřeby nejmodernějších databází s objektovými prvky, doplněny regulární výrazy, rekurzivní dotazy, podpora procedur,.. databází s objektovými prvky 2003Standard SQL 2003 doplněny XML funkce, sekvence, sloupce s automaticky generovanými hodnotami 2006Standard SQL 2006 definuje způsoby pro konverzi dat mezi SQL a XML formou Databázové systémy 1 - př. 2 11

12 Jazyk SQL slouží k Definici dat (struktury a organizace dat a vztahů mezi nimi) Získávání dat Manipulaci s daty Řízení přístupu Sdílení dat Integrita dat Databázové systémy 1 - př. 2 12

13 Úloha jazyka SQL Interaktivní dotazovací jazyk (pro uživatele) Databázový programovací jazyk (začlenění SQL kódu do aplikačních programů) Administrační databázový jazyk (správa databáze) Jazyk aplikací typu klient/server Jazyk pro přístup k datům na internetu Distribuovaný databázový jazyk (provoz distribuovaných databází) Jazyk pro databázové brány (umožňuje jednomu druhu databázového systému komunikovat s jiným) Databázové systémy 1 - př. 2 13

14 Přenositelnost jazyka SQL Důvody, které komplikují přenositelnost SQL kódu mezi dtb. systémy: SQL standard je složitý a tak ne všichni implementátoři podporují celý standard. Norma nespecifikuje chování databáze v několika důležitých oblastech (např. indexy, ukládání souborů...), takže implementátoři se mohou rozhodnout, jak tyto činnosti implementovat. SQL standard přesně specifikuje syntaxi, kterou musí kompatibilní databáze splnit. Standardní specifikace pro sémantiku jazyka je méně dobře definovaná, což vede k nejasnostem. Databázové systémy 1 - př. 2 14

15 Přenositelnost jazyka SQL Mnoho prodejců databázových systémů má velké existující zákaznické základny, kde SQL standard se střetává s předchozím chováním databáze a prodejce může být neochotný ztratit zpětnou kompatibilitu. V některých případech mají prodejci zájem vytvořit či zachovat nekompatibility s jinými produkty, protože zajišťují silnou motivaci pro stávající uživatele zůstat loajální. Databázové systémy 1 - př. 2 15

16 Popis jazyka SQL Standardní příkazy dělíme do skupin: 1.Příkazy pro definici dat (DDL) Data Definition Language 2. Příkazy pro manipulaci s daty (DML) Data Manupation Language 3. Příkazy pro řízení dat (DCL) Data Controll Language 4. Ostatní příkazy Databázové systémy 1 - př. 2 16

17 Popis jazyka SQL Příkazy pro definici dat Těmito příkazy se vytvářejí struktury databáze – tabulky, indexy, pohledy a další objekty. Vytvořené struktury lze také upravovat, doplňovat a mazat. Tato skupina příkazů se nazývá zkráceně DDL – Data Definition Language („jazyk pro definici dat“). CREATE – vytváření nových objektů. ALTER – změny existujících objektů. DROP – odstraňování objektů. Databázové systémy 1 - př. 2 17

18 Popis jazyka SQL Příkazy pro manipulaci s daty příkazy pro získání dat z databáze a pro jejich úpravy se označují zkráceně DML (data Manipulation Language) SELECT – vybírá data z databáze INSERT – vkládá do databáze nová data. UPDATE – mění data v databázi (editace). DELETE – odstraňuje data (záznamy) z databáze. EXPLAIN PLAN FOR – speciální příkaz, který zobrazuje postup zpracování SQL příkazu. Pomáhá uživateli optimalizovat příkazy tak, aby byly rychlejší. Databázové systémy 1 - př. 2 18

19 Popis jazyka SQL Příkazy pro řízení dat Do této skupiny patří příkazy pro nastavování přístupových práv, řízení provozu a údržby databáze transakcí. Označují se jako DCL – Data Control Language („jazyk pro ovládání dat“), GRANT – příkaz pro přidělení oprávnění uživateli k určitým objektům. REVOKE – příkaz pro odnětí práv uživateli. ALTER USER – změna uživatele DROP USER – odstranění uživatele Databázové systémy 1 - př. 2 19

20 Popis jazyka SQL Příkazy pro řízení dat – skupina příkazů pro řízení transakcí Označují se TCC – Transaction Control Commands („jazyk pro ovládání transakcí"). COMMIT – potvrzení transakce. ROLLBACK – zrušení transakce, návrat do původního stavu. SAVEPOINT SET TRANSACTION Databázové systémy 1 - př. 2 20

21 Popis jazyka SQL Ostatní příkazy Do této skupiny patří příkazy pro správu databáze. Pomocí nich lze nastavovat systémové parametry (kódování znaků, způsob řazení, formáty data a času apod.). Tato skupina není standardizována a konkrétní syntaxe příkazů je závislá na databázovém systému. Databázové systémy 1 - př. 2 21

22 Standardní datové typy SQL Číselné datové typy (výběr) DECIMAL (, ) Desetinné číslo s celkovým počtem číslic a s počtem za desetinnou čárkou. Stejný typ je NUMERIC. FLOAT ( ) Desetinné číslo s plovoucí desetinnou tečkou. Parametr udává počet platných číslic (max. 38) REAL ( ) Desetinné číslo s plovoucí desetinnou tečkou. Parametr udává počet platných číslic (max. 18) INTEGER Celé číslo v rozsahu – až SMALLINT Celé číslo v rozsahu – až Databázové systémy 1 - př. 2 22

23 Standardní datové typy SQL Znakové datové typy CHAR ( ) Řetězec znaků pevné délky znaků. Maximální délka bývá 255 znaků. VARCHAR ( ) Řetězec znaků proměnlivé délky, maximálně znaků. Maximální délka bývá delší než u typu CHAR. Oba datové typy mohou být ve variantě s národními znaky jako NCHAR či NVARCHAR. Databázové systémy 1 - př. 2 23

24 Standardní datové typy SQL Datové typy pro datum a čas DATE - Vyjádření datumu. TIME - Vyjádření času. TIMESTAMP - Struktura obsahující datum a čas. INTERVAL - Časové intervaly. Čas a časové razítko mohou být doplněny i o informace o časové zóně: TIMESTAMP(přesnost) WITH TIME ZONE TIME WITH TIME ZONE Databázové systémy 1 - př. 2 24

25 Datové typy Oracle Číselné datové typy NUMBER (, ) Desetinné číslo s celkovým počtem číslic a s počtem číslic za desetinnou čárkou. Příklady: NUMBERčíslo s pohyblivou řádovou čárkou NUMBER (9) celé číslo s přesností na 9 číslic NUMBER (9,2)desetinné číslo s pevnou řádovou čárkou s přesností na 9 číslic, z toho 2 za desetinnou čárkou (setiny) NUMBER (7,-2)desetinné číslo s pevnou řádovou čárkou s přesností na 7 číslic počínaje 2. před desetinnou čárkou (zaokr. na stovky) NUMBER (4,5)desetinné číslo s pevnou řádovou čárkou s přesností na 4 číslice počínaje 5. za desetinnou čárkou Databázové systémy 1 - př. 2 25

26 Datové typy Oracle Znakové datové typy CHAR ( ), NCHAR Řetězec znaků pevné délky znaků. Maximální délka 2000 znaků, default je 1. VARCHAR2 ( ), NVARCHAR2 Řetězec znaků proměnlivé délky, maximálně znaků či bytů. Maximální délka je 4000, default je 1.Upřesnění: VARCHAR2(20 CHAR) - řetězec znaků proměnlivé délky, maximálně 20 znaků VARCHAR2(20 BYTE) - řetězec znaků proměnlivé délky, maximálně 20 bytů Rozdíl vzniká v případech znaků národních abeced, které potřebují 2-4 B na svoje uložení. Defaultní hodnota zda BYTE či CHAR závisí na nastavení serveru a prostředí. LONG - zastaralé Řetězec znaků proměnlivé délky, max. 2 GB. Databázové systémy 1 - př. 2 26

27 Datové typy Oracle Datové typy pro kalendářní a časové hodnoty - datum a čas - datový a časový interval Oba typy se skládají z polí YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, TIMEZONE_HOUR, TIMEZONE_MINUTE DATE Vyjádření konkrétního datumu a času s přesností na sekundy, rozsah je od př.n.l. do TIMESTAMP ( ) Struktura obsahující datum a čas s požadovanou přesností (až na miliontiny sekundy pro hodnotu parametru =6). INTERVAL YEAR ( ) TO MONTH K vyjádření delšího časového intervalu. INTERVAL DAY ( ) TO SECOND ( ) K vyjádření relativně kratšího časového intervalu. Databázové systémy 1 - př. 2 27

28 Datové typy Oracle Datové typy pro objemná data - long object block (LOB) BLOB - binární objekty do 4GB CLOB – textové (CHAR) objekty do 4GB NCLOB - textové objekty v národních sadách do 4GB RAW – formát pro binární data, v současnosti pouze pro zachování zpětné kompatibility Databázové systémy 1 - př. 2 28

29 Jak pochopit zápisy syntaxí parametr, za který se dosazuje konkrétní hodnota {A|B|C}povinná volba jedné z uvedených možností |oddělení variant [ ]nepovinná část …možnost opakování ’označení konstant typu řetězec znaků Databázové systémy 1 - př. 2 29

30 Syntaxe příkazu CREATE TABLE CREATE TABLE ( [, = [, … ] ]) = { [ ] | } = [CONSTRAINT ] { [NOT] NULL | [NOT NULL] UNIQUE | [NOT NULL] PRIMARY KEY | REFERENCES [( )] | CHECK ( )} Databázové systémy 1 - př. 2 30

31 Syntaxe příkazu CREATE TABLE /2 = [CONSTRAINT ] { UNIQUE ( ) | PRIMARY KEY ( ) | CHECK ( ) | FOREIGN KEY ( ) REFERENCES [( )] | } Databázové systémy 1 - př. 2 31

32 CREATE TABLE Vytvoří tabulku dle popsané struktury. Příklad: CREATE TABLE dodavatele ( dodavatel_id number(4), nazev varchar2(100), zastoupeni varchar2(100) ); Strukturu tabulky lze zobrazit příkazem DESC Databázové systémy 1 - př. 2 32

33 CREATE TABLE Omezující podmínky pro sloupce: NOT NULL – hodnota ve sloupci nesmí být NULL UNIQUE – jedinečnost = zakázány duplicity PRIMARY KEY – primární klíč (zakázány duplicity a NULL hodnoty) FOREIGN KEY – cizí klíč (odkazuje na sloupec jiné tabulky – podpora pro udržení integrity dat) CHECK – podmínka pro hodnoty ve sloupci (např. ID INTEGER CHECK ID BETWEEN 0 AND 100) DEFAULT – předdefinovaná hodnota (např. sloupec_1 INTEGER DEFAULT 50) Databázové systémy 1 - př. 2 33

34 CREATE TABLE Vytvoří tabulku dle popsané struktury. Příklad: CREATE TABLE employees_demo (employee_id NUMBER(6) PRIMARY KEY, first_name VARCHAR2(20), last_name VARCHAR2(25) CONSTRAINT emp_last_name_nn NOT NULL, VARCHAR2(25) CONSTRAINT emp_ _nn NOT NULL, phone VARCHAR2(20), hire_date DATE DEFAULT SYSDATE CONSTRAINT emp_hire_date_nn NOT NULL, job_id VARCHAR2(10) CONSTRAINT emp_job_nn NOT NULL, salary NUMBER(8,2) CONSTRAINT emp_salary_nn NOT NULL, commiss_pct NUMBER(2,2), manager_id NUMBER(6), dept_id NUMBER(4), dn VARCHAR2(300), CONSTRAINT emp_salary_min CHECK (salary > 0), CONSTRAINT emp_ _uk UNIQUE ( ) ) ; Databázové systémy 1 - př. 2 34

35 CREATE TABLE Vytvoří tabulku dle popsané struktury. Příklad: CREATE TABLE dodavatele ( dodavatel_id number(4) not null, nazev varchar2(100) not null, zastoupeni varchar2(100), CONSTRAINT dodavatel_pk PRIMARY KEY (dodavatel_id) ); CREATE TABLE produkty ( produkt_id number(8) not null, oznaceni varchar2(30) not null, dodavatel_id number(4) not null, cena number(6), CONSTRAINT fk_dodavatele FOREIGN KEY (dodavatel_id) REFERENCES dodavatele(dodavatel_id) ); Databázové systémy 1 - př. 2 35

36 Syntaxe příkazu DROP TABLE DROP TABLE Odstraní z databáze tabulku s daným jménem, tj. všechny řádky tabulky, celou strukturu, všechny nad ní definované indexy a všechna případná omezení definovaná nad sloupci či celou tabulkou. Databázové systémy 1 - př. 2 36

37 DROP TABLE Příklad: DROP TABLE dodavatele; Databázové systémy 1 - př. 2 37

38 Syntaxe příkazu ALTER TABLE ALTER TABLE ADD ( ) = { [ ] | } Příkaz se používá pro přidání sloupců či omezení do tabulky. ALTER TABLE dodavatele ADD mesto varchar2(50); ALTER TABLE dodavatele ADD (mesto varchar2(50), telefon varchar2(13) ); Databázové systémy 1 - př. 2 38

39 Syntaxe příkazu ALTER TABLE ALTER TABLE MODIFY ( ) Příkaz se používá pro úpravu specifikace sloupců či omezení do tabulky. ALTER TABLE dodavatele MODIFY zastoupeni varchar2(80) not null; Databázové systémy 1 - př. 2 39

40 Syntaxe příkazu ALTER TABLE ALTER TABLE DROP COLUMN Příkaz se používá pro odstranění sloupce z tabulky. ALTER TABLE dodavatele DROP COLUMN telefon; Databázové systémy 1 - př. 2 40

41 Syntaxe příkazu ALTER TABLE ALTER TABLE RENAME COLUMN Příkaz se používá pro přejmenování sloupce tabulky. ALTER TABLE dodavatele RENAME COLUMN mesto to zastoupeni_mesto; Databázové systémy 1 - př. 2 41

42 Syntaxe příkazu INSERT INSERT INTO [( [, [, … ] ]) ] { | VALUES [( [, [, … ] ]) ] } Nový (jeden) řádek přidáme do tabulky uvedením hodnot pro všechny sloupce v tabulce. Více řádků najednou přidáme do tabulky pomocí vnořeného dotazu SELECT. Databázové systémy 1 - př. 2 42

43 INSERT Příklad: INSERT INTO dodavatele (dodavatel_id, nazev, zastoupeni, mesto) VALUES (1, 'Acer','Acer Czech Republic s.r.o.','Praha 4'); INSERT INTO dodavatele (dodavatel_id, nazev, zastoupeni, mesto) VALUES (2, 'Asus','ASUS Czech s.r.o.','Ostrava'); Databázové systémy 1 - př. 2 43

44 Syntaxe příkazu UPDATE UPDATE [ ] SET = [, = [, … ] ] [WHERE ] Změna hodnot ve sloupcích u těch řádků tabulky, které splňují podmínku uvedenou za klauzulí WHERE. Pokud není klauzule WHERE uvedena, bude provedena změna u VŠECH řádků tabulky. Databázové systémy 1 - př. 2 44

45 UPDATE Příklad: UPDATE dodavatele SET nazev = 'HP' WHERE nazev = 'Compaq'; Databázové systémy 1 - př. 2 45

46 Syntaxe příkazu DELETE DELETE FROM [WHERE ] Vymazání těch řádků tabulky, které splňují podmínku uvedenou za klauzulí WHERE. Pokud není klauzule WHERE uvedena, budou odstraněny VŠECHNY řádky tabulky. Databázové systémy 1 - př. 2 46

47 DELETE Příklad: DELETE FROM produkty WHERE dodavatel_id = 7 or dodavatel_id > 10; Databázové systémy 1 - př. 2 47

48 Příkaz SELECT Příkaz SELECT slouží k získávání dat z databáze. SELECT FROM ; Zobrazený příklad, který je ten nejjednodušší, musí obsahovat: – Klauzuli SELECT, kde specifikujeme co chceme získat – Klazuli FROM, kde specifikujeme odkud to chceme získat Databázové systémy 1 - př. 2 48

49 Příkaz SELECT Projekce – nám říká, které sloupce budeme zobrazovat Restrikce (selekce) – nám říká, které řádky budeme zobrazovat Databázové systémy 1 - př. 2 49

50 Příkaz SELECT Databázové systémy 1 - př. 2 50

51 Příkaz SELECT Výběr dat ze všech sloupců tabulky provedeme použitím zástupného znaku * na pozici názvu sloupce za klauzulí SELECT SELECT * FROM a_hr.zamestnanci; Databázové systémy 1 - př. 2 51

52 Příkaz SELECT Výběr dat ze všech sloupců tabulky může provézt také explicitním vyjmenováním všech sloupců SELECT zeme_id, zeme_nazev, region_id FROM a_hr.zeme; Databázové systémy 1 - př. 2 52

53 Příkaz SELECT Omezení výběru dat pouze z některých sloupců provedeme výčtem požadovaných sloupců SELECT jmeno, prijmeni, FROM a_hr.zamestnanci; Databázové systémy 1 - př. 2 53

54 Příkaz SELECT V příkazu SELECT můžeme používat přímo aritmetické operátory. Například můžeme zobrazit rovnou platy zaměstnanců navýšené o 5%. SELECT jmeno, prijmeni, mzda*1.05 FROM a_hr.zamestnanci; Databázové systémy 1 - př. 2 54

55 Příkaz SELECT V příkazu SELECT můžeme používat přímo aritmetické operátory. Například můžeme zobrazit rovnou platy zaměstnanců navýšené o 5%. SELECT jmeno, prijmeni, mzda*1.05 FROM a_hr.zamestnanci; Databázové systémy 1 - př. 2 55

56 Příkaz SELECT Alias – umožňuje přejmenování sloupce ve výstupu, případně pod-dotazu nebo tabulky SELECT * | sloupec | výraz [ AS alias], … FROM tabulka; SELECT jmeno, prijmeni, mzda*1.05 AS „novy_plat“ FROM a_hr.zamestnanci; Databázové systémy 1 - př. 2 56

57 WHERE Klauzule WHERE – provádí v dotazu restrikci Rozšiřuje syntaxi příkazu SELECT na: SELECT FROM [WHERE podmínka(y)] Také se používá u příkazů INSERT, UPDATE a DELETE Databázové systémy 1 - př. 2 57

58 WHERE Použití klauzule WHERE nám umožňuje definovat, které řádky se do výsledku zařadí. SELECT jmeno, prijmeni, FROM a_hr.zamestnanci; (vrátí jména, příjmení a y všech zaměstnanců) SELECT jmeno, prijmeni, FROM a_hr.zamestnanci WHERE zamestnanec_id=22; (vrátí jméno, příjmení a pracovníka s id 22) Databázové systémy 1 - př. 2 58

59 WHERE Povolené operace v klauzuli WHERE =rovno >větší než >=větší nebo rovno (!=, ^=)nerovno Databázové systémy 1 - př. 2 59

60 WHERE Povolené operace v klauzuli WHERE =rovno >větší než >=větší nebo rovno (!=, ^=)nerovno Databázové systémy 1 - př. 2 60

61 WHERE Povolené operace v klauzuli WHERE BETWEEN … ANDrozmezí hodnot IN (NOT IN)výčet hodnot ALLvšechny hodnoty ANYněkterá hodnota LIKE (NOT LIKE)jako EXISTS (NOT EXISTS)existuje IS NULL (IS NOT NULL)je/není NULL Databázové systémy 1 - př. 2 61

62 DĚKUJI ZA POZORNOST Čas na otázky a praktické ukázky Databázové systémy 1 - př. 2 62


Stáhnout ppt "Databázové systémy I Přednáška č. 5 Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky"

Podobné prezentace


Reklamy Google