Databázové systémy I přednášky



Podobné dokumenty
RELAČNÍ DATABÁZOVÉ SYSTÉMY

Primární klíč (Primary Key - PK) Je právě jedna množina atributů patřící jednomu z kandidátů primárního klíče.

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

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

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

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

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

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

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

Databáze SQL SELECT. David Hoksza

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů.

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

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

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

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

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

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

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

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

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

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

Databázové systémy a SQL

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

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

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

Databázové systémy úvod

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

Databázové systémy trocha teorie

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

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

Obsah přednášky. Databázové systémy RDBMS. Fáze návrhu RDBMS. Coddových 12 pravidel. Coddových 12 pravidel

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

Databázové systémy úvod

Informační systémy 2008/2009. Radim Farana. Obsah. Obsah předmětu. Požadavky kreditového systému. Relační datový model, Architektury databází

Databázové systémy úvod

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

Relační databázový model. Vladimíra Zádová, KIN, EF, TUL- DBS

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

Inovace tohoto kurzu byla spolufinancována z Evropského sociálního fondu a státního rozpočtu České republiky.

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

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

Použití databází na Webu

Databázové systémy I

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

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

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

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

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

Databáze. Logický model DB. David Hoksza

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

1 Webový server, instalace PHP a MySQL 13

Databáze 2013/2014. Konceptuální model DB. 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.

Maturitní otázky z předmětu PROGRAMOVÁNÍ

2. přednáška. Databázový přístup k datům (SŘBD) Možnost počítání v dekadické aritmetice - potřeba přesných výpočtů, např.

Databázové systémy BIK-DBS

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

Marketingová komunikace. 2. soustředění. Mgr. Pavel Vávra Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph)

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

Analýza a modelování dat 3. přednáška. Helena Palovská

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

Databázový systém označuje soubor programových prostředků, které umožňují přístup k datům uloženým v databázi.

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

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

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

předměty: ukončení: Zápočet + Zkouška / 5kb např. jméno, název, destinace, město např. student Jan Novák, narozen

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

Úvod do databázových systémů. Ing. Jan Šudřich

Ukázka knihy z internetového knihkupectví

5. POČÍTAČOVÉ CVIČENÍ

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

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

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

Úvod do MS Access. Modelování v řízení. Ing. Petr Kalčev

Operátory ROLLUP a CUBE

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

1. Webový server, instalace PHP a MySQL 13

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

Oracle XML DB. Tomáš Nykodým

Informační systémy ve zdravotnictví. 6. cvičení

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

Základy databází. O autorech 17 PRVNÍ ČÁST. KAPITOLA 1 Začínáme 19

Marketingová komunikace. 2. a 3. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK3PH (vm3aph)

1. Relační databázový model

DBS Konceptuální modelování

4IT218 Databáze. 4IT218 Databáze

Popis ovládání. Po přihlášení do aplikace se objeví navigátor. Navigátor je stromově seřazen a slouží pro přístup ke všem oknům celé aplikace.

Hierarchický databázový model

Databáze MS-Access. Obsah. Co je to databáze? Doc. Ing. Radim Farana, CSc. Ing. Jolana Škutová

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

04 - Databázové systémy

Databázové systémy BIK-DBS

Kapitola 4: SQL. Základní struktura

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

DUM 15 téma: Příkazy pro řízení přístupu

Access Tabulka letní semestr 2013

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

Databáze v MS ACCESS

Relační databáze. V dnešní době existuje řada komerčních DBMS, nejznámější jsou:

Transkript:

