SQL, jazyk PL/SQL.
Thursday, May 30, 2013
8:15 AM
SQL - Structured Query Language (Strukturovaný dotazovací jazyk) je standardizovaný dotazovací jazyk používaný pro práci s daty v relačních databázích
Rozdělení standardního SQL
SQL příkazy se dají rozdělit do několika kategorií podle toho co provádíte
Data definition language (DDL) neboli příkazy určené pro práci se strukturou databázových objektů. Nejčastěji tabulek.
CREATE - vytvoření
ALTER - změně
DROP - odstranění
RENAME - přejmenování
TRUNCATE - smazání, aniž by se data ukládala do koše
COMMENT - přidání komentáře
Vloženo z <[link]> 
Data manipulation language (DML) neboli příkazy určené pro manipulaci s daty
SELECT - vybrání dat z databáze
INSERT - vložení
UPDATE - úprava nebo také editace či změna
DELETE - smazaní 
MERGE - sloučení 
Vloženo z <[link]> 
Řízení transakcí. Jednotlivé příkazy DML můžete slučovat do transakcí, ale nemusíte. 
COMMIT - slouží k potvrzení veškerých změn
ROLLBACK - provede rollback veškerých změn
SAVEPOINT - vytvoří časovou značku ke které se můžete vracet.
Vloženo z <[link]> 
Data control language (DCL) neboli příkazy sloužící k přídání či odebrání opravnění k databázi a objektů v ní.
GRANT - přiřazení 
Vloženo z <[link]> 
PL/SQL
PL/SQL přidává k jazyku SQL konstrukce procedurálního programování. 
PL/SQL (Procedural Language/Structured Query Language) je procedurální nadstavba jazyka SQL od firmy Oracle založená na programovacím jazyku Ada.
PL/SQL je rozšíření jazyka SQL o procedurální rysy. Je specifické pro produkty firmy Oracle, procedurální rozšíření SQL produktů jiných firem se zpravidla navzájem liší. Výjimkou je ŠRBD DB2 společnosti IBM, který podporuje jak vlastní procedurální jazyk SQL PL, tak je plně kompatibilní s jazykem PL/SQL včetně datových typů. Základním stavebním kamenem PL/SQL je tzv. PL/SQL blok, který může být buď tělem triggeru, procedry a funkce, nebo samostatný. Struktura PL/SQL bloku je viz "základní konstrukce"
Vloženo z <[link]> 
Základním stavebním kamenem v PL/SQL je blok. Program v PL/SQL se skládá z bloků, které mohou být vnořeny jeden do druhého. Obyčejně každý blok spouští jednu logickou akci v programu. Blok má následující strukturu:
DECLARE
 deklarace
BEGIN
EXCEPTION
 ošetrení výjimek
END;
Komentáře:
-- komentář do konce řádky
/* komentář od do */
Pouze výkonná sekce je povinná, ostatní jsou doporučené. Jediné příkazy jazyka SQL, které jsou ve výkonné sekci povolené, jsou SELECT, INSERT, UPDATE, DELETE a několik dalších pro manipulaci s daty a pro kontrolu transakcí. Definiční příkazy jazyka SQL jako CREATE, DROP nebo ALTER nejsou povoleny. Avšak použití těchto příkazů lze pomocí direktivy EXECUTE IMMEDIATE "PŘÍKAZ". PL/SQL není citlivé na velikost písmen a mohou být použity komentáře ve stylu jazyka C.
Vloženo z <[link]> 
Kurzor  
Kurzor je pracovní oblast obsahující data (výsledná množina, tzv. result set), které lze dále využívat prostřednictvím operací nad kurzory
Existují implicitní a explicitní kurzory
Implicitní jsou jednořádkové SQL (INTO)
Explicitní můžeme deklarovat v části DECLARE pomocí klíčového slova CURSOR
Práce s kurzory se podobá souborům
Procedury + funkce
Bloky příkazů jazyka PL/SQL lze pojmenovat a uložit ve spustitelné formě do databáze = procedury + funkce
• Jsou uloženy ve zkompilovaném tvaru v databázi.
• Mohou volat další procedury či funkce, či samy sebe.
• Lze je volat ze všech prostředí klienta.
Funkce, na rozdíl od procedury, vrací jedinou hodnotu (procedura může vracet hodnot více, resp. žádnou).
Triggery
uživatelsky definovaný blok PL/SQL sdružený s určitou tabulkou. Je implicitně spuštěn (proveden), jestliže je nad tabulkou prováděn aktualizační příkaz
Anonymous Blocks (jenom BEGIN až END bez názvu, takže zapomenout EXEC)
Packages
Programový balík je sdružením řady funkcí a procedur s vlastním jmenným prostorem a vlastním persistentním prostorem pro proměnné v rámci jedné session
Umožňuje uchovávat hodnoty v rámci session pro řadu procedur a funkcí
Ne náhodná analogie s objekty
Nested Tables
Představují pole - množina (set, bag) v některých programovacích jazycích
Lze ukládat tyto tabulky v databázových tabulkách (oboustranná kompatibilita)
Deklarace:
DECLARE TYPE ntable IS TABLE
OF element_type;
Typ prvku může být lib. PL/SQL typ mimo odkazu (REF) a kurzoru (CURSOR)
Varrays 
variable-size array (dynamické pole) – tzv. varrays odpovídají klasickým dynamickým polím, uchovávají definovaný počet hodnot, 
pomalejší přístup SQL nástroji než k nestedtables
Loops  (FOR/WHILE)
LOOP
pocet:= pocet +1
IF pocet =100 THEN EXIT;
END IF;
END LOOP;
IF
IF podmínka THEN příkazy_1;
ELSIF podmínka THEN příkazy_2;
.
.
.
ELSE příkazy_n;
END IF;
CASE 
CASE proměnná
WHEN výraz_1 THEN příkazy_1;
WHEN výraz_2 THEN příkazy_2;
WHEN výraz_n THEN příkazy_n;
ELSE příkazy_n+1
END CASE
From <[link]> 