2.3.4 Příkazy pro kontrolu přístupu dat (DCL)

2.3.5 Příkazy pro řízení transakcí

2.3.6 Příkazy pro specifikaci nastavení

2.3.7 Agregační dotazy ( funkce)

2.3.8 Predikáty

3.Literatura


2.3.4

Příkazy pro kontrolu přístupu dat (DCL)
Klauzule GRANT
Klauzule REVOKE
Klauzule CONNECT

2.3.4.1

Klauzule GRANT

GRANT přiděluje uživatelům nebo jiným databázovým objektům oprávnění pro databázové objekty. Jestliže je objekt vytvořen, má oprávnění k jeho použití pouze jeho tvůrce a také pouze on má právo přidělovat oprávnění jiným uživatelům nebo objektům. K připojení tabulky nebo náhledu uživatelé nebo objekty potřebují SELECT, INSERT, UPDATE nebo DELETE oprávnění pro tyto tabulky nebo objekty. Uživatel může předat povolení přidělovat oprávnění jiným uživatelům poskytnutím tzv. < uživatelského seznamu >, který obsahuje WITH GRANT OPTION - přidělovací volby (nabídku). Oprávnění mohou být přidělena všem uživatelům uvedením specifikace PUBLIC v seznamu uživatelských jmen. Tato specifikace je platná pouze v rámci uživatelů, ne objektů.

Následující tabulka představuje výčet dostupných oprávnění:
ALLprovede SELECT, INSERT, DELETE, UPDATE a EXECUTE.
SELECTvybírání řádků z tabulky nebo náhledu.
DELETEeliminace řádků z tabulky nebo náhledu.
INSERTvložení nových řádků do tabulky nebo náhledu.
UPDATEzměna současné hodnoty jedné nebo více položek v tabulce nebo náhledu. Může být omezen na určenou podmnožinu položek.
EXECUTEspuštění.

Oprávnění mohou být odstraněna uživatelem pomocí jejich stanovení v příkazu REVOKE. Jestli se takto stanoví všechna oprávnění (ALL), potom budou všechna odstraněna. Jestliže jsou oprávnění přidělena syntaxí PUBLIC (veřejně), pak budou odstraněna pouze pro PUBLIC.

Syntaxe: GRANT{ {ALL [OPRÁVNĚNÍ] | SELECT | DELETE | INSERT     | UPDATE [(sloupec [,sloupec...])]}     ON [TABLE] {jm_tabulky | jm_náhledu}     TO {<objekt> | <uživ_seznam>}     | EXECUTE ON PROCEDURE jm_procedury     TO {<objekt> | < uživ_seznam>} }; <objekt> = PROCEDURE jm_procedury | VIEW jm_náhledu | [USER] jm_uživatele| PUBLIC [, <objekt>] < uživ_seznam > = [USER] jm_uživatele[, [USER] jm_uživatele...] [WITH GRANT OPTION]

Popis:
sloupecje sloupec, ke kterému se přidělovaná oprávnění vztahují.
jm_tabulkyje jméno existující tabulky, ke které se přidělovaná oprávnění vztahují.
jm_náhleduje jméno existujícího náhledu, ke kterému se přidělovaná oprávnění vztahují.
<objekt>je jméno uživatele nebo existujícího databázového objektu ke kterému se přidělovaná oprávnění vztahují.
<uživ_seznam >je seznam uživatelů, kterým se oprávnění přidělují.
WITH GRANT OPTIONpředává GRANT pravomoce pro oprávnění uvedené v GRANT příkazu pro < uživ_seznam >.

2.3.4.2

Klauzule REVOKE

REVOKE ruší oprávnění přístupu k databázovým objektům přidělená jiným uživatelům nebo databázovým objektů. Oprávnění jsou operace, pro které má uživatel určité pravomoce. Jednotlivá oprávnění jsou popsána v předchozí kapitole věnované klauzuli GRANT.