Vostrovský Václav vostrovsky@pef.czu.cz PEF - přízemí č. 15 Po 12:00-13:30-75% docházky na cvičeních - musíme chodit připraveni - 2 testy v průběhu cvičení (teorie a SQL) - max 10 bodů, minimum 5 bodů, pro zápočet z obou minimálně 10 bodů - 1 oprava (např. pokud 2. test: 3 body a oprava 7 bodů - celkem z 2. testu: (3 + 7)/2 = 5 bodů) - skripta: Vytváření databází v Oracle - zkouška: písemná část + ústní dozkoušení (SQL dotazy a základní teoretické termíny) - dvě v lednu jsou předtermín 1. cvičení: seznámení s náležitostmi udílení zápočtu MS ACCESS: založení a naplnění tabulky, třídění, dotazy 2. cvičení: MS ACCESS: složitější dotazy, obrazovka, sestava 3. cvičení: ORACLE - SQL * PLUS založení a naplnění tabulky INDEX, DELETE, DROP TABLE, UPDATE 4. cvičení: ORACLE - SQL*PLUS třídění, dotazy (selekce, projekce, agregované údaje), práce s více tabulkami 5. cvičení: ORACLE - SQL*PLUS složitější dotazy (výběry... 13. cvičení: test 14. cvičení: oprava testu Přednášená témata: - základní pojmy db technologie - relační datový model - dotazovací jazyk SQL - modelování reálného světa (ER) - datová normalizace - SŘBD Oracle - ochrana dat Aspekty pro vymezení přístupů ke zpracování dat: - stupeň nezávislosti programů od způsobu jejich uložení - míra vzájemné integrovanosti organizace dat Členění dosavadních přístupů ke zpracování dat: - konvenční přístupy: - agendové zpracování dat - integrované zpracování dat - databázové přístupy: - relačně databázové zpracování dat - objektové zpracování dat Agendové zpracování - představuje první pokus řešit problematiku zpracování hromadných dat: - vedení samostatných, vzájemně oddělených a rozsahem malých úloh - agend - každá agenda má vlastní soubory, které nejsou propojeny - míra integrovanosti velmi nízká Redundance dat: narůstající objem dat vícenásobné zpracování dat Nevýhody agendového zpracování: - obtížná uživatelská flexibilita - pro každou novou uživatelskou funkci je třeba přepsat dotyčný program nebo nový napsat - každý program obsahuje přesný popis souborů - problém konzistence redundantních dat - pokud se změní vlastnost objektu, musí být přepsána ve všech výskytech - obtížná flexibilita datové základy - pro každou změnu struktur záznamu nutno přeprogramovat související programy - obtížná kontrolovatelná datová redundance - omezené možnosti sdílení stejných dat více aplikacemi - 1 - Christy

- nízká bezpečnost IS - obtížná dosažitelnost evidovaných dat - ke zpracovávaným souborům musí existovat odpovídající aplikační programy - obtížná ochrana dat proti zneužití - komplikované zajištění integrity dat - zpracovávaná data musí odpovídat vlastnostem popisovaných objektů reálného světa - Nutnost uplatnění jiné filozofie ve zpracování dat Požadavky kladené na zpracování hromadných dat - zpracování ekonomických agend se týká úloh: - výběry pomocí určitého algoritmu, jehož základem je dotaz uživatele - aktualizace evidovaných dat - záznamy ze vstupního souboru jsou modifikovány záznamy ze změnového souboru Princip aktualizace ekonomických agend kmenový soubor + pohybový soubor -> aktualizace -> nový kmenový soubor Princip databázového zpracování aplikační program 1, 2, 3, 4 -> datový zdroj Předpoklady databázových dotazovacích jazyků - musí obsahovat příkazy pro definici nových dat - jazyk pro definici dat DDL (data definicion language) - musí obsahovat příkazy pro vkládání nových vět, tvorbu dotazů a aktualizaci dat - jazyk pro manipulaci dat DML (data manipulation language) - musí obsahovat příkazy pro řízení přístupových práv uživatelů a pro řízení transakcí - jazyk DCL (data control language) Moderní SŘBD disponují prostředky vizuálního programování - příkazy jsou konstruovány (generovány) na základě zvolených grafických symbolů v uživatelském rozhraní Členění dotazovacích jazyků: - procedurální jazyky - nutno zadat algoritmus pro získání požadované odpovědi - COBOL, FORTRAN - neprocedurální jazyky - v principu jednodušší, pouze se specifikují podmínky pro požadovanou odpověď 1. jazyk SQL (Struktured Query Language) kopíruje princip kladení otázek v přirozeném jazyce 2. jazyk QBE (Query By Example) pro zadávání dotazů pomocí grafických symbolů zapisovaných do návrhových formulářů Relačně úplný dotazovací jazyk: = umožňuje definovat všechny operace relační algebry Databázové dotazovací jazyky: Dotazovací jazyk SQL - 70. léta laboratoře IBM - deklarativní dotazovací jazyk založený na n-ticovém relačním kalkulu - deklarativní - příkazy definují co se má provést a nikoliv jak se to má provést - dotazovací - jazyk specializovaný pro manipulaci s daty v databázi pomocí rozhraní SŘBD (nelze ale např. programovat uživatelské rozhraní - nutno kombinovat s jiným vyšším programovacím jazykem) Zlomem ve vývoji SQL se stala jeho standardizace organizací ANSI Syntaxe příkazů SQL Symbol Význam [ ] nepovinné části říkazu { } povinná volba jedné z uvedených možností oddělení variant, mezi kterými je možné volit < > parametr, za který je třeba dosadit konkrétní hodnotu... konstrukce uvedená v předchozí závorce se může opakovat označení konstant typu řetězec znaků ( Josef ) - 2 - Christy

uživatelské jméno: student1 až 9 heslo: student přihl. řetězec: ORA9 quit - odhlášení Relační datový model - vznik: 1969, E. F. Codd, laboratoře IBM, DB2 - aspekty relačního datového modelu: - hodnoty v tabulkách musí být atomické - neměla by být dále dělitelná - hodnoty musí být skalární (pouze jeden rozměr) - hodnoty ve sloupcích jsou prvky dotyčných domén - datový typ vymezuje jaká data budou vkládána - práce s tabulkami využívá operací výrokové logiky - výběry, projekce, spojování tabulek - primární klíče pro identifikaci řádek mezi sebou - pro propojování tabulek navzájem - cizí klíče Zavádění IS do organizace - instituce - v cizině je správce databáze v managementu, je více respektován - u nás - není respektován, musí se obhajovat, vysvětlovat Křivka humbuku - zájem, popularita, očekávání od nových aplikací - ze začátku byl obrovský, pak zjistili, že pokud se dostatečně nepřizpůsobili, tak se to nevyplatilo Relační datový model - v tabulkách lze definovat podmnožiny řádek (operace selekce) a podmnožiny sloupců (projekce) - pro práci s více tabulkami - operace spojení Základní pojmy relační databázové teorie: - datové soubory chápány jako množiny - dvourozměrné tabulky = RELACE - jednotlivé řádky = n-tice sledované problematiky - jména sloupců = atributy (vlastnosti) - obor přípustných hodnot v sloupcích - doména - každá věta (record) = souhrn všech údajů o jednom objektu dané problémové domény - sloupce tabulky reprezentují jednotlivé vlastnosti (atributy) objektů - všechny záznamy v rámci 1 tabulky - stejná struktura - záznam - množina položek (pole - fields) = množina vlastnosti sledovaných objektů doprava - zvířata - zaměstnanci - zásoby - ZP - účetnictví - mzdy => vše sdílené databázemi DBS Podmínky relačnosti tabulky - všechny hodnoty v tabulce musí být elementární (nedělitelné) - pozice sloupců je nevýznamná (pořadí lze měnit) - data se neztrácí - pozice řádků je nevýznamná (pořadí lze měnit) - sloupce musí být homogenní (obor hodnot tohoto sloupce musí být stejný) - každý sloupce musí být jednoznačně pojmenován - každý sloupec musí být jednoznačně rozlišen (primární, sekundární klíč) Relační algebra - operace PROJEKCE - výběr požadovaných sloupců, výsledkem je relace o p-sloupcích vzniká z původní o n- sloupcích), p < n - operace SELEKCE - výběr požadovaných řádků, výsledkem je relace o r-řádcích vzniklá z původní o m-řádcích, r < m - operace spojení JOIN (na rovnost, nerovnost, vnější) - spojením dvou relací vzniká třetí, která obsahuje všechny kombinace vyhovující zadané podmínce Coddova pravidla pro relační model 1. pravidlo SŘDB - data spravována pouze pomocí relačních operací - 3 - Christy

