Jazyk SQL HISTORIE (1) q V polovině 70. let vznikají databázové systémy založené na relacích a relační algebře, proto bylo nutné vytvořit sadu příkazů, kterými by se relační databáze ovládaly – vznikl jazyk SEQUEL (Structured English Query Language) q V roce 1977 byl v upravené formě SEQUEL/2 použit v databázovémsystému SYSTÉM R q V roce 1979 vznikl relační databázový systém – ORACLE q IBM uvedla v roce 1981 nový systém SQL/DS a v roce 1983 DB2 HISTORIE (2) q Vznikají databázové systémy dalších firem – PROGRESS INFORMIX SYBASE q V roce 1986 se jazyk SQL stává standardem – SQL86 q SQL 86 obsahuje nedostatky, nejsou v něm obsaženy důležité prvky - v roce 1992 vzniká nový standard SQL-92 nebo také SQL92. q V současné době SQL3 – řeší objektový přístup a objektové databáze obecně PŘÍKAZY JAZYKA SQL q SQL je neprocedurální jazyk – v příkazech popisuje „co“ chceme získat, a ne „jak“ q SQL příkazy se dělí do dvou základních skupin - příkazy pro manipulaci s daty – DML - příkazy pro definici dat – DDL PŘÍKLAD DATABÁZE Příkazy pro manipulaci s daty – DML q SELECT, INSERT, UPDATE, DELETE q Příkaz SELECT - umožňuje výběr a prohlížení záznamů uložených v tabulkách - Syntaxe: SELECT FROM WHERE GROUP BY HAVING ORDER BY DML q Výpis všech informací v tabulce SELECT * FROM kniha DML – projekce q Výběr sloupců z tabulky - pomocí příkazu SELECT omezíme sloupce SELECT nazev, pocet_stran FROM kniha DML - restrikce q Omezení počtu řádků SELECT * FROM kniha WHERE nakladatel=2 DML q Kombinace projekce a restrikce: SELECT nazev FROM kniha WHERE pocet_stran > 280 DML – ORDER BY q Třídění řádků na výstupu SELECT * FROM kniha ORDER BY nazev q vybere z tabulky všechny řádky a seřadí je abecedně podle názvu DML q Souhrnné informace za celou tabulku q Agregační funkce - SUM (součet), AVG (průměr), MIN (minimum), MAX (maximum), COUNT (počet) SELECT COUNT(*),AVG(pocet_stran), MIN(počet_stran), MAX(počet_stran)FROM kniha DML – GROUP BY q Souhrnné informace za skupiny q SELECT nakladatel, COUNT(*),AVG(pocet_stran), MIN(počet_stran), MAX(počet_stran) FROM kniha GROUP BY nakladatel q seskupí řádky podle nakladatel q souhrnná funkce je vypočtena pro každou vzniklou skupinu DML - HAVING q omezuje, které souhrnné řádky budou ve výsledku q SELECT nakladatel, SUM(počet_stran) FROM kniha GROUP BY nakladatel HAVING SUM(počet_stran)>280 SPOJOVÁNÍ TABULEK q spojování se provádí spojovací podmínkou, ta určuje, které řádky se mají navzájem spojit q podmínka se zadává jako rovnost sloupců, z nichž každý je v jedné tabulce SPOJOVÁNÍ TABULEK q SELECT nazev, jmeno, prijmeni FROM kniha, autor WHERE kniha.ID_autor = autor.ID_autor INSERT q přidává nové řádky do tabulky q INSERT INTO autor VALUES (14335 , ‘Jaroslav’ , ‘Hašek’) do tabulky autor přidá nový řádek q Neznámou hodnotu nahrazujeme speciální hodnotou NULL q INSERT INTO autor VALUES (14335 , NULL , ‘Hašek’) UPDATE q opravuje dříve zadanou hodnotu v databázi q nedochází ke změně počtu řádků q UPDATE autor SET prijmeni = ‘Novotná’ WHERE ID_autor = 14332 q u autora 14332 změní jméno na Novotná DELETE q Smaže z tabulky všechny záznamy, které vyhovují podmínce q DELETE FROM autor WHERE ID_autor = 14335 q z tabulky autor smaže autora 14335 Příkazy definici dat – DLL q CREATE TABLE q DROP TABLE q ALTER TABLE VYTVOŘENÍ TABULKY q CREATE TABLE q CREATE TABLE autor ID_autor int NOT NULL jmeno varchar(40) prijmeni varchar(50) q Vlastnost NOT NULL definuje, že položka ID_autor nemůže obsahovat prázdnou položku ODSTARNĚNÍ TABULKY q DROP TABLE q DROP TABLE autor q Vymaže tabulku autor ZMĚNA TABULKY q ALTER TABLE q Slouží pro manipulaci s existující tabulkou q přidání sloupce ALTER TABLE autor ADD (adresa varchar(5) ) přidá do tabulky autor sloupec adresa ZMĚNA TABULKY q modifikace sloupce ALTER TABLE autor MODIFY (adresa varchar(10) ) sloupec adresa nebude řetězec o délce 5 znaků ale 10 znaků q Smazání slopce ALTER TABLE autor DROP adresa smaže sloupec adresa NASTAVENÍ PRÁV q příkaz GRANT q GRANT - SELECT,INSERT, UPDATE, DELETE ON TO Př: GRANT UPDATE (jmeno, prijmeni) ON autor TO geust q uživatel guest má právo aktualizovat sloupec jméno a příjmení ODEBRÁNÍ PRÁV q příkaz REVOVE REVOKE DELETE ON autor FROM guest q uživateli guest bylo odejmuto právo mazání