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 CONNECT2.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í:
ALL | provede SELECT, INSERT, DELETE, UPDATE a EXECUTE.
| SELECT | vybírání řádků z tabulky nebo náhledu.
| DELETE | eliminace řádků z tabulky nebo náhledu.
| INSERT | vložení nových řádků do tabulky nebo náhledu.
| UPDATE | změ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.
| EXECUTE | spuš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:
sloupec | je sloupec, ke kterému se přidělovaná oprávnění vztahují.
| jm_tabulky | je jméno existující tabulky, ke které se přidělovaná oprávnění vztahují.
| jm_náhledu | je 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 OPTION | př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 FOR | viz 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 ROLLBACK2.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:
WORK | volitelné 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éno | př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:
WORK | je volitelné slovo vyžadováno z důvodu kompatibility.
|
2.3.6- Příkazy pro specifikaci nastavení
- Klauzule SET NAMES
Klauzule SET TRANSACTION2.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:
charset | je 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 WRITE | určuje, že transakce může číst a zapisovat do tabulky. (implicitní).
| READ ONLY WAIT | určuje, že transakce může pouze číst z tabulky.
| WAIT | urč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.
| SNAPSHOT | poskytuje opakovatelně čtený náhled na databázi v momentě odstartování transakce.
| TABLE STABILITY | poskytuje opakovatelné čtení databáze zabezpečením toho, že transakce nemůže zapisovat do tabulek.
| READ COMMITTED | umožň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:
ALL | vrací aritmetický průměr všech hodnot.
| DISTINCT | eliminuje 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.
| ALL | vrátí počet všech řádků vyjma řádků s NULL hodnotou.
| DISTINCT | vrá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:
ALL | vý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:
BETWEEN | testuje, zda hodnota leží uvnitř určeného intervalu (včetně krajních hodnot).
| IN | testuje, zda je hodnota prvkem seznamu, seznam může být zadán jako sloupec tabulky, paměťová proměnná, apod.
| LIKE | srovná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).
| EXISTS | uží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.
|
|