2. pravidlo informační - data reprezentována na logické úrovni jako hodnoty relačních tabulkách 3. pravidlo přístupu - každý údaj logicky dosažitelný pomocí kombinace názvu tabulky, sloupce a hodnoty primárního klíče 4. pravidlo zpracovatelnosti neznámých hodnot - ke každé neznámé hodnotě lze dojít prostřednictvím jiným známých hodnot 5. pravidlo relačního katalogu - popis celé databáze je na logické úrovni reprezentována jako relační systémový katalog 6. pravidlo pro jazyk - pro komunikaci se SŘDB - definici dat (DDL) - integritní omezení (DCL) - manipulaci s daty (DML) 7. pravidlo pohledů - SŘDB musí umožňovat konstrukci pohledů 8. pravidlo operací - všechny relační operace pracují s tabulkami jako s celky 9. pravidlo fyzické a logické nezávislosti dat 10. pravidlo nezávislosti dat na integritních omezeních - výsledky operací musí být nezávislé na změnách IO Dotazovací jazyk SQL - příkazy pro definici dat - definice tabulky v SQL - CREATE TABLE <jméno-tabulky> - ALTER TABLE - DROP TABLE - help STARTUP - nápověda Vytvoření relace STUDENT student(cind, jmeno, bydliste, datnar, stip) CREATE TABLE student 2 (cind CHAR(6) NOT NULL, 3 jmeno VARCHAR(12), 4 bydliste VARCHAR(10), 5 datnar DATE, 6 stip NUMBER(4)); Tabulka vytvořena INSERT INTO student 2 VALUES ( 111/99, Karel Novák, Praha!, 10.1.1980,3500); 1 řádka vytvořena výpis obsahu relace STUDENT STUDENT - pouze studenty 3 ročníku -> STUDENT3 INSERT INTO student3 2 SELECT * FROM student 3 WHERE rocnik= 3 ; 2 řádek vytvořeno SELECT * FROM student3 Doplnění položky ROCNIK do relace STUDENT ALTER TABLE student ADD rocnik CHAR(1); Tabulka změněna - 4 - Christy

Výpis struktury tabulky DESCRIBE student; Modifikování položky BYDLIŠTĚ v relaci STUDENT ALTER TABLE student MODIFY bydliste VARCHAR2(15); Tabulka změněna DESCRIBE student; Oprava dat v položce STIPENDIUM v relaci STUDENT UPDATE student SET stip=1000 2 WHERE cind= 222/01 ; 1 řádka aktualizována Oprava dat v položce STIPENDIUM v relaci STUDENT UPDATE student SET stip=stip*2 2 WHERE ROCNIK>= # ; 2 řádek aktualizováno Přejmenování relace STUDENT na STUDENTI RENAME student TO studenti; Tabulka prejmenována SELECT * FROM studenti; Zrušení relace STUDENT - budou zrušeny i případné indexové soubory k dané relaci a budou nepoužitelné všechny pohledy a uložené dotazy týkající se této tabulky!!! DROP TABLE student; Tabulka zrušena Přejmenování sloupce STIP na STIPENDIUM ALTER TABLE student ADD stipendium NUMBER(4); Tabulka změněna DESC student; - nyní je třeba zkopírovat hodnoty z původního sloupce do nového sloupce za všechny řádky UPDATE student SET stipendium=stip; 4 řádek aktualizováno - jako poslední krok je nutno zrušit původní sloupec, tj. STIP ALTER TABLE student DROP COLUMN stip; Tabulka změněna Zrušení záznamu v relaci STUDENT DELETE FROM student WHERE cind= 444/02 ; 1 řádka vymazána - 5 - Christy

Výhody požívání jazyk SQL - snížení ceny na zaškolení pracovníků - tvůrci a uživatelé aplikací mohou snadněji přecházet od jednoho databázového prostředku k jinému - přenositelnost vytvořené aplikace - aplikace vytvořená v konkrétním databázovém prostředku může být provozovaná v jiném prostředku beze změny, což umožňuje odladit danou aplikaci na PC a výsledek pak přenést na vyšší kategorii počítačů - délka života aplikace se zvyšuje - v případě nutnosti je možno přejít na jiný databázový prostředek a prodloužit tak životnost dané aplikace - společný přístup k datům v heterogenním prostředí - distribuované databáze provozované pod různým SŘDB Příkazy jazyka pro manipulaci dat DML - SELECT - základem dotazovacího jazyk SQL je příkaz SELECT Význam jednotlivých klauzulí příkazu SELECT GROUP BY - obsahuje definice výrazů, podle kterých budou řádky seskupeny HAVING - omezuje souhrnné řádky definované pomocí GROUP BY, která splňují zadanou podmínku ORDER BY - umožňuje setřídění řádků ve výsledku dle zadaných kritérií - klíčové slovo DISTINCT odstraňuje duplicitní řádky výběru PROJEKCE - výběr sloupců SELECT jmeno, bydliste FROM student; Modifikovaný text v záhlaví vybraných sloupců SELECT jmeno AS Jméno studenta FROM student; - problém činí délka vybíraného sloupce, která současně vymezuje délku nového (výstižnějšího) ALIAS pojmenování Výpis modifikovaných (agregovaných) údajů SELECT jmeno, bydliste, stipendium*1.2 2 AS Stipendium v SK FROM student; SELEKCE - výběr řádků (specifikováním podmínky) SELECT * FROM student 2 WHERE stipendium>2000; SELEKCE - odstranění duplicitních řádků SELECT bydliste FROM student; SELECT DISTINCT bydliste FROM student; SELEKCE - predikáty ve výběrové podmínce SELECT * FROM student WHERE stipendium 2 BETWEEN 5000 AND 7000; Výběry na podkladě testu náležitosti do množiny hodnot SELEKCT jmeno, bydliste FROM student 2 WHERE bydliste IN 3 ( Praha 1, Praha 3, Praha 9 ); Výběry na podkladě částečné specifikace textu % (procento) - specifikuje žádný, jeden nebo několik libovolných znaků (obdoba hvězdičky v MS-DOS) _ (podtržítko) - vyjdřuje právě jeden libovolný znak (obdoba otazníku v MS-DOS) SELECT jmeno FROM student 2 WHERE jmeno LIKE K% ; Výběry na podkladě částečné specifikace textu SELECT jmeno FROM student 2 WHERE jmeno LIKE %N% OR jmeno LIKE %D% ; Výběr s relačním operáteorem pro nerovnost (!=) SELECT * FROM student WHERE ročnik!= 3 ; - 6 - Christy