Pro REVOKE by měla platit tato omezení:
  • Pouze uživatel přidělující oprávnění (příkazem GRANT) může tyto odvolat.
  • Jediný uživatel může mít stanovena oprávnění pro databázový objekt od jakéhokoli počtu uživatelů jiných. REVOKE příkaz vydaný uživatelem ruší pouze oprávnění dříve stanovená právě tímto konkrétním uživatelem.
  • Oprávnění přidělovaná všem uživatelům s PUBLIC specifikací, mohou být zrušena pouze zrušením oprávnění s uvedením specifikace PUBLIC.
Syntaxe: REVOKE [GRANT OPTION FOR]{ {ALL [OPRÁVNĚNÍ] | SELECT | DELETE | INSERT      | UPDATE [(sloupec [,sloupec...])]}      ON [TABLE] {jm_tabulky | jm_náhledu}      FROM {<objekt> | <uživ_seznam>}      | EXECUTE ON PROCEDURE jm_procedury      FROM {< objekt > | < uživ_seznam >}      }; < objekt > = PROCEDURE jm_procedury | VIEW jm_náhledu      | [USER] jm_uživatele | PUBLIC [, < objekt >] < uživ_seznam > = [USER] jm_uživatele[, [USER] jm_uživatele...]
Popis:
< objekt >je jméno uživatele nebo existujícího databázového objektu, ke kterému se ruší oprávnění.
< uživ_seznam >je seznam uživatelů, jimž se ruší oprávnění.
sloupec, jm_náhledu, jm_tabulky
GRANT OPTION FORviz kap.Klauzule GRANT.

2.3.4.3

Klauzule CONNECT

CONNECT inicializuje databázové datové struktury. Volitelně specifikuje uživatelské jméno a uživatelské heslo pro připojení k databázi.

