Similar presentations:
Relační databázové systémy
1. Relační databázové systémy
VOSTROVSKÝ Václav: Databázovésystémy, Databáze
Česká zemědělská univerzita Praha
Konzultační hodiny: středa 13.30-14.30
Tel: 234 382 039
2. Absolvování předmětu
Garant předmětu: Doc. Ing. Vostrovský Václav, Ph.D.([email protected]) PEF 4.patro, č. 416
CVIČENÍ: docházka minimálně 75%
(DO ZAPOČTENÉ DOCHÁZKY SE NEBUDE
POČÍTAT NAHRAZOVÁNÍ CVIČENÍ V JINÝ
TERMÍN!!)
1 test (normalizace, datové modelování a SQL):
(max 10 bodů, min 6)
pouze 1 oprava (např. pokud je test ohodnocen
3 body a oprava 9 bodů – celkem z testu: (3+9)/2=6 bodů
ZKOUŠKA: písemná část (minimum je 60%) + ústní
dozkoušení (SQL a relačně db teorie)
Bude kladen důraz na porozumění problematice
2
(tj. co, kdy, kde a proč).
3. Náplň přednášek předmětu
o Základní terminologie relačně DB technologieo Dotazovací jazyk SQL
o Přístupy k datovému modelování
o Datová normalizace
o Datová integrita
o Datové transakce
o Oprávnění a práva přístupu
o Příkazové dávky
Jednotlivá témata budou procvičována v prostředí
SŘBD ORACLE
3
4. Nainstalování platformy LiveSQL.ORACLE
Příkazy SQL budou editovány a následně spouštěny na platforměLiveSQL.ORACLE:
(https://livesql.oracle.com/apex/f?p=590:1:10828164077919::NO )
Je nutno se zaevidovat (vytvořit si účet):
4
5. Nainstalování platformy LiveSQL.ORACLE
56.
67. Závažnost relačně DB technologie
Registrační značka nesouhlasila ve 21 000případech
Někteří registrovaní měli na sebe psaná auta,
která nikdy neviděli
Někteří klienti zjistili, že dle údajů v CRV nevlastní
dotyčný osobní vůz, ale např. tahač letadel.
V CRV jsou evidována vozidla, která nemají žádného
majitele
U jednoho vozidla je evidováno více majitelů
MD nemůže zveřejnit architekturu CRV, neboť jeho
zveřejnění by mohlo vést k pokusům o jeho napadení
Lze předpokládat, že výkonnost CRV po napojení na
zahraniční DB ještě více poklesne (nyní je 25%
oproti původnímu řešení)
Celkový náklad na aplikaci CRV pro ČR: 427 000 000 Kč
7
8. 1. přednáška: Základy relačně databázové technologie
9. Přístupy ke zpracování dat:
Členění dosavadních přístupů ke zpracováníhromadných dat:
o Konvenční přístupy:
• agendové zpracování dat;
• integrované zpracování dat.
o Databázové přístupy:
• relačně databázové zpracování dat,
• objektové zpracování dat.
9
10. Agendové zpracování dat:
- představuje první pokus řešit problematikuzpracování hromadných dat:
o vedení samostatných, vzájemně oddělených a
rozsahem malých úloh – agend,
o každá agenda má vlastní soubory, které nejsou
propojeny – míra integrovanosti dat velmi
nízká.
vysoká redundance dat: narůstající
objem dat, vícenásobné zpracování dat
10
11. Agendové zpracování:
Aplikační program 1Aplikační program 2
Aplikační program 3
Datový soubor 1
Datový soubor 2
Datový soubor 3
:
11
12. Nevýhody agendového zpracování:
o Obtížná uživatelská flexibilita(pro každou novou uživatelskou funkci je třeba
přepsat dotyčný program nebo nový napsat);
o Obtížná flexibilita datové základny
(pro každou změnu struktury záznamu nutno
přeprogramovat související programy);
o 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);
12
13. Nevýhody agendového zpracování:
o obtížně kontrolovatelná datová redundance;o omezené možnosti sdílení stejných dat více
aplikacemi;
o nízká bezpečnost IS;
o obtížná dosažitelnost evidovaných dat (ke
zpracovávaným souborům musí existovat
odpovídající aplikační programy);
o obtížná ochrana dat proti zneužití
NUTNOST UPLATNĚNÍ JINÉ FILOZOFIE
ZPRACOVÁNÍ HROMADNÝCH DAT
13
14. Integrované zpracování:
Aplikační program 1Aplikační program 2
Aplikační program 3
Datový soubor 1
Datový soubor 2
Datový soubor 3
: integrovaného zpracování dat:
Přetrvávající nevýhody
omíra integrovanosti dat je vyšší oproti předchozímu
zpracování
ologická závislost programů na datech
14
15. Typické řešení IS pomocí DB technologie:
ZásobyZaměstnanci
Zvířata
Doprava
DBS
ZP
Účetnictví
Mzdy
15
16. Základy relačně databázové technologie:
Vznik: 1969, E.F.Codd, laboratoře IBM, DB2Aspekty relačního datového modelu:
o Hodnoty v tabulkách musí být atomické
o Hodnoty ve sloupcích jsou prvky dotyčných
domén
o Práce s tabulkami využívá operací výrokové
logiky
o Primární klíče pro identifikaci řádek mezi
sebou
o Cizí klíče pro propojování tabulek navzájem
16
17. Relační datový model:
o V tabulkách lze definovat podmnožiny řádků(operace selekce) a podmnožiny sloupců
(operace projekce)
o Pro práci s více tabulkami – operace spojení.
Základní pojmy relační databázové teorie:
o datové soubory chápany jako množiny, tj.
dvourozměrné tabulky = RELACE
o jednotlivé řádky = n-tice (entita) evidované
problematiky
o jména sloupců = atributy (vlastnosti) entit
17
18. Základní paradigma relačně db modelu:
Na všechno je pohlíženo jako na tabulku (realaci)Entita - objekt reálného světa existující nezávisle na
okolním světě a jednoznačně rozpoznatelný od dalších
objektů (např. osoba, místo, věc nebo událost, o které jsou
shromažďována data).
Atribut – vyjadřuje podstatnou vlastnost popisované entity
nebo vztahu.
Sloupce (atributy)
CisloIND
Prijmeni
Místo
Ulice
Obor
Rocnik
11111111
Dvořák Aleš
Kolín
Dlouhá 8
INFO
3
2222222
Haleš Jan
Praha 1
Vodičkova 5
INFO
2
……..
……..
………
…….
..
Kalaš Josef
Zeleneč
Kahovcova 4
SYI
3
……
9999999
záznamy
doména
18
19. Základní pojmy relační db teorie:
o obor přípustných hodnot v sloupcích = doménao každá věta (record, záznam) = souhrn všech
údajů o jednom objektu (1 entitě) dané
problémové domény
o sloupce tabulky reprezentují jednotlivé
vlastnosti (atributy = pole = fields) objektů
o všechny záznamy v rámci 1 tabulky mají stejnou
strukturu
19
20. Podmínky relačnosti tabulky:
o Všechny hodnoty v tabulce musí býtelementární (nedělitelné)
o Pozice sloupců je nevýznamná (pořadí lze
libovolně měnit)
o Pozice řádků je nevýznamná (pořadí lze
libovolně měnit)
o Sloupce musí být homogenní (obor hodnot
každého sloupce musí být stejný = datový typ)
o Každý sloupec musí být jednoznačně
pojmenován
o Každý řádek musí být jednoznačně rozlišen
(pomocí primárního klíče)
20
21. Relační algebra v relačně db technologii
o Operace PROJEKCE(výběr požadovaných sloupců, výsledkem je relace
o p-sloupcích vzniklá z původní o n-sloupcích), p<n
o 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
o Operace spojení JOIN (na rovnost, nerovnost,
vnější)
(spojením dvou relací vzniká třetí relace, která
obsahuje všechny kombinace vyhovující zadané
podmínce)
21
22. Vymezení relačně databázové koncepce:
SŘBD (DBMS))DB (data))
22
23. Vymezení relačně databázové koncepce:
DBSSŘBD (DBMS))
DB (data))
23
24. Vymezení relačně databázové koncepce:
ISDBS
SŘBD (DBMS))
uživatel 1
uživatel 2
DB (data))
uživatel 3
uživatel 4
….
uživatel n
24
25. Vymezení relačně databázové koncepce:
ISDBS
SŘBD (DBMS))
uživatel 1
uživatel 2
DB (data))
uživatel 3
uživatel 4
….
uživatel n
DBS=SŘBD + DB
25
26. Vymezení relačně databázové koncepce:
ISDBS
SŘBD (DBMS))
uživatel 1
uživatel 2
DB (data))
uživatel 3
uživatel 4
….
uživatel n
DBS=SŘBD + DB
DBS – databázový systém
26
27. Vymezení relačně databázové koncepce:
ISDBS
SŘBD (DBMS))
uživatel 1
uživatel 2
DB (data))
uživatel 3
uživatel 4
….
uživatel n
DBS=SŘBD + DB
DBS – databázový systém
SŘBD – systém řízení báze dat, uživatelé komunikují
s DB právě a pouze prostřednictvím SŘBD
DB – báze dat, množina relací obsahujících data
27
28. Vymezení relačně databázové koncepce:
ISDBS
SŘBD (DBMS))
uživatel 1
uživatel 2
DB (data))
uživatel 3
uživatel 4
….
uživatel n
DBS=SŘBD + DB
DBS – databázový systém
SŘBD – systém řízení báze dat, uživatelé komunikují
s DB právě a pouze prostřednictvím SŘBD
DB – báze dat, množina relací obsahujících data
IS – je tvořen DB a jejími uživateli
28
29.
Coddovo paradigma relačně DB modelu29
30. Coddova pravidla pro relační model:
1. Pravidlo SŘBD (data spravována pouze pomocírelačních operací)
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án jako relační
systémový katalog)
30
31. Coddova pravidla pro relační model:
6. Pravidlo pro jazyk (pro komunikaci se SŘBD):- definici dat (DDL)
- integritní omezení (DCL)
- manipulaci s daty (DML)
7. Pravidlo pohledů (SŘBD 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)
31
32. Coddova pravidla pro relační model:
11. Pravidlo nezávislosti dat na distribuci (výsledkyoperací nesmí být ovlivněny konkrétním
umístěním dat v distribuovaných databázích)
12. Pravidlo nenarušitelnosti SŘBD (žádný uživatel
nesmí obcházet nebo narušovat rozhraní SŘBD)
Fyzická nezávislost dat – aplikace musí být
izolována 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).
32
33. 5. Coddovo pravidlo relačního katalogu:
Systémové informace o struktuře databáze(definované tabulky, pohledy, indexy atd.) jsou
uloženy stejným způsobem jako vlastní data, tj. ve
formě tabulky. Takovéto uložení je výhodné, protože
informace o databázi je možno běžně vybírat pomocí
příkazu SELECT.
Příklad: výpis jména objektu, vlastníka a typu objektu
SQL> SELECT tname,creator,tablety FROM catalog;
TNAME
CREATOR
----------------------- ------------------seznam_studentu NĚMEC
student
NĚMEC
student
NĚMEC
TABLETY
-----------------VIEW
INDEX
TABLE
33
34. 2. přednáška: Dotazovací jazyk SQL - příkazy jazyka DDL
35. Předpoklady db dotazovacích jazyků:
o musí obsahovat příkazy pro definici nových dat– jazyk pro definici dat DDL (Data Definicion
Language),
o 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),
o 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 často disponují prostředky
vizuálního programování na principu QBE –
příkazy jsou generovány na základě zvolených
grafických symbolů v uživatelském rozhraní.
35
36. Koncepty dotazovacích jazyků:
o Procedurální jazyky (nutno zadat algoritmus prozískání požadované odpovědi – COBOL, FORTRAN)
o 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ářů. Určen pro koncové uživatele.
RELAČNĚ ÚPLNÝ DOTAZOVACÍ JAZYK =
dotazovací jazyk umožňující definovat všechny
operace relační algebry
36
37. Vizuální programování v Access (QBE):
3738. 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:
o deklarativní – příkazy definují „co“ se má provést
a nikoliv „jak“ se to má provést;
o 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 je jeho standardizace
organizací ANSI.
38
39. Syntaxe příkazů SQL: symboly
Symbol:[]
{}
|
<>
…
'
Význam:
nepovinné části pří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')
39
40. SQL: PŘÍKAZY PRO DEFINICI DAT
o CREATE TABLEo ALTER TABLE
o DROP TABLE
Příkaz CREATE TABLE: syntaxe
CREATE TABLE <jméno-tabulky>
(<jméno-sloupce> <datový-typ>
[NOT NULL]
[,<jméno-sloupce> <datový-typ> [NOT NULL]]...]
NOT NULL u popisu sloupce zabezpečí, že všechna
pole v daném sloupci nesmí obsahovat hodnotu
NULL
40
41. CREATE TABLE: vytvoření relace STUDENT
STUDENT (CIND,JMENO,BYDLISTE,DATNAR,STIP)41
42. CREATE TABLE: vytvoření relace STUDENT
STUDENT (CIND,JMENO,BYDLISTE,DATNAR,STIP)SQL> 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.
SQL>
42
43. CREATE TABLE: vytvoření relace STUDENT
STUDENT (CIND,JMENO,BYDLISTE,DATNAR,STIP)SQL> 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.
SQL> DESCRIBE student;
43
44. CREATE TABLE: vytvoření relace STUDENT
STUDENT (CIND,JMENO,BYDLISTE,DATNAR,STIP)SQL> 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.
SQL> DESCRIBE student;
Název
Nezadáno? Typ
------------------------------------- --------------- ------------CIND
NOT NULL CHAR(6)
JMENO
VARCHAR2(12)
BYDLISTE
VARCHAR2(10)
DATNAR
DATE
STIP
NUMBER(4)
44
45. Příkaz INSERT: naplnění relace daty
SQL> INSERT INTO student2
VALUES ('111/99','Karel Novák','Praha 1',
3 '10.1.1980',3500);
45
46. Příkaz INSERT: naplnění relace daty
SQL> INSERT INTO student2
VALUES ('111/99','Karel Novák','Praha 1',
3 '10.1.1980',3500);
1 řádka vytvořena.
SQL> INSERT INTO student
2 VALUES ('222/01','Jiří Dvořák','Praha 9',
3
'24.7.1984',0);
1 řádka vytvořena.
atd.
46
47. Příkaz INSERT: naplnění relace daty
SQL> INSERT INTO student2
VALUES ('111/99','Karel Novák','Praha 1',
3 '10.1.1980',3500);
1 řádka vytvořena.
SQL> INSERT INTO student
2 VALUES ('222/01','Jiří Dvořák','Praha 9',
3
'24.7.1984',0);
1 řádka vytvořena.
atd.
SQL> SELECT * FROM student;
CIND JMENO
BYDLISTE DATNAR
-------- ---------------- ----------------- ------------111/99 Karel Novák Praha1 10.01.80
222/01 Jiří Dvořák Praha 9 24.07.84
333/01 Karel Franěk Kolín 13 12.03.85
444/02 Josef Havlát Praha 1 15.04.85
STIP
---------3500
0
2500
2000
47
48. Naplnění relace výčtem položek (nenaplněná položka)
STUDENT (CIND,JMENO,BYDLISTE,DATNAR,STIP)48
49.
Naplnění relace výčtem položek (nenaplněná položka)STUDENT (CIND,JMENO,BYDLISTE,DATNAR,STIP)
SQL> 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.
SQL>
49
50.
Naplnění relace výčtem položek (nenaplněná položka)STUDENT (CIND,JMENO,BYDLISTE,DATNAR,STIP)
SQL> 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.
SQL> INSERT INTO student (cind,jmeno,
2
bydliste,datnar)
3
VALUES ('111/99','Karel Novák','Praha1',
4
'10.1.1980');
1 řádka vytvořena.
V tomto případě položka STIP (tj. stipendium) nebude naplněna
50
51. Naplnění relace výčtem položek (nenaplněná položka)
STUDENT (CIND,JMENO,BYDLISTE,DATNAR,STIP)SQL> 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.
SQL> INSERT INTO student (cind,jmeno,
2
bydliste,datnar)
3
VALUES ('111/99','Karel Novák','Praha1',
4
'10.1.1980');
1 řádka vytvořena.
V tomto případě položka STIP (tj. stipendium) nebude naplněna
SQL> SELECT * FROM student;
CIND JMENO
BYDLISTE DATNAR
111/99 Karel Novák Praha1 10.01.80
STIP
51
52. INSERT naplnění tabulky daty ze staré tabulky:
STUDENTpouze studenty 3. ročníku
STUDENT3
52
53. INSERT naplnění tabulky daty ze staré tabulky:
STUDENTpouze studenty 3. ročníku
STUDENT3
SQL> INSERT INTO student3
2 SELECT * FROM student
3
WHERE rocnik='3';
2 řádek vytvořeno.
53
54. INSERT naplnění tabulky daty ze staré tabulky:
STUDENTpouze studenty 3. ročníku
STUDENT3
SQL> INSERT INTO student3
2 SELECT * FROM student
3
WHERE rocnik='3';
2 řádek vytvořeno.
SQL> SELECT * FROM student3;
CIND JMENO
BYDLISTE DATNAR
--------- ---------------- ---------------- ------------111/99 Karel Novák Praha 1 10.01.80
333/01 Karel Franěk Kolín 13 12.03.85
STIP ROCNIK
---------- -------7000
3
5000
3
54
55. ALTER TABLE – příklad: doplnění položky ROCNIK
SQL> ALTER TABLE student ADD rocnik CHAR(1);Tabulka změněna.
55
56. ALTER TABLE – příklad: doplnění položky ROCNIK
SQL> ALTER TABLE student ADD rocnik CHAR(1);Tabulka změněna.
SQL> DESCRIBE student;
56
57. ALTER TABLE – příklad: doplnění položky ROCNIK
SQL> ALTER TABLE student ADD rocnik CHAR(1);Tabulka změněna.
SQL> DESCRIBE student;
Název
Nezadáno? Typ
------------------------------------- --------------- ------------CIND
NOT NULL CHAR(6)
JMENO
VARCHAR2(12)
BYDLISTE
VARCHAR2(10)
DATNAR
DATE
STIP
NUMBER(4)
ROCNIK
CHAR(1)
57
58. ALTER TABLE : modifikování položky BYDLIŠTE
SQL> ALTER TABLE student2
MODIFY bydliste VARCHAR2(15);
Tabulka změněna.
SQL>
58
59. ALTER TABLE : modifikování položky BYDLIŠTE
SQL> ALTER TABLE student2
MODIFY bydliste VARCHAR2(15);
Tabulka změněna.
SQL> DESCRIBE student;
59
60. ALTER TABLE : modifikování položky BYDLIŠTE
SQL> ALTER TABLE student2
MODIFY bydliste VARCHAR2(15);
Tabulka změněna.
SQL> DESCRIBE student;
Název
Nezadáno? Typ
------------------------------------- --------------- ------------CIND
NOT NULL CHAR(6)
JMENO
VARCHAR2(12)
BYDLISTE
VARCHAR2(15)
DATNAR
DATE
STIP
NUMBER(4)
ROCNIK
CHAR(1)
60
61. UPDATE - příklad: oprava dat v položce STIP
UPDATE jméno-tabulky SET jméno-sloupce =hodnota , jméno-sloupce = hodnota ...WHERE
výběrová-podmínka
61
62. UPDATE - příklad: oprava dat v položce STIP
UPDATE jméno-tabulky SET jméno-sloupce =hodnota , jméno-sloupce = hodnota ...WHERE
výběrová-podmínka
SQL> UPDATE student SET stip=1000
2
WHERE cind='222/01';
1 řádka aktualizována.
SQL>
62
63. UPDATE - příklad: oprava dat v položce STIP
UPDATE jméno-tabulky SET jméno-sloupce =hodnota , jméno-sloupce = hodnota ...WHERE
výběrová-podmínka
SQL> UPDATE student SET stip=1000
2
WHERE cind='222/01';
1 řádka aktualizována.
SQL> SELECT * FROM student;
CIND JMENO
BYDLISTE DATNAR
STIP
--------- ---------------- ----------------- ------------ ------111/99 Karel Novák Praha1
10.01.80
3500
222/01 Jiří Dvořák Praha 9
24.07.84
1000
333/01 Karel Franěk Kolín 13
12.03.85
2500
444/02 Josef Havlát Praha 1
15.04.85 2000
63
64. Oprava dat v položce STIPENDIUM
UPDATE jméno-tabulky SET jméno-sloupce =hodnota , jméno-sloupce = hodnota ...WHERE
výběrová-podmínka
SQL> UPDATE student SET stip=stip*2 WHERE ROCNIK>'2';
2 řádek aktualizováno.
SQL>
64
65. Oprava dat v položce STIPENDIUM
UPDATE jméno-tabulky SET jméno-sloupce =hodnota , jméno-sloupce = hodnota ...WHERE
výběrová-podmínka
SQL>UPDATE student SET stip=stip*2 WHERE ROCNIK>'2';
2 řádek aktualizováno.
SQL> SELECT * FROM student;
CIND JMENO
BYDLISTE
------ ----------------- --------------111/99 Karel Novák Praha 1
222/01 Jiří Dvořák
Praha 9
333/01 Karel Franěk Kolín 13
444/02 Josef Havlát Praha 1
DATNAR STIP ROCNIK
------------ -------- ----------10.01.80 7000
3
24.07.84
0
2
12.03.85 5000
3
15.04.85 2000
1
65
66. DELETE - rušení záznamů v relaci
Syntaxe příkazu:DELETE FROM jméno-tabulky WHERE
výberová podmínka
66
67. DELETE - rušení záznamů v relaci
Syntaxe příkazu:DELETE FROM jméno-tabulky WHERE
výberová podmínka
vymaže z uvedené tabulky všechny řádky splňující
podmínku zadanou za klíčovým slovem WHERE. Není-li
tato podmínka uvedena, budou z
tabulky vymazány
všechny její záznamy!!!!
67
68. DELETE - rušení záznamů v relaci
Syntaxe příkazu:DELETE FROM jméno-tabulky WHERE
výberová podmínka
vymaže z uvedené tabulky všechny řádky splňující
podmínku zadanou za klíčovým slovem WHERE. Není-li
tato podmínka uvedena, budou z
tabulky vymazány
všechny její záznamy!!!!
SQL> DELETE FROM student WHERE cind='444/02';
1 řádka vymazána.
SQL>
68
69. DELETE - rušení záznamů v relaci
Syntaxe příkazu:DELETE FROM jméno-tabulky WHERE
výberová podmínka
vymaže z uvedené tabulky všechny řádky splňující
podmínku zadanou za klíčovým slovem WHERE. Není-li
tato podmínka uvedena, budou z
tabulky vymazány
všechny její záznamy!!!!
SQL> DELETE FROM student WHERE cind='444/02';
1 řádka vymazána.
SQL> SELECT * FROM student;
CIND
--------111/99
222/01
333/01
JMENO
BYDLISTE DATNAR
STIP
---------------- --------------- ------------- ----------Karel Novák Praha1
10.01.80
3500
Jiří Dvořák Praha 9
24.07.84
1000
Karel Franěk Kolín 13
12.03.85
2500
69
70. Přejmenování relace: příkaz RENAME
Syntaxe příkazu:RENAME staré jméno tabulky TO nové jméno tab.
70
71. Přejmenování relace: příkaz RENAME
Syntaxe příkazu:RENAME staré jméno tabulky TO nové jméno tab.
Příklad: přejmenování tabulky STUDENT na STUDENTI
71
72. Přejmenování relace: příkaz RENAME
Syntaxe příkazu:RENAME staré jméno tabulky TO nové jméno tab.
Příklad: přejmenování tabulky STUDENT na STUDENTI
SQL> RENAME student TO studenti;
Tabulka přejmenována.
SQL>
72
73. Přejmenování relace: příkaz RENAME
Syntaxe příkazu:RENAME staré jméno tabulky TO nové jméno tab.
Příklad: přejmenování tabulky STUDENT na STUDENTI
SQL> RENAME student TO studenti;
Tabulka přejmenována.
SQL> SELECT * FROM studenti;
CIND JMENO
BYDLISTE
------ ---------------- --------------111/99 Karel Novák Praha 1
222/01 Jiří Dvořák
Praha 9
333/01 Karel Franěk Kolín 13
444/02 Josef Havlát Praha 1
DATNAR STIP ROCNIK
-------------- --------- -----------10.01.80
3500
3
24.07.84
0
2
12.03.85
2500
3
15.04.85
2000
1
73
74. DROP TABLE - zrušení relace
Syntaxe příkazu:DROP
TABLE jméno-tabulky
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!!!
74
75. DROP TABLE - zrušení relace
Syntaxe příkazu:DROP
TABLE jméno-tabulky
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!!!
Příklad: zrušení tabulky student
75
76. DROP TABLE - zrušení relace
Syntaxe příkazu:DROP
TABLE jméno-tabulky
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!!!
Příklad: zrušení tabulky student
76
77. DROP TABLE - zrušení relace
Syntaxe příkazu:DROP
TABLE jméno-tabulky
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!!!
Příklad: zrušení tabulky student
SQL> DROP TABLE student;
Tabulka zrušena.
SQL>
77
78. DROP TABLE - zrušení relace
Syntaxe příkazu:DROP
TABLE jméno-tabulky
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!!!
Příklad: zrušení tabulky student
SQL> DROP TABLE student;
Tabulka zrušena.
SQL> SELECT * FROM student;
ORA-00942: tabulka nebo pohled neexistuje
SQL>
78
79. Příklad: přejmenování sloupce STIP na STIPENDIUM:
POSTUP: a) nejprve nutno přidat nový sloupecs požadovaným jménem a datovým
typem shodným s původním sloupcem.
79
80. Příklad: přejmenování sloupce STIP na STIPENDIUM:
POSTUP: a) nejprve nutno přidat nový sloupecs požadovaným jménem a datovým
typem shodným s původním sloupcem.
SQL> ALTER TABLE student ADD stipendium NUMBER(4);
Tabulka změněna.
SQL>
80
81. Příklad: přejmenování sloupce STIP na STIPENDIUM:
POSTUP: a) nejprve nutno přidat nový sloupecs požadovaným jménem a datovým
typem shodným s původním sloupcem.
SQL> ALTER TABLE student ADD stipendium NUMBER(4);
Tabulka změněna.
SQL> DESC student;
Název
Nezadáno? Typ
----------------------------------------- -------- ------------------CIND
NOT NULL CHAR(6)
JMENO
VARCHAR2(12)
BYDLISTE
VARCHAR2(10)
DATNAR
DATE
STIP
NUMBER(4)
ROCNIK
CHAR(1)
STIPENDIUM
NUMBER(4)
3
81
82. Příklad: přejmenování sloupce STIP na STIPENDIUM:
b) nyní je třeba zkopírovat hodnoty z původníhosloupce do nového sloupce za všechny řádky.
82
83. Příklad: přejmenování sloupce STIP na STIPENDIUM:
b) nyní je třeba zkopírovat hodnoty z původníhosloupce do nového sloupce za všechny řádky.
SQL> UPDATE student SET stipendium=stip;
4 řádek aktualizováno.
SQL>
83
84. Příklad: přejmenování sloupce STIP na STIPENDIUM:
b) nyní je třeba zkopírovat hodnoty z původníhosloupce do nového sloupce za všechny řádky.
SQL> UPDATE student SET stipendium=stip;
4 řádek aktualizováno.
SQL> SELECT * FROM student;
CIND JMENO
BYDLISTE DATNAR STIP R STIPENDIUM
--------- ----------------- --------------- ------------- --------- -- ---------------111/99 Karel Novák Praha 1
10.01.80
7000 3
7000
222/01 Jiří Dvořák Praha 9
24.07.84
0 2
0
333/01 Karel Franěk Kolín 13 12.03.85
5000 3
5000
444/02 Josef Havlát Praha 1 15.04.85
2000 1
2000
84
85. Příklad: Přejmenování sloupce STIP na STIPENDIUM:
c) jako poslední krok je nutno zrušit původní sloupec, tj. STIP.85
86. Příklad: Přejmenování sloupce STIP na STIPENDIUM:
c) jako poslední krok je nutno zrušit původní sloupec, tj. STIP.SQL> ALTER TABLE student DROP COLUMN stip;
Tabulka změněna.
SQL>
86
87. Příklad: Přejmenování sloupce STIP na STIPENDIUM:
c) jako poslední krok je nutno zrušit původní sloupec, tj. STIP.SQL> ALTER TABLE student DROP COLUMN stip;
Tabulka změněna.
SQL> SELECT * FROM student;
CIND JMENO
BYDLISTE DATNAR R STIPENDIUM
--------- ---------------- --------------- ------------- - ------------------111/99 Karel Novák Praha 1
10.01.80 3
7000
222/01 Jiří Dvořák
Praha 9
24.07.84 2
0
333/01 Karel Franěk Kolín 13
12.03.85
3
5000
444/02 Josef Havlát
Praha 1
15.04.85
1
2000
87