Výběry na podkladě hodnoty datumu SELECT * FROM student WHERE (sysdate-datnar)>7300; - každé smysluplné datum si přepočítává na pořadová čísla od začátku n. l. Třídění výstupů SELECT * FROM student ORDER BY bydliste ASC,rocnik DESC; Práce s více tabulkami - v tomto případě jde o operaci relační algebry - spojení (tj. spojení těch záznamů, které spolu korespontují ) - pokud vybíráme stejnojmenné sloupce z těchto tabulek, je nutno použít úplnou identifikaci položek v tzv. tečkové notaci, tj. <jméno-tabulky>.<jméno-sloupce>. SELECT * FROM prospech; cind datumzk cpred znamka student spojení prospech jmeno, cpred, datumzk, znamka SELECT jmeno AS Jméno studenta, 2 datumzk AS Datum zkoušky, 3 cpred AD Číslo předmětu, 4 znamka 5 FROM student, prospech 6 WHERE student.cind=prospech.cind; STUDENT: cind jmeno bydliste datnar 111/99 Karel Novák Praha 1 10.01.80 222/01 Jiří Dvořák Praha 9 24.07.84 333/01 Karel Franěk Kolín 13 444/02 Josef Havlát Praha 1 PROSPECH: cind datumzk cpred znam 111/99 222/01 444/02 výsledek: jméno suden datum zk číslo předm znamka Karel Novák Jiří Dvořák Josef Havlát Postup zpracování jednoduchého dotazu SELECT - relační databázový stroj ORACLE vyhodnocuje dotaz SELECT v následujícím pořadí: 1. zpracuje klauzuli FROM, tj. výběr požadované zdrojové tabulky či tabulek; 2. zpracuje klauzuli WHERE, tj. jsou procházeny jednotivé řádky (záznamy) jeden za druhým a vybírány pouze ty, které splňují výběrovou podmínku 3. realizuje klauzuli SELECT, tj. výběr požadovaných sloupců z tabulky, je-li uvedena klauzule DISTINCT, budou odstraněny duplicitní řádky 4. byl-li spoecifikován požadavek setřídění výběru, bude vykonána klauzule ORDER BY Práce s více tabulkami SELECT * FROM prospech; SELECT * FROM predmety; SELECT jmeno,datumzk,prospech.cpred,nazev,znamka 2 FROM student,prospech,predmety 3 WHERE student.cind=prospech.cind AND prospech.cpred=predmety.cpred; - 7 - Christy

SELECT jmeno,datumzk,prospech,cpred,nazev,katedra,znamka 2 FROM student,prospech,predmety 3 WHERE student.cind=prospech.cind 4 AND prospech.cpred=premety.cpred 5 AND katedra= KII ; Práce se skupinami příkazů - přehled nejpoužívanějších funkcí: COUNT(*) - počet řádků ve skupině COUNT(<jmeno-sloupce>) - počet hodnot ve sloupci - počítají se pouze platné hodnoty (nikoliv NULL) SUM(<jméno-sloupce>) - součet hodnot v specifikovaném numerickém poli MIN(<jméno-sloupce>) - nejmenší hodnota pole ve sloupci MAX(<jméno-sloupce>) - největší hodnota ve sloupci AVG(<jméno-sloupce>) - průměr. hodnota polí v čísel. sloupci Zjištění četnosti v rámci stanoveného kritéria SELECT COUNT(*) AS Počet studentů z Prahy 1 2 FROM student 3 WHERE bydliste= Praha 1 ; SELECT * FROM prospech; SELECT COUNT(DISTINCT cind) FROM prospech; SELECT rocnik,count(*) FROM student 2 GROUP BY rocnik; Zjištění maximálních hodnot SELECT MAX(stip) FROM student; Zjištění prům. stipendií za jednotlivé ročníky SELECT rocnik, AVG(stip) FROM student GROUP BY rocnik; SELECT rocnik, AVG(stip) FROM STUDENT WHERE stip>0 GROUP BY rocnik; Zjištění jména studenta s maximálním stipendiem CHYBNĚ: SELECT jmeno, max(stip) FROM student; SELECT jmeno,stip FROM student 2 WHERE stip=(select max(stip) FROM student); PROČ? 1. 2. zjištění jména pro stip=max(stip) max(stip) Zjištění jména studenta, který je nejstarší SELECT jmeno,datnar FROM student 2 WHERE datnar=(select min(datnar) FROM student); Pohledy (view) - k definování externí úrovně popisu dat slouží v jazyce SQL tzv. pohledy (view) - pohled je tabulka, která není fyzicky uložená v databáz, ale vzniká vždy při použití daného pohledu jako výsledek určitého příkazu SELECT - pohledy se používají pro zpřístupnění jen určité - podle toho, z kolika tabulek pohledy vznikají, lze je rozdělit na: - jednoduché pohledy - jsou vytvořeny z údajů jedné tabulky a neobsahují žádné funkce či skupiny dat - komplextní pohledy - jsou vytvořeny z údajů více tabulek a mohou obsahovat funkce a skupiny dat definice pohledu: - 8 - Christy

CREATE VIEW <jméno pohledu> [<seznam nových jmen sloupců>] AS <příkaz-select> zrušení pohledu: DROP VIEW <jméno_pohledu> Vytvoření pohledu STIPENDISTE CREATE VIEW stipendiste 2 (Cindex,Jmeno_stud,Vyse_stipendia) AS 3 SELECT cind,jmeno,stip 4 FROM student 5 WHERE stip>0; SELECT * FROM stipendiste; UPDATE student SET stip=stip/2 2 WHERE cind= 111/99 ; SELECT * FROM stipendiste; Zrušení pohledu STIPENDISTE DROP VIEW stipendiste: Databázové systémy I Používání SQL přináší tyto výhody: - snížení ceny na zaškolení pracovníků - vůrci a uživatelé aplikací mohou snadněji přecházet od jednoho databázového prostředku k jinému - přenositelnost vytvořené aplikace - aplikace vytvořená v konkrétním databázovém prostředku může být provozovaná v jiném prostředku beze změny, což umožňuje odladit danou aplikaci na PC a výsledek pak přenést na vyšší kategorii počítačů - délka života aplikace se zvyšuje - v případě nutnosti je možno přejít na jiný databázový prostředek a prodloužit tak životnost dané aplikace - společný přístup k datům v heterogenním prostředí - distribuované databáze provozované pod různým SŘDB Zjištění integrity dat - relační databázový stroj musí obsahovat mechanismy k zabezpečení báze dat pře případným úmyslným i neúmyslným poškozením a před zneužitím dat - takováto ochrana báze dat je realizována jako zajištění integrity báze dat. Při realizaci databázového systému je nutno zachytit všechna pravidla, pomocí kterých databázový stroj zajistí správnost a věrohodnost uložených dat = tzv. datovou integritu - tato pravidla vymezující nezbytnou korektnost uložených dat a rozhodující o proveditelnosti aktualizačních operací = tzv. integritní omezení (integrity constraints) Zajištění integrity dat - v klasických databázových systémech byla tato pravidla součástí databázových aplikací. Nevýhodné pro client-server architektury databázových systémů Důvody: - opakované programování integritních algoritmů = sít nadbytečně zatěžující komunikace mezi aplikací a serverem při jejich provádění Závěr: - integrita databáze musí být převážně garantována prostředky databázového server, tj. vlastní realizace pravidel garantujících Druhy integritních omezení Entitní integrita: tj. dodržení jednoznačné identifikace každého řádku dotyčné relační tabulky. Každá relační tabulka proto musí mít určen primární klíč (primary key) jako minimální množinu atributů, jejichž hodnoty společně identifikují každý řádek této tabulky - zabezpečení entitní integrity databáze znamená nepřipustit uložení žádného řádku, ve kterém je hodnota položky představující klíč či některou z jeho komponent nenaplněná nebo vzhledem k řádkům již uloženým duplicitní Realizace entitní integrity CERATE TABLE prednasejici - 9 - Christy

