Relační databázové systémy
Absolvování předmětu
Náplň přednášek předmětu
Nainstalování platformy LiveSQL.ORACLE
Nainstalování platformy LiveSQL.ORACLE
Závažnost relačně DB technologie
1. přednáška: Základy relačně databázové technologie
Přístupy ke zpracování dat:
Agendové zpracování dat:
Agendové zpracování:
Nevýhody agendového zpracování:
Nevýhody agendového zpracování:
Integrované zpracování:
Typické řešení IS pomocí DB technologie:
Základy relačně databázové technologie:
Relační datový model:
Základní paradigma relačně db modelu:
Základní pojmy relační db teorie:
Podmínky relačnosti tabulky:
Relační algebra v relačně db technologii
Vymezení relačně databázové koncepce:
Vymezení relačně databázové koncepce:
Vymezení relačně databázové koncepce:
Vymezení relačně databázové koncepce:
Vymezení relačně databázové koncepce:
Vymezení relačně databázové koncepce:
Vymezení relačně databázové koncepce:
Coddova pravidla pro relační model:
Coddova pravidla pro relační model:
Coddova pravidla pro relační model:
5. Coddovo pravidlo relačního katalogu:
2. přednáška: Dotazovací jazyk SQL - příkazy jazyka DDL
Předpoklady db dotazovacích jazyků:
Koncepty dotazovacích jazyků:
Vizuální programování v Access (QBE):
Databázové dotazovací jazyky:
Syntaxe příkazů SQL: symboly
SQL: PŘÍKAZY PRO DEFINICI DAT
CREATE TABLE: vytvoření relace STUDENT
CREATE TABLE: vytvoření relace STUDENT
CREATE TABLE: vytvoření relace STUDENT
CREATE TABLE: vytvoření relace STUDENT
Příkaz INSERT: naplnění relace daty
Příkaz INSERT: naplnění relace daty
Příkaz INSERT: naplnění relace daty
Naplnění relace výčtem položek (nenaplněná položka)
Naplnění relace výčtem položek (nenaplněná položka)
INSERT naplnění tabulky daty ze staré tabulky:
INSERT naplnění tabulky daty ze staré tabulky:
INSERT naplnění tabulky daty ze staré tabulky:
ALTER TABLE – příklad: doplnění položky ROCNIK
ALTER TABLE – příklad: doplnění položky ROCNIK
ALTER TABLE – příklad: doplnění položky ROCNIK
ALTER TABLE : modifikování položky BYDLIŠTE
ALTER TABLE : modifikování položky BYDLIŠTE
ALTER TABLE : modifikování položky BYDLIŠTE
UPDATE - příklad: oprava dat v položce STIP
UPDATE - příklad: oprava dat v položce STIP
UPDATE - příklad: oprava dat v položce STIP
Oprava dat v položce STIPENDIUM
Oprava dat v položce STIPENDIUM
DELETE - rušení záznamů v relaci
DELETE - rušení záznamů v relaci
DELETE - rušení záznamů v relaci
DELETE - rušení záznamů v relaci
Přejmenování relace: příkaz RENAME
Přejmenování relace: příkaz RENAME
Přejmenování relace: příkaz RENAME
Přejmenování relace: příkaz RENAME
DROP TABLE - zrušení relace
DROP TABLE - zrušení relace
DROP TABLE - zrušení relace
DROP TABLE - zrušení relace
DROP TABLE - zrušení relace
Příklad: přejmenování sloupce STIP na STIPENDIUM:
Příklad: přejmenování sloupce STIP na STIPENDIUM:
Příklad: přejmenování sloupce STIP na STIPENDIUM:
Příklad: přejmenování sloupce STIP na STIPENDIUM:
Příklad: přejmenování sloupce STIP na STIPENDIUM:
Příklad: přejmenování sloupce STIP na STIPENDIUM:
Příklad: Přejmenování sloupce STIP na STIPENDIUM:
Příklad: Přejmenování sloupce STIP na STIPENDIUM:
Příklad: Přejmenování sloupce STIP na STIPENDIUM:
1.63M
Category: databasedatabase

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 technologie
o 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

5

6.

6

7. Závažnost relačně DB technologie

Registrační značka nesouhlasila ve 21 000
pří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 problematiku
zpracová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 1
Aplikač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 1
Aplikač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ásoby
Zamě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, DB2
Aspekty 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éna
o 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ýt
elementá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:

DBS
SŘBD (DBMS))
DB (data))
23

24. Vymezení relačně databázové koncepce:

IS
DBS
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:

IS
DBS
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:

IS
DBS
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:

IS
DBS
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:

IS
DBS
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 modelu
29

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ýsledky
operací 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 pro
zí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):

37

38. 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 TABLE
o 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 student
2
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 student
2
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 student
2
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:

STUDENT
pouze studenty 3. ročníku
STUDENT3
52

53. INSERT naplnění tabulky daty ze staré tabulky:

STUDENT
pouze 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:

STUDENT
pouze 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 student
2
MODIFY bydliste VARCHAR2(15);
Tabulka změněna.
SQL>
58

59. ALTER TABLE : modifikování položky BYDLIŠTE

SQL> ALTER TABLE student
2
MODIFY bydliste VARCHAR2(15);
Tabulka změněna.
SQL> DESCRIBE student;
59

60. ALTER TABLE : modifikování položky BYDLIŠTE

SQL> ALTER TABLE student
2
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ý sloupec
s 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ý sloupec
s 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ý sloupec
s 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ího
sloupce 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ího
sloupce 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ího
sloupce 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
English     Русский Rules