Rauer Luboš Kopic Petr Blažek Tomáš
Structured Query Language - dotazovací jazyk -> pracuje s dotazy - neprocedurální jazyk - mocný, ale přitom jednoduchý jazyk (příkazy lze přeložit z angličtiny) - nedostačující k tvorbě kvalitních aplikací - vyvinut Donaldem D. Chamberlinem a Raymondem F. Boycem (oba IBM)
Historie - v roce 1974 vznikl pomocí IBM jazyk SEQUEL (Structured English Query Language) - v roce 1980 na trhu Oracle (Larry Ellison) pro počítače VAX - v roce 1981 na trh uveden SQL/DS od firmy IBM - po roce 1983 SEQUEL přejmenován na SQL - v roce 1986 ANSI (American National Standards Institute) a ISO (International Organization for Standards) založen standart SQL-86 pro relační databáze - v roce 1992 standart SQL2 a v roce 1993 standart SQL3
Databázové servery schraňují několik databází a umožňují manipulaci s jejich daty Nejpoužívanější: MySQL MS SQL PostgreSQL (primárně vyvíjen pro Linux a UNIX) Oracle Firebird (Open Source)
Definice dat spravuje tabulku a index struktury CREATE - vytvoří objekt v databázi, např.: CREATE TABLE Objednavky (ID INT, Nazev VARCHAR(50), Datum DATE NOT NULL, PRIMARY KEY (ID, Nazev) );
ALTER - upravuje strukturu existujícího objektu různými způsoby např.: ALTER TABLE Objednavky ADD Zamestnanec INT; TRUNCATE - odstraní všechna data z tabulky velmi rychlým způsobem (smazání dat uvnitř tabulky a ne tabulky samotné!!) např.: TRUNCATE TABLE Objednavky; DROP - odstraní objekt v databázi, obvykle nenávratně např.: DROP TABLE Objednavky;
Dotazy V SQL slouží k nalezení v databázi nebo vypočtení množiny řádků (odpovědi na dotaz), které odpovídají zadaným kritériím. Pokud každý řádek obsahuje jedinou hodnotu (jediný sloupec), hovoříme o skalárním dotazu. Dotaz obsahuje seznam sloupců, které budou zahrnuty v konečném výsledku ihned po klíčovém slově SELECT (- nejvíce souhrnný údaj) Např. SELECT Jmeno, Prijmeni
SELECT a co potom? Dotaz SELECT zahrnuje také: FROM - udává tabulka, ze kterých se mají soubory ukládat. JOIN – pro upřesnění pravidel pro spojování tabulek WHERE - zahrnuje srovnávací jazykové sdělení, které omezuje řádky vrácené dotazem. GROUP BY - syntaktická konstrukce pro agregaci (= přičlenění) vybíraných záznamů HAVING - slouží k filtrování řádků vyplývající z GROUP BY ORDER BY - určuje, které sloupce se používají k seřazení výsledných údajů (vzestupně nebo sestupně) ; - ukončení dotazu
Agregační funkce Při výběru řádků z tabulky dovoluje většina relačních databází výsledné řádky seskupit (agregovat) podle zadaného sloupce nebo výrazu, z nich složeného, pomocí GROUP BY. Nejčastější funkce: AVG() – aritmetický průměr SUM () – součet COUNT () – počet MIN () – mininum MAX () – maximum - do () lze vložit např. * (reprezentuje celý řádek) GROUP_CONCAT () – speciální funkce, jejímž výsledkem je výčet nalezených hodnot SELECT ……., GROUP_CONCAT(DISTINCT …… ORDER BY …..) FROM ….. GROUP BY …….;
Manipulace s daty INSERT - přidá řádky do existující tabulky INSERT INTO Objednavky (ID, Nazev, Datum) VALUES ('1', 'Notebook', '22/12/2012'); UPDATE - modifikuje soubory stávajících řádků tabulky UPDATE Objednavky SET Nazev = 'Lednice' WHERE ID = '1'; DELETE - odstraní existující řádky z tabulky DELETE FROM Objednavky WHERE Nazev = 'Lednice'; MERGE - spojuje INSERT a UPDATE
Kontroly výměny START TRANSACTION (nebo BEGIN WORK) - označuje počátek výměny databáze, která se doplňuje zcela nebo vůbec SAVE TRANSACTION (nebo SAVEPOINT) - uloží stav databáze do aktuálního místa při výměně COMMIT - způsobí, že všechny změny dat při výměně se provedou trvale ROLLBACK - způsobí, že dojde ke zbavení se všech změn dat od posledního COMMIT nebo ROLLBACK. Stav údajů nastaven na původní.
Datové typy varchar (textová hodnota) – maximální délka textu se uvádí slovem max int (číselná hodnota) bit (hodnota Boolean - true nebo false) datetime (datum a čas) NULL (nevyplněno)
Primární klíč (Primary Key) speciální sloupec (slouží k jednoznačné identifikaci záznamu v tabulce) dva řádky ve sloupci nesmí mít stejnou hodnotu každý řádek v tabulce musí mít jedinečnou hodnotu PK To se řeší pomocí identity field (A_I), např. ID – nastavíme A_I a po přidání deseti záznamů dostaneme 1,2,3,4,5,6,7,8,9,10
Cizí klíče (Foreign Key) vytvoří spojení jednoho nebo více sloupců se sloupcem cizí tabulky pokud se hodnoty dotčených sloupců shodují, poté příslušný řádek cizí tabulky rozvíjí řádek zdrojové tabulky přes toto spojení po smazání záznamu z cizí tabulky budou ve zdrojové tabulce řádky s odpovídající hodnotou cizího klíče taktéž smazány
Operátory = - rovno <> - nebo != - nerovno > - větší než < - menší než >= - větší nebo rovno <= - menší nebo rovno BETWEEN - mezi LIKE – hledá podle vzoru IN – více možný hodnot pro sloupec
„Více, než jsme schopni si představit, je život nás všech provázán s databázemi. Jsou v nich naše peníze, naše studijní výsledky, důchody, geny DNA nebo také fotografie s popiskem WANTED.“ Karel Žák Redaktor serveru root.cz