2 (evcped CHAR(3) NOT NULL PRIMARY KEY, 3 jmeno CHAR(12) 4 datnar DATE); Databázové systémy I INSERT INTO prednasejici VALUES( 19e, Karel Novák, 25.3.1951 ); INSERT INTO prednasejici VALUES( 23E, Josef Malík, 13.4.1963 ); INSERT INTO prednasejici VALUES( 19E, Martin Kalaš, 13.4.1963 ); Doménová integrita Doména = množina všech přípustných hodnot určitého daného atributu (sloupce) relační tabulky - omezení doménové integrity je realizováno pravidlem definujícím tyto platné hodnoty, přičemž doména není totéž co datový typ daného atributu. K zachování takovéto doménové integrity databáze je nutné zabezpečit, aby každá hodnota obsažená v databázi byla pouze z množiny hodnot pro daný sloupec přípustných. Přípustnost hodnot atributu může být dokonce dána hodnotami jiného atributu i z jiných tabulek databáze Zajištění doménové integrity CERATE TABLE prednasejici 2 (evcped CHAR(3) NOT NULL PRIMARY KEY, 3 jmeno CHAR(12), 4 datnar DATE, 5 plat number(5) CHECK (plat BETWEEN 7000 AND 50000)); INSERT INTO prednasejici VALUES( 19e, Karel Novák, 25.3.1951,7000); INSERT INTO prednasejici VALUES( 19e, Josef Malík, 25.3.1951,55000); Referenční integrita - referenční integrita databáze garantuje korektnost vztahů mezi logicky souvisejícími tabulkami. Vazby mezi logicky nadřízenými a podřízenými záznamy v databázi jsou vytvářeny doplněním jednoznačné identifikace řádků logicky nadřízené tabulky do logicky podřízené tabulky pomocí tzv. cizího klíče (foreign key) - cizím klíčem v dokumentujícím příkladu je položka CPED v tabulce PREDMETY. Doplnění primárního klíče tabulky přednášejících do tabulky předmětů je realizací vztahu vyjadřujícího, který učitel garantuje jaké předměty Realizace referenční integrity CREATE TABLE predmety 2 (cpred CHAR(5), 3 nazev CHAR(15), 4 katedra CHAR(3), 5 evcped CHAR(3), 6 FOREIGN KEY (evcped) REFERENCES prednasejici(evcped)); INSERT INTO predmety VALUES ( E1210, Expertní systémy Realizace integritních omezení - deklarativní realizace - je explicitně definována ( deklarováno ) jako součást databázového schématu a představuje způsob specifikace IO jako přímé součásti definice struktury databáze, tj. rozšíření příkazu definujícího struturu relační tabulky o klauzule umožňující deklaraci jednotlivých omezení - procedurální realizace - je založena na využití databázových procedur, které jsou realizovány prostřednictvím definic speciálních procedur, tzv. database triggers (spouští), které se vyvolávají ( spouštějí ) při každém vkládání, aktualizaci nebo odstanění záznamu - akce nutné k udržení integrity databáze jsou v tomo 1. zakážu takovýto předmět nabízet 2. kaskádovitě dovedu změny z jedné tabulky do druhé - změny promítnu do podřízených tabulek 3. pomocí null hodnot (číslo garantujícího pedagoga budou samé nuly) Datové modelování Coddova pravidla pro relační model 11. Pravidlo nezávislosti dat na distribuci - výsledek operací nesmí být ovlivněny konkrétním umístěním dat v distribuovaných databázích - 10 - Christy

12. Pravidlo nenarušitelnosti SŘDB - žádný uživatel nesmí obcházet nebo narušovat rozhraní SŘDB Fyzická nezávislost dat - aplikace musí být izolovány od změn fyzické datové struktury, změna aplikace nesmí způsobit nutnou změnu paměového uložení struktur a opačně Logická nezávislost dat - aplikační pohled je izolován od změn ve schématu databáze (změna struktury nevynucuje změnu programu) Třístupnová architektura báze dat 3 úrovně abstrakce při pohledu na evidovaná data: - fyzická úroveň - nejnižší úroveň, popisuje jak jsou data fyzicky uloženy, pracuje s ní programátor SŘDB - konceptuální úroveň - popisuje strukturu dat DB a jejich vzájemné vztahy, tzv. schéma - modeluje reálný svět a vytváří jeho interní model pomocí logické a fyzické struktury dat, pracuje s ní tvůrce DB, správce DB - uživatelská úroveň - popisuje pro konkrétního uživatele pouze tu část DB, na kterou má pravomoc, tzv. subschéma, jejich počet = počet uživatelů Datový model - souhrn pravidel pro reprezentaci logické organizace dat v databázi Datové modelování Vícestupňová architektura DBS: - úroveň: externí schéma - popisuje datové struktury pro koncového uživatele (pohledy) = podmnožina konceptuálního schéma) - úroveň: konceptuální schéma - popisuje jednotlivé datové struktury a jejich vzájemné vazby - model - úroveň: interní schéma - vlstní popis implementace datových sturkur v implementačním prostředí Konceptuální datové modelování (Chenův E-R model): - konceptuální datový model - struktura dat obecně bez ohledu na DBS - logický datový model - konkretizuje model na daný DBS - datový model v definičním jazyku - výsledný pro rutinní zpracování Principy E-E modelování: - orientace na objekty - pracujeme s objekty RIDIC, VOZIDLO nikoliv s identifikacemi - funkcionální podstata vztahů - vztahy mezi objekty jsou definovány jako funkce, např. MA_PRIDELEN - ISA-hierarchie - pro práci s nadtypy a podtypy - hierarchický mechanismus pro konstrukci objektů Úrovně objektů v E-R modelování STUDENT Entitní množina STUDENT atribut Cislo_indexu Jmeno Rocnik Datum_nar ABSOLVOVAL vztahová množina Způsoby konstruování datového modelu - "zdola nahoru" - východiskem je univerzální rleace (U) obsahující všechny atribut řešené problémové domény, následuje specifikování funkčních závislostí mezi jednotlivými atributy. Např. U(Cislo_indexu, Jmeno, Rocnik, Datum_nar, Znamka, Katedra, Cislo_ped, Jmeno_ped, Datum_zkousky, Cislo_predmetu, Nazev_predmetu, Fakulta...) Cislo_indexu -> Jmeno, Rocnik, Datum_nar Cislo_predmetu -> Nazev_predmetu Cislo_indexu, Cislo_predmetu -> Datum_zkousky, Znamka, Cislo_pedagoga - 11 - Christy

