OBSAH WEBU
ČTĚTE!
Toto je starší verze dokumentu!
Názvosloví
Příklad
Nechť máme tabulku STUDENT(LOGIN, JMENO, PRIJMENI, ADRESA) asi takto:
LOGIN | JMENO | PRIJMENI | ADRESA |
---|---|---|---|
xcerny00 | Petr | Černý | Brněnská 15 Vyškov |
xnovak00 | Jan | Novák | Cejl 9 Brno |
xnovak01 | Pavel | Novák | Cejl 9 Brno |
domény atributů
DLOGIN = {xnovak00, xnovak01, xbanan01, xchleba11, …}
DJMENO = {Petr, Pavel, Josef, …}
DPRIJMENI = {Grupa, Sadlo, Zendulka, …}
DADRESA = {Brněnská 15 Vyškov, Cejl 9 Brno, …}
relace = tabulka
RSTUDENT DLOGIN x DJMENO x DPRIJMENI x DADRESA
neboli podmnožina kartézského součinu jednotlivých domén
Definice
Počet atributů n relace se označuje stupeň (řád) relace, kardinalita těla relace m = |R*| se označuje kardinalita relace
Zjednodušené se relace zapisuje R(), třeba STUDENT(LOGIN, JMENO, PRIJMENI, ADRESA).
Definice
Definice
Atribut CK relace R se nazývá kandidátním klíčem, když splňuje tyto dvě časově nezávislé vlastnosti:
Definice
Primárním klíčem je jeden z kandidátních klíčů (vybraný), zbývající kandidátní klíče se nazývají alternativní (někdy také sekundární).
Definice
U žádné složky primárního klíče nesmí chybět hodnota.
Definice
Atribut FK relace R2 se nazývá cizí klíč, právě když splňuje tyto časově nezávislé vlastnosti:
Definice
Relační databáze nesmí obsahovat žádnou nesouhlasnou hodnotu cizího klíče.
SQL = structured query language, je standardizovaný dotazovací jazyk používaný pro práci s daty v relačních databázích
Příkazy e mohou více či méně lišit pro konkrétní databázi
SQL příkazy se dělí na čtyři základní skupiny:
Lze označit jako DDL – Data Definition Language
CREATE - slouží pro vytváření nových objektů
- například: tabulku, index, pohled, proceduru
Vytvoření pohledu
CREATE VIEW <nazev pohledu> AS <SELECT prikaz>
Vytvoření indexu
CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED] INDEX <nazev indexu> ON <nazev tabulky nebo pohledu>(<nazev sloupce> [ASC | DESC] [,...n])
ALTER - slouží pro upravení objektů
DROP - pro smazání objektů
Slouží pro manipulaci s daty.
DELETE - maže data z tabulky
DELETE from users where (age < 13)
UPDATE - aktualizuje data
UPDATE users set city = 'Brno', wtf = 'FIT' where (surname = 'Novák')
INSERT - vkládáme nová data
INSERT into users (name, surname, age) values ('Jiri', 'Janda', 22)
SELECT - nejčastější příkaz
Transakce a prava jsme prakticky neprobírali.
Slouží ke spojování výsledku dotazu SELECT ze dvou vstupních množin (typicky tabulek relační databáze).
Vnitřní spojení - Nejjednodušší variantou je tzv. INNER JOIN (pozn. INNER a OUTER není nutné používat a v podstatě se ani nedoporučuje používat - zbytečně prodlužují zápis). Ten odpovídá kartézskému součinu tabulek a aplikaci predikátu na tento součin.
JOIN) je zvláštním případem vnitřního spojování, kde je spojovací podmínka realizována automaticky dle shodnosti názvů a datových typů ve spojovaných tabulkách. Pro nemožnost konkrétněji definovat ve spojovacích tabulkách, ale pouze strukturou, není tento typ tolik používán.
Vnější spojení - Vnější spojování (OUTER JOIN) generuje výstupní množinu omezenou o spojovací podmínky podobně jako vnitřní spojování, pokud však není nalezen vhodný řádek v druhé množině, je nenalezený řádek nahrazen hodnotami NULL. Dle typu vnějšího spojení mohou být doplňovány řádky z jedné nebo obou vstupních množin. Výsledkem vnějšího spojování jsou řádky naplněné hodnotami ze vstupních množin i částečně.
Částečné vnější spojování - Pro částečné vnější spojování jsou definována klíčová slova LEFT a RIGHT, která definují, která vstupní množina má zahrnuté všechny řádky v množině výstupní, tj. která vstupní množina není doplňována o NULL hodnoty
Lze použít i FULL OUTER JOIN.
SQL umožňuje v klauzuli FROM uvádět nejen jména tabulek, ale i tabulkové výrazy, resp. výraz spojení
Pohled je virtuální databázová struktura, která může obsahovat data z nula až více tabulek.
V prohlížeči máte záložky, na ploše zástupce a v databázi? V databázi jsou pohledy. Z pohledů lze především vybírat data (k čemuž slouží nejčastěji), a někdy do nich lze i data vkládat. Databázové systémy by se bez pohledů obešly - podobně, jako byste se na ploše obešli bez zástupců nebo v prohlížeči bez záložek. Ale práce s nimi může být mnohem pohodlnější.
· *Pohledy mohou obsahovat výrazy (jako jsou vestavěné funkce MySQL nebo uživatelsky definované funkce).
Pohledy s klauzulemi DISTINCT, GROUP BY, HAVING, s agregačními funkcemi a spojující několik tabulek, umožňují jen čtení.
create view vwPracovnici as select * from pracovnici;
- Od tohoto okamžiku můžete pohled použít jako tabulku, ve smyslu:
select * from vwPracovnici;
create view vwPrumernyVek as select avg(vek) as prumer from pracovnici;
- Vrátí průměrný věk (výsledek bude obsahovat vždy jen jeden řádek). Neboli pohled může obsahovat agregační funkci.
Používáme pohledy, pokud
Procedura - Uložená procedura je sada příkazů SQL, které jsou:
Procedury mohou dělat to, co normální příkazy:
Příklad:
create procedure sp_vratradky (od int, do int) begin select * from software where id between od and do; end
A zavolat pomocí příkazu:
call sp_vratradky 10, 20)
Triggery - Trigger je uložená procedura, která se spouští v souvislosti s provedením nějakého akčního dotazu na tabulce, nebo taky pouze ten spoustec, ktery ma navazanou uálost, a poté proceduru.
create trigger trSaveRows before delete on bezpecna for each row begin insert into bezpecna_zaloha(id, jmeno, plat, cas_odstraneni, uzivatel) values (old.id, old.jmeno, old.plat, now(), user()); end;
EMBEDED SQL / dynamic SQL??
Diskuze