SQL
SQL (Strucrured Query Language) je relační jazyk založen na predikátovém kalkulu. Na rozdíl od jazyků založených na relační algebře, kde se dotaz zadává algoritmem, tyto jazyky se soustředí na to co se má hledat, ne jak.
SQL obsahuje příkazy pro:
- vytváření a modifikaci relačního schematu (tabulek, databází) - CREATE, ALTER (MODIFY, ADD, DROP), DROP = vytvoř, uprav, smaž
- modifikací dat - INSERT, UPDATE, DELETE = vlož, uprav, smaž
- vyhledávání v relacích - SELECT, ORDER BY, GROUP BY, JOIN = vyhledej, seřaď, shlukuj, spoj
- transakce - COMMIT, ROLBACK = úspěšně provedená transakce, save-point uvnitř transakce ke kterému se dá vrátit byla-li transakce přerušena
- další, pro podmínky, logické operatory,... (WHERE, LIKE, BETWEEN, IN, IS NULL, DISTINCT/UNIQUE, JOIN, INNER JOIN, OUTER JOIN, EXISTS, HAVING, COUNT, VIEW, INDEX,...)
CREATE TABLE clovek(id char(5) NOT NULL, jmeno varchar(50), prijmeni varchar(50), telefon varchar(15), PRIMARY KEY (id));
další příklady vytvoření tabulekINSERT INTO clovek VALUES( 'nj001', 'Jan', 'Novotný', '777111222');
další příklady naplnění tabulekSELECT telefon FROM clovek WHERE prijmeni = "Novotný";
další příklady na selekty nad databazi Obchod
SELECT * FROM tabulkaKomentu WHERE
column1 LIKE '% je %'
OR column1 LIKE '% se %'
OR column1 LIKE '% že %'
UPDATE tabulkaKomentu SET stav = 'spam' WHERE obsah LIKE '%the%'
Filtrace anglických spamu (obsahujici klíčové slovo the)
Relační jazyk
Jazyky pro formulaci požadavků na výběr dat z relační databáze (dotazovací jazyky) se dělí do dvou skupin:
-
jazyky založené na relační algebře, kde jsou výběrové požadavky vyjádřeny jako posloupnost speciálních operací prováděných nad daty; dotaz je tedy zadán algoritmem, jak vyhledat požadované informace;
-
jazyky založené na predikátovém kalkulu, které požadavky na výběr zadávají jako predikát charakterizující vybranou relaci; je úlohou překladače jazyka nalézt odpovídající algoritmus; tyto jazyky se dále dělí na:
- n-ticové relační kalkuly
- doménové relační kalkuly
Relační algebra
Relační algebra je velmi silný dotazovací jazyk vysoké úrovně. Nepracuje s jednotlivými enticemi relací, ale s celými relacemi. Operátory relační algebry se aplikují na relace, výsledkem jsou opět relace. Protože relace jsou množiny, přirozenými prostředky pro manipulaci s relacemi budou množinové operace.
I když relační algebra v této podobě není vždy implementována v jazycích SŘBD, je její zvládnutí nutnou podmínkou pro správnost manipulací s relacemi. I složitější dotazy jazyka SQL, který je deskriptivním dotazovacím jazykem, mohou být bez zkušeností s relační algebrou problematické.
Základní operace relační algebry:
Jsou dány relace R a S.
-
Množinové operace
-
sjednocení relací téhož stupně R ∪ S = {x | x ∈ R ∨ x ∈ S}
-
průnik relací R ∩ S = {x | x ∈ R ∧ x ∈ S}
-
rozdíl relací R - S = {x | x ∈ R ∧ x ∉ S}
-
kartézský součin relace R stupně m a relace S stupně n R x S = {rs | r ∈ R ∧ s ∈ S}, kde rs = {r1,...,rm,s1,...sn}
-
Další operace relační:
-
projekce (výběr sloupců) relace R
-
selekce (výběr řádků) z relace R podle podmínky P
-
spojení relací R s atributy A a S s atributy B (join)
-
přirozené spojení relací R(A) a S(B)
N-ticový relační kalkul
-
Dr. Codd definoval n-ticový relační kalkul pro RDM jazyk matematické logiky - predikátový počet je využit pro výběr informací z relační databáze
-
název odvozen z oboru hodnot jeho proměnných - relace je množina prvků = n-tic
-
je základem pro jazyk typu SQL
-
Syntaxe je přizpůsobena programovacímu jazyku
...matematické vyjádření { x | F(x) } ...nahradíme zápisem x WHERE F(x)
- kde x je proměnná pro hledané n-tice (struktura relace), F(x) je podmínka kterou má x splňovat (výběr prvků relace)