Cislo_ped -> Jmeno_ped - tento postup přímo přechází na logickou úroveň -> pouze pro vytváření modelů s max. 25 atributy - "zhora dolu" - nejprve jsou specifikovány struktury entitních množin a následně funkční závislosti mezi nimi Jenotlivé kroky modelování "shora dolů": 1. krok: Specifikace entitních množin - východiskem je verbální popis STUDENT PEDAGOG KATEDRA PŘEDMĚT - specifikovaným objektům (entitním množinám) se přiděli vhodné jméno 2. krok: Specifikace vztahů - důležitá kardinalita vztahu 1:1 1:N M:N Povinnost vztahu: přerušovaná spojnice - nepovinnost vztahu STUDENT ABSOLVUJE PEDAGOG GARANTUJE PŘEDMĚT JE_ČLENEM KATEDRA 3. krok: přiřazení primárních klíčů Cislo_ind STUDENT ABSOLVUJE Cislo_ped Cislo_predmetu PEDAGOG GARANTUJE PŘEDMĚT Cislo_katedry JE_ČLENEM KATEDRA 4. krok: Transformace modelu do logické struktury - konceptuální datový model je rozpracován do logické struktury "předběžných" relací. Tyto relace ovlivněy kardinalitou vztahů: - 12 - Christy

- vztah 1:1 - je-li účast obou entitních množin ve vztahu povinná, postačí pro realizaci pouze jedna relace, jinak NULL hodnoty v primárních klíčích - vztah 1:N - nejčastější, řešení minimálně 2 relacemi - vztah M:N 5. krok: Doplnění zbývajících atributů do předběžných relací Cislo_ind STUDENT Rocnik Jméno_studenta Datum_zkoušky ABSOLVUJE Známka Cislo_ped Jméno_ped Cislo_predmetu Název_predm PEDAGOG GARANTUJE JE_ČLENEM Katedra PŘEDMĚT Cislo_katedry KATEDRA Fakulta Od Do 6. krok: Prověření modelu z hlediska normalizace - strukturální správnost konzistence datového modelu CÍLE DATOVÉ NORMALIZACE: - umožnění reprezentace každé relace v DB - optimalizace algoritmů vyhledávání - zjednodušení aktualizace a rušení vět = postupný reverzibilní proces nahrazování dané množiny relací relacemi, které mají jednodušší strukturu Vlastnosti datové normalizace: - umožňuje ověření správnosti navrženého modelu - slouží k dekompozičnímu návrhu tabulek s minimální redundancí dat - není deterministická (více správných řešení) - lze ji kombinovat s ostatními technikami (dekompozice a syntéza) Způsoby konstruování datového modelu Chybný návrh: Evidence prospěchu Jméno žáka Datum Zkoušení Známka J. Dvořák 10.9,15.10,29.10 1,3,3 Chybný návrh: Jméno_žáka Datum_Zk1 Známka1.... Datum_Zk n Známka n J. Dvořák 10.9. 1.... 29.10 3 Způsoby konstruování datového modelu - datová normalizace 1 NF 2 NF 3 NF Přínosy datové normalizace: - zabránění vzniku duplicitní dat (redundancí) - šetří kapacitu média - zjednodušuje aktualizaci a vyhledávání dat Dekomponované relace možno opět funkčně zvolit (operace JOIN) - 13 - Christy

1. NF: relace nesmí obsahovat násobná data Prospěch (Cislo_stud, Jmeno, Adresa, Datum_zkousky, Znamka) 0001A Dvořák Kolín 22 10.9.02 4 0002A Kalaš Čáslav 5 10.9.02 1 0001A Dvořák Kolín 22 17.9.02 2 0002A Kalaš Čáslav 5 21.9.02 2 0001A Dvořák Kolín 22 1.10.02 2 Po normalizaci: STUDENTI Cislo_stud Jmeno Adresa ZNÁMKY Cislo_stud Datum_zkousky Známka 2. NF: Všechna neklíčová data relace musí funkčně záviset na celém primárním klíči Cislo_stud Cpredm Datum_zkousky Znamka Název_predm Pedagog Po normalizaci: ZKOUSKY Cislo_stud C_predm Datum_zkousky Znamka Pedagog PREDMETY C_predm Nazev_predm Funkční závislost: Datový prvek B záznamu je funkčně závislý -> ke každé hodnotě A náleží nejvýše jedna hodnota B - > A identifikuje B Spojení tabulky sama se sebeou SELECT a.jmeno, b.jmeno 2 FROM student a, student b 3 WHERE a.jmeno < b.jmeno Vnější spojení tabulek - vnější spojování tabulek se používá i pro výpis, záznamů, které nestpňují spojovací kriterium, symbolem operátora je v tomto případě (+) - operátor se umístí na tu stranu příslušné tabulky, kde mohou potencionálně chybět informace SELECT student.cind, jmeno, dat.stzkousky, znamka 2 FROM student, statnice 3 WHERE student.cind = statnice.cind (+); SELECT student.cind, jmeno FROM student 2 WHERE student.cind NOT IN 3 (SELECT statnice.cind FROM statnice); Způsoby konstruování datového modelu - datová normalizace 3. NF - všechna neklíčová data musí záviset pouze na klíčových donotách a nikoliv mezi sebou Příklad: Cislo_pedagoga Jméno_pedagoga Datnar Cislo_kvalifikace Nazve_kvalifikace Pedagog Cislo_pedagoga Jméno_pedagoga Datnar Kvalifikace Cislo_kvalifikace Nazev_kvalifikace - 14 - Christy

