Databázové jazyky
Databázový jazyk je prostriedok pre komunikáciu s databázovými systémami. Rozdeľujeme ich na dve základné skupiny procedurálne – ktoré popisujú spôsob, ako chceme danú procedúru vykonať, t.j. postup činnosti a neprocedurálne – určujeme, čo chceme s dátami urobiť, t.j. výsledok činnosti.
jazyky popis
procedurálne popis činnosti ako chceme dosiahnuť určitý výsledok PL/SQL
neprocedurálne čo chceme s dátami urobiť – manipulácia s dátami dotazovacie jazyky
DML SQL- Structured Query Language
QBE- Query-by-examle
PHP – klient pre SQL server
ASP – klient pre SQL server
tvorba databáz DDL
Z hľadiska činnosti databázové jazyky delíme na dotazovací jazyk, ktorý umožňuje realizovať všetky operácie relačnej algebry, sa nazýva relačne úplný jazyk. Existuje niekoľko požiadaviek na dotazovací jazyk.
Databázové jazyky možno podľa ich účelu a použitia rozdeliť na niekoľko základných skupín:
Definičný jazyk
Prekladač definičného jazyka (data definition language - DDL) pracuje ako interpreter. Z príkazov definičného jazyka vytvára alebo mení časti katalógu dát. Výsledkom jeho činnosti je zmenený katalóg dát. Prostredníctvom definičných jazykov sa okrem štruktúry dát stanovujú aj ďalšie atribúty databázového systému – napríklad spôsob utajenia dát, uloženia dát v pamätiach, veľkosť vyrovnávacích pamätí, počet súčasných užívateľov, spôsob ochrany bázy dát pred stratou dát a pod.
Manipulačný jazyk
Manipulačné jazyky (data manipulation language - DML) sa zväčša riešia tzv. hostiteľským spôsobom, keď je jazyk tvorený iba príkazmi rozširujúcimi možnosti konvenčného - tzv. hostiteľského jazyka. Jazyky obsahujú všetky príkazy potrebné na styk so SRBD - vkladanie, výber a aktualizáciu viet dát. Pri spracovaní príkazov manipulačného jazyka v hostiteľskom počítači sa používajú tieto hlavné techniky:
- Použije sa štandardný príkaz CALL alebo ENTER hostiteľského jazyka, do ktorého sa ako parameter uvedie príkaz manipulačného jazyka. „Preklad“ príkazu volania príslušného programu SRBD uskutoční priamo prekladač hostiteľského jazyka, čím je zariadené napojenie aplikačného programu na SRBD.
- Pred kompiláciou programu v hostiteľskom jazyku sa zaradí tzv. predkompilácia, počas ktorej sa identifikujú príkazy rozširujúce hostiteľský jazyk a spracujú sa. Spracovanie znamená kontrolu syntaktickej a sémantickej korektnosti príkazov a ich nahradenie príkazmi hostiteľského jazyka. Na volanie funkcií SRBD to budú opäť príkazy CALL alebo ENTER, ale okrem toho sa program v hostiteľskom jazyku rozšíri aj o deklaračné časti, ďalej o príkazy a prípadne aj o procedúry na ošetrenie chybových stavov.
- Najdokonalejšie riešenie je vytvorenie nového kompilátora takéhoto rozšíreného jazyka. Tým sa dá dosiahnuť optimálne spracovanie programu z hľadiska možnosti detekcie poruchových stavov, väzieb databázových častí na ostatné časti programu, rýchlosti spracovania a pod. Táto technika je však najnákladnejšia.
Jazyk pre udržanie integrity dát
Ide o jazyk, ktorého účelom je riadenie funkcií pre zabezpečenie integrity databázy. V zahraničnej literatúre sa označujú ako data integrity statements (DIS).
Jazyk pre riadenie prístupu
Ide o jazyk, ktorého účelom je zvýšiť bezpečnosť databázy. Rieši napríklad rozdelenie užívateľov do rôznych užívateľských skupín, definovanie prístupových práv jednotlivým skupinám a užívateľom a tiež kontrolu práv prístupu užívateľov. V zahraničnej literatúre sa označujú ako data access statements (DAS).
Užívateľské jazyky
Ide o jazyky určené predovšetkým pre užívateľov systému, ktorí spravidla nie sú programátormi.
Vzhľadom k tomu majú jednoduchú syntax. Používajú slová podobné prirodzenému jazyku a nepoužívajú procedurálne príkazy. Tieto jazyky sú typické pre relačný dátový model a hlavné použitie majú na výber dát. Niektoré SRBD poskytujú užívateľské jazyky aj na aktualizáciu bázy dát. Prekladače užívateľských jazykov sú obvykle zložité programové prostriedky, ktoré tesne nadväzujú na realizáciu požiadavky (programu) v SRBD. V spolupráci s ním riešia napr. aj kontrolu práv prístupu užívateľov, kontakt s katalógom dát a pod
6.1 Dotazovacie jazyky
Pre zadávanie dotazu slúžia syntaktické konštrukcie – dotazovacie jazyky. Koncepcie najznámejších vychádza z polovice 70. rokov SQL (Structured Query Language), ktorý sa stal štandardom. Quel – súčasť SRBD vychádza z modifikácie relačných báz má priamu súvislosť s relačnými operáciami a bol vyvinutý firmou IBM pre kancelársky software pre sálové počítače a tiež aj implementáciu firmy Borland v SRBD Paradox, ktoré okrem prostriedkov dotazovania zahŕňa aj ďalšie rysy DML a komplexný DDL (DDL- data definition language na definíciu schémy databázy, DML- data manipulation language jazyk na manipuláciu s dátami ). Všetky sú relačne úplné, Pre zápis požiadaviek na databázový server sa najčastejšie používa jazyk SQL. Postupnosťami operácií selekcie, projekcie a spojenia nad relačnými tabuľkami je možné odpovedať na dotazy a získavať informácie. SQL jazyk prešiel dlhý vývojom a v rôznej miere ho podporujú takmer všetky bežne používané databázové servery. Databázovým serverom sa niekedy zjednodušene hovorí aj SQL servery. Tieto servery ponúkajú všetko potrebné pre vytváranie, modifikáciu a zrušenie tabuliek, pre prácu s údajmi v tabuľke - vyhľadávanie, pridávanie, modifikovanie a mazanie. Komunikácia prebieha ako model server/klient. Pre SQL server v úlohe klienta môže vystupovať aj skript napísaný v PHP či ASP. SQL server má svoj vlastný protokol, s ktorým môže klient komunikovať. Ak klient komunikuje s viacerými servermi, musí podporovať rozhranie ODBC, ktoré vzniklo na platforme Windows. Rozhranie ODBC sa jednotne nazýva aj ovládač. PHP ponúka pre niektoré servery priamu podporu prístupu k dátam. Tento prístup je obvykle rýchlejší pre priamo podporované databázy Oracle, Sybase, Solid, MySQL, PostgreSQL, ...
6.2 Jazyk SQL
bol vyvinutý firmou IBM v r. 1974 pod menom SEQUEL. SQL vznikal živelným spôsobom (ako kedysi Fortran). Vznikali rôzne SQL produkty - 35 v r. 1986, viac ako 55 v r. 1989 ISO a ANSI publikovali v r.1986 identické štandardy SQL (SQL86) v podstate dialekt SQL f. IBM. Revize normy v r. 1989 (SQL89), v r.1992 (SQL 2, SQL92), ...
SQL86 má časti
jazyk pre definíciu dát – popis tabuliek, pohľadov a prístupových práv
jazyk pre manipuláciu s dátami - prístup a aktualizácia
jazyk pre konštrukciu modulov
jazyk vytváranie rozhraní medzi databázou a aplikačným programom napísanom v bežnom programovacom jazyku
zápis SQL do aplikačných programov
príkazy jazyka SQL sa delia do oblastí:
DDL (Data Definition Language)
- definícia dáta a ich väzieb
- založenie štruktúry databázy
CREATE TABLE, CREATE VIEW, CREATE INDEX
- predefinovanie štruktúry databázy
ALTER TABLE, DROP TABLE, DROP VIEW, DROP INDEX
DCL (Data Control Language) - zabezpečení dát
GRANT – prideľovanie prístupových práv k danej databáze
REVOKE – odoberanie už pridelených prístupových práv
DML (Data Manipulation Language) – manipulácia s dátami (výber, zoradenie, zmena hodnoty, )
SELECT – formulácia výberových požiadaviek
INSERT - vkladanie dát do už vytvorenej tabuľky
UPDATE – modifikácia riadkov tabuľky
DELETE – odstránenie riadkov tabuľky ale nie celej tabuľky
DROP TABLE – vymazanie tabuľky a všetkých riadkov tabuľky !!!
Relační databázový model použitý v SQL nie je totožný s definíciou Codda - n-tice môžu obsahovať prázdne hodnoty, ktoré sa interpretujú ako neznáme, nedefinované a vplyvňujú vyhodnotenie logických výrazov a agregačných funkcií.
Výsledkom dotazu nie je vo všeobecnosti množina ale kolekcia /sú duplicitné riadky/, množina sa získa zadaním príkazu DISTINCT do dotazu, náhľadu (view). Uživateľské tabuľky sú odvodené z tabuliek v relačnej schéme, sú virtuálne, t.j. nie sú uložené príamo v databáze. Náhľadom sa vlastne implementuje externá schéma, sú naň kladené obmedzenia – napr. nie je možné vykonať aktualizáciu. a pod.
6.2.1 JAZYK SQL- základné príkazy
Relačné databázy a SQL2
Štruktúrovaný dotazovací jazyk SQL2 pre relačné databázy predstavuje jazyk definície dát (data definition language - DDL) na definíciu schémy databázy aj jazyk na manipuláciu s dátami (data manipulation language - DML). Pod definíciou schémy databázy sa rozumie deklarácia typov záznamov a vytvorenie „prázdnych“ súborov v externých pamätiach. Manipulácia s dátami znamená vytváranie, vyhľadávanie, aktualizáciu a vymazávanie záznamov v externých pamätiach. Ako sme už spomenuli, SQL2 nie je úplným programovacím jazykom (neobsahuje priraďovací a podmienený príkaz, príkaz cyklu atď.). Z uvedeného dôvodu sa jeho príkazy vyvolávajú buď z iného tzv. hosťovského programovacieho jazyka (napríklad cobol, C) alebo sa využíva neštandardizovaná nadstavba jazyka SQL, tzv. 4GL. V týchto statiach budeme, nakoľko sa len dá, používať štandardný SQL2. V prípadoch, keď sa ocitneme za jeho hranicami, si vypomôžeme jazykom 4GL relačného DBMS Informix.
Jazyk SQL2 vo svojej podstate „zhmotňuje“ princípy relačných databáz. Základným pojmom relačných databáz je tabuľka. Stĺpce tabuľky reprezentujú atribúty a riadky jednotlivé záznamy. Atribút môže obsahovať maximálne jednu hodnotu, ktorá musí byť navyše atomická.
Na zefektívnenie práce RDBMS používateľ stanovuje pre tabuľku atribút, resp. skupinu atribútov, ktorých hodnoty jednoznačne určujú každý riadok danej tabuľky. Takýto atribút, resp. skupina atribútov sa nazýva primárny kľúč. Z dôvodu efektívnosti sa odporúča, aby primárny kľúč tvoril najmenší možný počet atribútov, a aby samotné atribúty mali najmenší možný rozsah (číselné hodnoty namiesto znakových reťazcov).
Súvisiace tabuľky sa navzájom prepájajú pomocou tzv. cudzích kľúčov. Cudzí kľúč predstavuje atribút, resp. skupinu atribútov, ktorých hodnoty sú hodnotami primárneho kľúča inej tabuľky. Prepájanie záznamov pomocou cudzích kľúčov sa považuje za jednu z hlavných predností relačných databáz, pretože odbremeňuje používateľa od poznania fyzického uloženia záznamov v externých pamätiach.
Jazyk pre definíciu dát - DDL
Jazyk pre manipuláciu s dátami - DML
Príkazy pre riadenie prístupu - DAS
Príkazy pre zabezpečenie integrity - DIS
Utility
6.2.1.1 Definícia schémy databázy - vytvorenie tabuliek
Tabuľky sa vytvárajú príkazom CREATE TABLE, v rámci ktorého sa špecifikuje názov tabuľky, jej atribúty a ich typy, primárne kľúče a ohraničenia. SQL2 dovoľuje iba definíciu atomárnych typov (preddefinované typy, resp. používateľské synonymá pre preddefinované typy - tzv. domény). Samotná tabuľka nie je typom, aj keď implicitne plní túto úlohu.
CREATE TABLE, v rámci ktorého sa špecifikuje:
názov tabuľky, (entity)
atribúty (domény)
typy,
primárne kľúče
cudzie kľúče
ohraničenia.
SQL2 dovoľuje iba definíciu atomárnych typov:
preddefinované typy,
používateľské synonymá pre preddefinované typy - tzv. domény)
* Deklarácia cudzích kľúčov umožňuje SRBD automatickú kontrolu konzistentnosti hodnôt cudzieho kľúča so zodpovedajúcim primárnym kľúčom v asociovanej tabuľke (tzv. referenčné ohraničenie)./
Iné operácie
DROP DATABASE meno_databázy
DROP INDEX meno_indexu
DROP SYNONYM synonym-name
DROP TABLE meno_tabulky
DROP VIEW meno_pohľadu
CREATE DATABASE meno_databázy
CREATE [TEMP] TABLE meno_tabulky
ALTER TABLE meno_tabulky
MODIFY (staré_meno_s nový_datový_typ [NOT NULL][,...])
DROP CONSTRAINT (meno_obm [,...])}[,...]
LOCK MODE {PAGE|ROW }[,...]
MODIFY NEXT SIZE číslo}
CREATE [UNIQUE | DISTINCT] [CLUSTER] INDEX meno_indexu
ON meno_tabulky (meno_stĺpca [ASC | DESC],...)
CREATE SYNONYM meno_synonyma FOR meno_tabulky
CREATE VIEW meno_pohľadu [(zoznam_stĺpcov)]
AS SELECT-príkaz [WITH CHECK OPTION]
príklad
CREATE TABLE Zamestnanec
( kod_zamest INTEGER,
kod_projektu INTEGER,
meno CHAR(30),
plat INTEGER,
PRIMARY KEY (kod_zamest),
FOREIGN KEY (kod_projektu) REFERENCES Projekt);
CREATE TABLE Trieda
( kod_diagramu INTEGER,
kod_triedy INTEGER,
kod_dekompozicie INTEGER,
nazov CHAR(32),
poloha_x INTEGER,
poloha_y INTEGER,
PRIMARY KEY (kod_diagramu, kod_triedy),
FOREIGN KEY (kod_diagramu) REFERENCES Diagram,
FOREIGN KEY (kod_dekompozicie) REFERENCES Diagram (kod_diagramu));
6.2.1.2 Základné dátové typy
NUMERIC(n,m)
SERIAL
CHAR(n)
SMALLINT
DECIMAL(m,n)
FLOAT
DATE
INTEGER
MONEY(m,n)
SMALLFLOAT
INTERVAL
DATETIME
VARCHAR
TEXT
BYTE
6.2.1.3 Manipulácia s dátami
Jazyk SQL2 poskytuje štyri základné príkazy na manipuláciu s dátami:
pridávanie riadku do tabuľky: INSERT
aktualizáciu existujúceho riadku (-ov) v tabuľke: UPDATE
vymazanie riadku (-ov): DELETE
výber riadkov a stĺpcov: SELECT
Z nich relačné databázy charakterizuje práve príkaz SELECT. Uvedený príkaz bol navrhnutý so zámerom interaktívneho a flexibilného vyhľadávania dát, požadovaného v agendových aplikáciách. Príkaz SELECT je relatívne bohatý, vo všeobecnosti však ponúka tri typy operácií:
projekcia - výber špecifikovaných stĺpcov z tabuľky, napríklad stĺpcov meno a plat z tabuľky
Zamestnanec:
SELECT meno, plat
FROM Zamestnanec
reštrikcia - výber požadovaných riadkov z tabuľky na základe výberovej podmienky, nájdenie všetkých zamestnancov s platom väčším ako 10000:
SELECT *
FROM Zamestnanec
WHERE plat > 10000
náhradný symbol * v časti SELECT znamená všetky stĺpce)
spájanie - spájanie tabuliek pomocou výberovej podmienky (tabuľky vo všeobecnosti ani nemusia byť prepojené cudzími kľúčmi), napríklad výber všetkých projektov, na ktorých pracuje niektorý zamestnanec (predpokladajme, že existujú projekty, na ktorých zatiaľ nikto nepracuje):
SELECT *
FROM Zamestnanec, Projekt
WHERE Zamestnanec.kod_projektu = Projekt.kod_projektu
Stĺpce, ktorých názvy nie sú jednoznačné (rovnaké mená sa nachádzajú v oboch spájaných tabuľkách), sa špecifikujú plnými menami: meno_tabuľky.meno_stĺpca. Výsledkom každej zo spomínaných operácií je opäť tabuľka - s požadovanými riadkami a stĺpcami. (T.j. SQL2 je uzatvorený vzhľadom na operácie projekcie, reštrikcie a spájania). Pri spájaní sa vytvára tabuľka, zodpovedajúca karteziánskemu súčinu spájaných tabuliek.
Uvedené tri operácie sa zriedka používajú vo svojej „čistej“ podobe. Väčšinou sa navzájom kombinujú. Napríklad vypísanie mena zamestnanca a nazvu jeho projektu pre všetkých zamestnancov, ktorých plat prevyšuje 10000, sa zabezpečí príkazom:
SELECT meno, nazov
FROM Zamestnanec, Projekt
WHERE (plat > 10000) AND (Zamestnanec.kod_projektu = Projekt.kod_projektu)
pridávanie riadku do tabuľky
INSERT INTO meno_tabulky [(zoznam_stĺpcov)]
{ VALUES (zoznam_hodnôt)
aktualizáciu
existujúceho riadku v tabuľke: UPDATE
UPDATE meno_tabulky SET
{ meno_stĺpca = výraz[,...] { (zoznam_stĺpcov) *} = (zoznam_výrazov) }
[WHERE podmienka]
vymazanie DELETE
DELETE FROM meno_tabulky [WHERE podmienka]
výber riadkov a stĺpcov: SELECT
SELECT [ALL | DISTINCT | UNIQUE] zoznam_stĺpcov_selektu
FROM [OUTER] meno_tabulky [alias_tabulka] [,...]
[WHERE podmienka]
[GROUP BY zoznam_stĺpcov] [HAVING podmienka]
[ORDER BY meno_stĺpca [ASC | DESC],...]
[INTO TEMP meno_tabulky] [WITH NO LOG]
SELECT-príkaz
UNION [ALL]
SELECT-príkaz
[UNION [ALL] SELECT-príkaz] ...
WHERE podmienka:
výraz relačný-operátor výraz
výraz [NOT] BETWEEN výraz AND výraz
výraz [NOT] IN (položky)
meno_stĺpca [NOT] LIKE "string" [ESCAPE escape-znak]
výraz relačný-operátor {ALL | [ANY | SOME]} (SELECT-príkaz)
výraz [NOT] IN (SELECT-príkaz)
[NOT] EXISTS (SELECT-príkaz)
meno_stĺpca IS [NOT] NULL
typy operácií:
projekcia - výber špecifikovaných stĺpcov
SELECT meno, plat
FROM Zamestnanec
reštrikcia - výber požadovaných riadkov z tabuľky na základe výberovej podmienky, napríklad
SELECT *
FROM Zamestnanec
WHERE plat > 10000
náhradný symbol * v časti SELECT znamená všetky stĺpce)
spájanie - spájanie tabuliek pomocou výberovej podmienky (tabuľky vo všeobecnosti ani nemusia byť prepojené cudzími kľúčmi)
SELECT *
FROM Zamestnanec, Projekt
WHERE Zamestnanec.kod_projektu = Projekt.kod_projektu
Stĺpce, ktorých názvy nie sú jednoznačné (rovnaké mená sa nachádzajú v oboch spájaných tabuľkách), sa špecifikujú plnými menami: meno_tabuľky.meno_stĺpca.
SELECT meno, nazov
FROM Zamestnanec, Projekt
WHERE (plat>10000) AND (Zamestnanec.kod_projektu=Projekt.kod_pr ojektu)
1.Výber všetkých stĺpcov
SELECT * FROM předmět
2. Výber s hviezdičkovou konvenciou
SELECT * FROM os_udaje
WHERE meno="Stanislav"
3. Výber a uloženie do dočasnej tabuľky
SELECT * FROM os_udaje
WHERE meno="Stanislav"
INTO TEMP docasna
4. Projekcia
SELECT meno, priezvisko FROM os_udaje
5. Projekcia a kartézsky súčin
SELECT meno, priezvisko, nazov FROM os_udaje, predmet
SELECT meno, priezvisko FROM os_udaje INTO TEMP a;
SELECT cis_predmet FROM predmet INTO TEMP b;
SELECT meno, priezvisko, cis_predmet FROM a,b
6. Potlačenie výberu duplicitných riadkov
SELECT UNIQUE meno FROM os_udaje
alebo
SELECT DISTINCT meno FROM os_udaje
7. Spojenie s duplicitami
SELECT cis_predmet
FROM student, zap_predmety
WHERE tudent.os_cislo=zap_predmety.os_cislo
8. Potlačenie výberu duplicitných riadkov pri spojení
SELECT UNIQUE cis_predmet
FROM student, zap_predmety
WHERE student.os_cislo=zap_predmety.os_cislo
9. Triedenie
SELECT meno, priezvisko
FROM os_udaje
ORDER BY priezvisko
10. Triedenie podľa dvoch stĺpcov
SELECT meno, priezvisko
FROM os_udaje
ORDER BY meno, priezvisko
11. Triedenie so zadaním smeru triedenia - vzostupne
SELECT nazov
FROM predmet
ORDER BY nazov ASC
12. Triedenie so zadaním smeru triedenia - zostupne
SELECT nazov
FROM predmet
ORDER BY nazov DESC
13. Triedenie podľa viacerých stĺpcov v rôznom smere
SELECT meno, priezvisko
FROM os_udaje
ORDER BY meno DESC ,priezvisko ASC
14. Triedenie podľa viacerých stĺpcov v rôznom smere s poradovým číslom
SELECT meno, priezvisko, psc, obec
FROM os_udaje
ORDER BY 4 DESC,2 ASC
15. Výber podreťazcov
SELECT meno, priezvisko[1,10], obec[1,8], psc
FROM os_udaje
16. Práca s podmienkami
Relačné operátory sú :
< ; ; <= ; = ; <> alebo != ; =
SELECT meno, priezvisko, rod_cislo
FROM os_udaje
WHERE rod_cislo[3,3]= 5
17. Porovnávanie znakových reťazcov
SELECT meno, priezvisko, rod_cislo
FROM os_udaje
WHERE priezvisko[1,2]="Ko"
18. Porovnávanie znakových reťazcov
SELECT meno, priezvisko, rod_cislo
FROM os_udaje
WHERE priezvisko[1,2]="Ko"
19. Porovnávanie INCLUDE
SELECT meno, priezvisko, rod_cislo, obec
FROM os_udaje
WHERE obec="Zilina"
20. Porovnávanie EXCLUDE
SELECT meno, priezvisko, rod_cislo, obec
FROM os_udaje
WHERE obec!="Zilina"
alebo
SELECT meno, priezvisko, rod_cislo, obec
FROM os_udaje
WHERE obec<>"Zilina"
21. Porovnávanie v danom rozsahu
SELECT meno, priezvisko, rod_cislo, obec, psc
FROM os_udaje
WHERE psc= 01001 AND psc<80000
22. Porovnávanie v danom rozsahu BETWEEN
SELECT meno, priezvisko, rod_cislo ,obec, psc
FROM os_udaje
WHERE psc BETWEEN 01001 AND 80000
23. Porovnávanie mimo daný rozsah NOT BETWEEN
SELECT meno, priezvisko, rod_cislo ,obec, psc
FROM os_udaje
WHERE psc NOT BETWEEN 01001 AND 80000
24. Výber z množiny
SELECT meno, priezvisko, rod_cislo
FROM os_udaje
WHERE rod_cislo[1,2]="72" OR
rod_cislo[1,2]="73"
25. Výber z množiny
SELECT meno, priezvisko, rod_cislo
FROM os_udaje
WHERE meno[1,2] IN ("Er", "St")
26. Výber z množiny - komplement
SELECT meno, priezvisko, rod_cislo
FROM os_udaje
WHERE meno[1,2] NOT IN ("Er", "St")
WHERE podmienka:
výraz relačný-operátor výraz
výraz [NOT] BETWEEN výraz AND výraz
výraz [NOT] IN (položky)
meno_stĺpca [NOT] LIKE "string" [ESCAPE escape-znak]
výraz relačný-operátor {ALL | [ANY | SOME]} (SELECT-príkaz)
výraz [NOT] IN (SELECT-príkaz)
[NOT] EXISTS (SELECT-príkaz)
meno_stĺpca IS [NOT] NULL
6.2.1.4 Príkazy pre riadenie prístupu
GRANT tabuľkové_privilégium ON meno_tabulky
TO {PUBLIC | zoznam_užívateľov}
[WITH GRANT OPTION] [AS grantor]
GRANT databázové_privilégium
TO {PUBLIC | zoznam_užívateľov}
REVOKE { tabuľkové_privilégium ON meno_tabulky|
databázové_privilégium }
FROM {PUBLIC | zoznam_užívateľov}
LOCK TABLE meno_tabulky IN {SHARE | EXCLUSIVE} MODE
UNLOCK TABLE meno_tabulky
CREATE SCHEMA AUTHORIZATION užívateľ
{množina_príkazov create a/alebo príkazov grant }
DATABÁZOVÉ PRIVILÉGIÁ
CONNECT
RESOURCE
DBA
TABUĽKOVÉ PRIVILÉGIÁ
ALTER
DELETE
INDEX
INSERT
SELECT[(stĺpec)]
UPDATE [(stĺpec)]
ALL [PRIVILEGES]
BEGIN WORK
COMMIT WORK
ROLLBACK WORK
6.2.1.5 Utility a doplňujúce príkazy
DATABASE meno_databázy
CLOSE DATABASE
RENAME COLUMN table.staré_meno_stĺpca TO nové_meno_stĺpca
RENAME TABLE staré_meno_tabulky TO nové_meno_tabulky
UPDATE STATISTICS [FOR TABLE meno_tabulky]
LOAD FROM "cesty_k_súboru" [DELIMITER "znak"] INSERT INTO meno_tabulky
UNLOAD TO "cesty_k_súboru" [DELIMITER "znak"] SELECT-príkaz
OUTPUT TO {"meno_súboru" | PIPE "meno_programu"}
[WITHOUT HEADINGS] SELECT-príkaz
1. VÝBER
SELECT * FROM predmet
WHERE gestor = "30088
2. PROJEKCIA
SELECT meno, priezvisko
FROM os_udaje
3. KARTÉZSKY SÚČIN
SELECT meno, priezvisko FROM os_udaje INTO TEMP a;
SELECT cis_predmet FROM predmet INTO TEMP b;
SELECT meno, priezvisko, cis_predmet FROM a,b
4. PRIENIK
SELECT rod_cislo FROM os_udaje
WHERE rod_cislo IN
(SELECT rod_cislo FROM student
WHERE opakovanie = "a")
5. ROZDIEL
SELECT rod_cislo FROM os_udaje
WHERE rod_cislo NOT IN
(SELECT rod_cislo FROM student
WHERE opakovanie = "a")
6. SPOJENIE
SELECT student.*, zap_predmety.*
FROM student, zap_predmety
WHERE student.os_cislo = zap_predmety.os_cislo
7. ZJEDNOTENIE
/pôvodná tabuľka os_udaje je rozdelená na 2 tabuľky os_udaje_zeny a os_udaje_muzi /
SELECT meno, priezvisko FROM os_udaje
WHERE rod_cislo[3,3] >4 INTO TEMP os_udaje_zeny;
SELECT meno, priezvisko FROM os_udaje
WHERE rod_cislo[3,3] <5 INTO TEMP os_udaje_muzi;
SELECT meno, priezvisko FROM os_udaje_zeny
UNION
SELECT meno, priezvisko FROM os_udaje_muzi
8. DELENIE
SELECT cis_predmet FROM predmet
WHERE predmet.cis_predmet = "V601" OR
predmet.cis_predmet = "A503"
INTO TEMP menovatel;
SELECT COUNT(*) pocet FROM menovatel
INTO TEMP yyy;