Syntaxe:
CONNECT ["]<jm_souboru>["] [USER "
username" [PASSWORD "heslo"]];
Popis:
"<jm_souboru>"je název databázového souboru. Může zahrnovat specifickou cestu a uzel.
USER "username"je řetězec, jež specifikuje uživatelské jméno pro použití při připojení k databázi.
PASSWORD "heslo"je řetězec, jež specifikuje heslo pro použití při připojení k databázi.

2.3.5

Příkazy pro řízení transakcí
Klauzule COMMIT
Klauzule ROLLBACK

2.3.5.1

Klauzule COMMIT
COMMIT je užíván pro ukončení transakce a:
  • uloží všechny změny hodnot do databází od začátku transakce.
  • signalizuje úspěšné ukončení transakce a obvykle ihned začne novou.
Syntaxe:
COMMIT [WORK] [TRANSACTION name]
Popis:
WORKvolitelné slovo, jež se užívá pro umožnění kompatibility s relačními databázemi, které je v syntaxi příkazu vyžadují.
TRANSACTION jménopředává jméno transakce databázi. Bez zadání teto volby COMMIT ukončí implicitní transakci.

2.3.5.2

Klauzule ROLLBACK

ROLLBACK ruší změny v databázi způsobené DML příkazy tím, že obnoví databázi do původního stavu, v jakém byla před zahájením transakce (od posledního volání příkazu COMMIT). Jestliže jsou DDL příkazy během transakce automaticky ukládány (Auto-Committed), pak na ně ROLLBACK nemá vliv.

Syntaxe:
ROLLBACK [WORK]
Popis:
WORKje volitelné slovo vyžadováno z důvodu kompatibility.

2.3.6

Příkazy pro specifikaci nastavení
Klauzule SET NAMES
Klauzule SET TRANSACTION

2.3.6.1

Klauzule SET NAMES

SET NAMES specifikuje nastavení písma, užívá se pro následné připojení k databázi příkazem CONNECT. Tímto SET NAMES příkaz umožňuje potlačit implicitní nastavení písma pro databázi.

Syntaxe:
SET NAMES [charset];
Popis:
charsetje název nastavení aktivního znakového kódu pro právě běžící proces. Implicitní hodnota: NONE

2.3.6.2

Klauzule SET TRANSACTION

SET TRANSACTION určuje implicitní transakční databázový přístup, konfliktní chování uzamykání, a úroveň interakce mezi jinými transakcemi přistupujícími ke stejným datům. Může také rezervovat zajištění pro tabulky.

Implicitně má transakce READ (čtení) a WRITE (zápis) přístup k databázi. Jen pro čtení - určuje READ ONLY parametr. Při pokusu aktualizace jediných dat současně více transakcemi najednou se podaří pouze první aktualizace. Jiná transakce nemůže aktualizovat tato data, dokud nebude ovládací transakce zrušena nebo úspěšně ukončena (příkazem ROLLBACK nebo COMMIT). Implicitně transakce čekají, dokud ovládací transakce neskončí a pak uplatňují své operace.

ISOLATION LEVEL (izolační úroveň) určuje, jak vzájemně reagují implicitní a jiné, současně ke stejným datům přistupující, transakce. Implicitně je ISOLATION LEVEL tzv. SNAPSHOT, což poskytuje opakovatelně čtený náhled na databázi v momentě odstartování transakce.

Syntaxe: SET TRANSACTION [READ WRITE | READ ONLY]      [WAIT | NO WAIT]      [[ISOLATION LEVEL] {SNAPSHOT [TABLE STABILITY]        | READ COMMITTED [[NO] RECORD_VERSION]}]      [RESERVING <reserving_clause>; <reserving_clause> = table[, table ...][FOR [SHARED|PROTECTED] {READ | WRITE}] [, <reserving_clause>]
Popis:
READ WRITEurčuje, že transakce může číst a zapisovat do tabulky. (implicitní).
READ ONLY WAITurčuje, že transakce může pouze číst z tabulky.
WAITurčuje, že transakce čeká na přístup v případě střetnutí s jinou transakcí (implicitní).
NO WAIT určuje, že transakce ihned hlásí chybu v případě střetnutí.
ISOLATION LEVEL(izolační úroveň) určuje jak vzájemně reagují implicitní a jiné, současně ke stejným datům přistupující, transakce. Implicitně je ISOLATION LEVEL tzv. SNAPSHOT.
SNAPSHOTposkytuje opakovatelně čtený náhled na databázi v momentě odstartování transakce.
TABLE STABILITYposkytuje opakovatelné čtení databáze zabezpečením toho, že transakce nemůže zapisovat do tabulek.
READ COMMITTEDumožňuje implicitní transakci pozorovat většinu dříve provedených aktualizačních změn provedených jinými současně probíhajícími transakcemi.

2.3.7

Agregační dotazy ( funkce)
Funkce AVG( )
Funkce CAST( )

Funkce COUNT( )

Funkce MAX( ) ( MIN( ) )

Funkce SUM( )

Funkce UPPER( ) a LOWER( )

2.3.7.1

Funkce AVG( )

AVG( ) je funkce, vracející aritmetický průměr hodnot ve sloupci. Přístupná jsou pouze numerická data. V případě neznámé nebo NULL hodnoty v řádku sloupce jsou tyto automaticky opomenuty. Jestliže je počet řádků vybraných příkazem SELECT nulový, pak AVG( ) vrací NULL hodnotu.


Syntaxe:
AVG ([ALL] | DISTINCT
);
Popis:
ALLvrací aritmetický průměr všech hodnot.
DISTINCTeliminuje duplicitní hodnoty (před výpočtem).
<val>sloupec nebo výraz představující numerický datový typ.

2.3.7.2

Funkce CAST( )

CAST( ) funkce umožňuje konverzi dat jednoho typu na jiný. Obvykle mohou být ve vyhledávací podmínce porovnávány jen hodnoty podobných datových typů. A proto může být ve vyhledávací podmínce použita tato funkce pro převod určitého datového typu na jiný.

Konverze datových typů může být prováděna následovně:

NUMERIC »CHARACTER, VARYING CHARACTER, DATE
CHARACTER, VARYING CHARACTER»NUMERIC, DATE
DATE»CHARACTER, VARYING CHARACTER, DATE
Syntaxe:
CAST ( < hodnota > AS < typ > );
Popis:
< hodnota >je převáděná hodnota.
< typ >je datový typ, na který se konvertuje.

2.3.7.3

Funkce COUNT( )

Tato funkce vrací počet hodnot ve sloupci

Syntaxe:
COUNT ( * | [ALL] < hodnota > | DISTINCT < hodnota >);
Popis:
*vrátí počet všech řádků i s NULL hodnotou.
ALLvrátí počet všech řádků vyjma řádků s NULL hodnotou.
DISTINCTvrátí počet jedinečných, ne NULL hodnot z položky.
<hodnota>položka nebo výraz vyhodnoceny jako numerický datový typ.

2.3.7.4

Funkce MAX( ) ( MIN( ) )

Určuje maximální (minimální) hodnotu ve sloupci. V případě nulového počtu řádků příslušného sloupce funkce vrací NULL. Pro datové typy CHAR, VARCHAR, nebo BLOB vrácená hodnota závisí na nastaveném znakovém kódu a jiných nastaveních příslušného sloupce.

Syntaxe:
MAX ( MIN ) ([ALL] < hodnota > | DISTINCT < hodnota >);
Popis: viz. kap. 2.3.7.3

2.3.7.5

Funkce SUM( )
SUM( ) provádí součet hodnot v číselném sloupci. V případě nulového počtu řádků příslušného sloupce funkce vrací NULL Syntaxe:
SUM( ) ([ALL] < hodnota > | DISTINCT < hodnota >);
Popis:
ALLvýpočet pro všechny řádky a sloupce (vyjma NULL hodnot).

2.3.7.6

Funkce UPPER( ) a LOWER( )
UPPER( ) konvertuje všechny znaky specifického řetězce na velké písmena LOWER( ) konvertuje všechny znaky specifického řetězce na malá písmena Syntaxe: UPPER ( < hodnota >); LOWER ( < hodnota >);
Popis:
< hodnota >je řetězec, jež se konvertuje ( např.: položka tabulky datového typu string)

2.3.8

Predikáty
Popis:
BETWEENtestuje, zda hodnota leží uvnitř určeného intervalu (včetně krajních hodnot).
INtestuje, zda je hodnota prvkem seznamu, seznam může být zadán jako sloupec tabulky, paměťová proměnná, apod.
LIKEsrovnává znakový sloupec s určeným řetězcem, znak '-' nahrazuje jeden znak a '%' nahrazuje libovolný počet znaků (znaky pro nahrazování částí řetězců závisí na konkrétním DBMS).
EXISTSužívá se při tvorbě poddotazů, kontroluje zda-li poddotaz nějaké řádky výsledků vrátil, či ne (NOT EXISTS). Bývá součástí klauzule WHERE.

3

LITERATURA
[1]Pokorný, J.: Učíme se SQL. Praha, Plus 1993, 566 s.
[2]Bejček, V. Databázové systémy.1. vyd. Brno, Nakladatelství VUT v Brně 1992,218 s.
[3]Brodský, J. - Staudek, J. - Pokorný, J.: Operační a databázové systémy. 2. vyd. Brno, Vydavatelství VUT v Brně 1992, 162 s.
[4]Farana, R.: Aplikace počítačů v řízení. Relační databáze.1.vydání Ostrava, KAKI 1995,129 s.
[5]Kroha, P.: Databáze dnes a zítra. Softwarové noviny, 1995, č. 9, s. 18-35.
[6]Microsoft Access Language Reference. Appendix B. Microsoft Access SQL. 1994.
[7]Pokorný, J.: Dotazovací jazyky. 1. vyd. Veletiny, SCIENCE 1994, 228 s.