7. krok: přiřazení domén jednotlivým atributům - v rámci tohoto kroku je třeba stanovit charakteristiky jednotlivých atributů - tj. domén: - datový typ - délka - rozsah - přípustné hodnoty - formát (maska) - jedinečnost (primární klíč) - přípustnost "NULL" hodnoty Datový typ: CHAR a VARCHAR2 - datové typy CHAR a VARCHAR2 - znakové - mohou obsahovat data skládající se z písmen, číslic a jiných znaků CHAR (délka) - pro uložení řeězce o pevné délce, paramter délka je povinný <1;2000> VARCHAR2 (délka) - pro uložení řetězce proměnné délky, paramter délka je povinný <1;4000> Příklad: Město = Kolín MĚSTO CHAR(10) 1 2 3 4 5 6 7 8 9 10 K o l í n MĚSTO VARCHAR2(10) K o l í n 8. krok: stanovení pravidel pro rušení, vkládání a modifikování dat - jde o upřesnění vazeb mezi jednotlivými atributy navrženého modelu (především podmínky) 9. krok: analýza budoucího vývoje modelu - domény - posouzení předpokládaných změn domén, primárních klíčů kardinality vztahu, integritních omezení atd. závěr: nutno koordinovat týmovou práci, vyloučit intuitivní postupy - důsledné dodržení postupu tvorby logického modelu minimalizuje výskyt nenormalizovaných relací a s tím spojených problémů 5. krok: Doplnění zbývajících atributů do předběžných relací Cislo_ind STUDENT Rocnik Jméno_studenta Datum_zkoušky Známka Cislo-ind ABSOLVUJE Cislo_ped Jméno_ped Cislo_predmetu Název_predm PEDAGOG GARANTUJE JE_ČLENEM Katedra PŘEDMĚT Cislo_katedry KATEDRA Fakulta Od Do FAKULTA - 15 - Christy

Cislo_ind STUDENT Rocnik Jméno_studenta Datum_zkoušky ABSOLVUJE Známka Cislo_ped Jméno_ped Cislo_predmetu Název_predm PEDAGOG GARANTUJE JE_ČLENEM Katedra PŘEDMĚT Cislo_katedry KATEDRA Fakulta Od Do - přidám Cislo_ped k PŘEDMĚT Stuktury výsledných tabulek: PEDAGOG (Cislo-ped, Jméno_ped) Koncepce SŘDB Oracle - databázová technologie představuje unifikovaný soubor pojmů, prostředků a technik pro vytváření informačních systémů - hlavní nástroj SŘDB Oracle je relační db stroj - zajišťuje správu všech dat uložených v databázi - relační db stroj pracuje na počítači řízeném hostitelským OS, v rámci počítačové sítě se označuje jako hostitelský uzel Struktura databáze: - soubory s kódem programu - hostitelské db soubory - protokolační soubory - pro obnovení databáze po havárii - řídící soubory - malé binární soubory spjaté s danou databází s důležitými informacemi (např. informace o mezivýsledcích sejmutých v tzv. bodech návratu) Vnitřní členění databáze: - logickou strukturu databáze popisuje systémový katalog, tvz. slovník dat Databáze se člení na: - datový segment - segment pro dočasné objekty - indexový segment - rollback segment - pro každou probíhající transakci se v pracovní oblasti těchto segmentů vede deník transakcí Segmenty se člení na oblasti skládající se z datových bloků s následující strukturou: - záhlaví a adresář záznamů nacházející se v daném bloku - volný prostor a prostor obsazený záznamy Pohledy do slovníku dat: - běžnému uživateli nejsou k dispozici tabulky se systémovými informacemi, ale pouze pohledy na ně. K tomu lze použít standardní příkazy: Např: Výpis struktury všech objektů, které vlastní uživatel DESC USER OBJECTS Např: Výpis struktury všech objektů všech uživatelů: DESC ALL OBJECTS - 16 - Christy

Např. Výpis struktury tabulky STUDENT: DESC ALL OBJECTS Datové typy ORACLE: - CHAR(n) - VARCHAR(a) - NUMBER(p,s) - DATE - (DD-MON-YY např. 10-JAN-03) - LONG - řetězec znaků proměnné délky 1-2 GB - RAW(ln) - binární data o proměnné délce týkající konkrétního záznamu tabulky - LONGRAW - shodný význam jako prodchozí, délka až 2 GB - ROWID - binární údaj (pseudosloupec je součástí tabulky) obsahuje informace o daném DB souboru, o bloku v rámci tohoto souboru a o záznamu v rámci tohoto SQL*PLUS: - prostředek pro interaktivní nebo dávkovou komunikaci koncového uživatele s db strojem ORACLE Příkaz lze zadávat: - v základním režimu - ukončovat středníkem, je ukládán do vyrovnávací paměti - tzv. příkazový buffer - řídící příkaz - pro řízení SQL*PLUS a formátování odpovědí na dotazy nejčastější: INPUT - převádí dialog do režimu vkládání skupiny řádků do bufferu - bloky PL/SQL - celý blok se ukládá do příkazového bufferu a režim vkládání se ukončuje tečkou nebo prázdným řádkem Řízení dialogu uživatele s SQL*PLUS: SET PAGESIZE 24 SET PAUSE ON - odezvy budou členěny po obrazovkách s 24 stránkami a zobrazování bude zastavovat po obrazovkách a čekat na stisk libovolné klávesy CLEAR BUFFER INPUT 1 SELECT * FROM prednasejic;i 2 RUN 1 SELECT * FROM prednasejic; SQL*PLUS: měření doby provádění příkazu TIMING START SELECT * FROM prednasejici; TIMING STOP SQL*PLUS: editace obsahu příkazového řádku LIST - vypíše obsah bufferu, přičemž aktuální řádek je předznačen hvězdičkou LIST CLEAR BUFFER - vymaže veškerý obsah příkazového bufferu CLEAR BUFFER LIST DEL - vymaže aktuální řádek LIST DEL LIST RUN CHANGE /starý/nový - v aktuálním řádku bude nalezen první výskyt "starého" zankového řetězce a nahrazen "novým" znakovým řetezcem LIST CHANGE /Praha 1/Praha 9 RUN - 17 - Christy

INPUT textový řetězec - vloží za aktuální řádek nový řádek LIST INPUT WHERE rocnik='3' RUN / - odešle obsah příkazového bufferu ke zpracování LIST / Databázové systémy I SAVE jméno souboru - uloží obsah bufferu do textového souboru zadaného jména. pokud na disku stejnojmenný soubor již existuje, lze jej přepsat atributem REPALACE příkazu SAVE CLEAR BUFFER INPUT 1 SELECT * FROM predmety 2 SAVE vypis REPLACE START vypis SQL*PLUS: Formátování výstupů - způsob podtržení - změna tvaru podtržení pomocí požadovaného znaku lze realizovat příkazem SET UNDERLINE znak SET UNDERLINE = SQL*PLUS: Tvar výstupních sestav TTITLE CENTER 'Vypis studentů' BTITLE CENTER 'Určeno pro proděkany fakulty' - platnost příkazů TTITLE a BTITLE je nutno ukončit příkazem: TTITLE OFF nebo BTTITLE OFF. V opačném případě se jejich funkčnost přenáší do dalších akcí SQL*PLUS: Formátování sloupců SHOW parametr - příkaz pro zobrazení aktuální hodnoty systémové proměnné: SHOW BTITLE SELECT * FROM predmety; CLEAR BUFFER INPUT 1 COLUMN nazev HEADING "Název předmětu" 2 COLUMN katedra HEADING "Garantující katedra" 3 SELECT nazev, katedra FROM predmety 4 SAVE vypis1 START vpis1 SQL*PLUS: editace příkazového souboru START vypis LIST GET vypis LIST 1 CHANGE /zamestnance/pracovnika/ SAVE vypis REPLACE START vypis SQL*PLUS: formátování výstupů CLEAR BUFFER INPUT 1 COLUMN jmeno HEADING 'Jméno přednášeícího' FORMAT A20 2 COLUMN plat HEADING 'Výše platu' FORMAT 999999,99 3 TTITLE 'Výpis platů přednášejících ****************************** 4 SELECT jmeno, plat FROM prednasejici - 18 - Christy

5 SAVE vypisplatu REPLACE START vypisplatu CLEAR COLUMNS; TTITLE OFF; SELECT * FROM prednasejici; SQL*PLUS: JOIN relace sama na sebe SELECT * FROM prednasejici; Příklad: Vypište všechny možné dvojice přednášejících pro možný zástup v případě absence SELECT a.jmeno AS "1. přednášejicí", b.jmeno AS "2. přednášející" 2 FROM prednasejici a, prednasejici b 3 WHERE a.jmeno>b.jemno; SQL*PLUS: nejčastější chyby v testu 1) Vnořený příkaz: CHYBNĚ: SELECT jmeno,min(stip) FROM student; 1) Jméno studenta s nejnižším stipendiem SELECT jmeno,stip FROM student 1 WHERE stip=(select min(stip) FROM student); PROČ: 2. 1. zjištění jména pro stip=min(stip) min(stip) 2) UPDATE UPDATE student SET stip=stip/2 1 WHERE stip>5000; CHYBNĚ: UPDATE student SET stip/2 1 WHERE stip>5000; 3) Pohled ze dvou tabulek PEDAGOG(Cped,Jmeno,Datnar,Katedra) PREDMET(Kodpred,Nazev,Cped) CREATE VIEW vypis 1 (Jmeno,Datnar,Nazev) AS 2 SELECT jmeno,datnar,nazev 3 FROM pedagog,predmet 4 WHERE predagog.cped=předmět.cped; SELECT * FROM vypis; CHYBNĚ: CREATE VIEW vypis 1 (Jmeno,Datnar,Nazev) AS 2 SELECT jmeno,datnar 3 FROM pedagog,predmet 4 WHERE pedagog.cped=předmět.cped; 4) Počty předmětů garantované jednotlivými pedagogy, kteří garantují více jak 3 předměty PEDAGOG(Cped,Jmeno,Datnar,Katedra) PREDMET(Kodpred,Nazev,Cped) SELECT cped,count(*) FROM predmet 1 GROUP BY cped HAVING count(*)>3; CHYBNĚ: SELECT cped,count(*) FROM predmet 1 GROUP BY cped WHERE count(*)>3; SELECT cped,count(*) FROM predmet 1 GROUP BY jmeno WHERE - 19 - Christy

5) Zajištění referenční integrity STUDENT(Cind,Jmeno,obor,datumvolby,koddp) DIPLPRACE(Koddp,Nazev) CREATE TABLE student 1 (cind CHAR(4) PRIMARY KEY, 2 jmeno CHAR(15), 3 obor CHAR(3), 4 datumvolby DATE, 5 koddp CHAR(3), 6 FOREIGN KEY (koddp) REFERENCES diplprace(koddp)); CHYBNĚ: CREATE TABLE student 1 (cind CHAR(4) PRIMARY KEY, 2 jmeno CHAR(15), 3 obor CHAR(3), 4 datumvolby DATE, 5 FOREIGN KEY (koddp) REFERENCES diplprace(koddp)); také chybějící primární klíč SQL*PLUS: příkazové dávky Příkazové soubory a dávkové zpracování příkazový buffer může obsahovat pouze jeden (poslední příkaz) vhodnější: příkazový soubor, lze jej založit: - v základním režimu zadat konkrétní SQL příkaz a pak uložit obsah bufferu příkazem SAVE - v základním režimu zadat příkaz INPUT (přepnutí do režimu vkládání příkazů) a ukončit vkládání lze odesláním prázdného řádku Neopomenout: - vyprázdnit buffer (CLEAR BUFFER) - překontrolovat momentální stav SET - platnost TTITLE a BTITLE ukončit - stav SHOW parametr (TTITLE OFF nebo BTITLE OFF) SQL*PLUS: návrat k uložené příkazové dávce GET vypisplatu možno editovat (CHANGE) možno startovat SQL*PLUS: parametrická dávka - sada příkazů pro opakované použití CLEAR BUFFER INPUT 1 DEFINE titul1='přehled PŘEDNÁŠEJÍCÍCH ZA JEDNOTLIVÉ KATEDRY' 2 DEFINE titul2='======================================' 3 TTITLE LEFT titul1 RIGHT 'Strana: ' SQL.PNO SKIP1 LEFT titul2 4 SET UNDERLINE * 5 COLUMN jmeno HEADING 'Jméno predasejiciho' FORMAT A20 6 COLUMN datnar HEADING 'Datum narozeni' FORMAT A15 7 COLUMN katedra HEADING 'Název katedry' FORMAT A15 8 PROMPT Zadej název požadované katedry 9 ACCEPT pozadkat CHAR 10 SELECT jmeno, datnar, katedra FROM prednasejici 11 WHERE katedra=&pozadkat 12 SAVE vypiskated REPLACE - spuštění parametrické dávky s parametrem KII START vypiskated 'KII' - spuštění parametrické dávky s parametrem KIT START vypiskated 'KIT' - 20 - Christy