28.2.2019 PB155 Úvod do databázových systémů ‹#› 28.2.2019 PB155 Úvod do databázových systémů 1 Jazyk SQL PB155 Úvod do databázových systémů ‹#› 28.2.2019 PB155 Úvod do databázových systémů 2 28.2.2019 HISTORIE (1) qV 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 qV roce 1977 byl v upravené formě SEQUEL/2 použit v databázovémsystému SYSTÉM R qV roce 1979 vznikl relační databázový systém – ORACLE qIBM uvedla v roce 1981 nový systém SQL/DS a v roce 1983 DB2 n PB155 Úvod do databázových systémů ‹#› 28.2.2019 PB155 Úvod do databázových systémů 3 28.2.2019 HISTORIE (2) qVznikají databázové systémy dalších firem – PROGRESS INFORMIX SYBASE qV roce 1986 se jazyk SQL stává standardem – SQL86 qSQL 86 obsahuje nedostatky, nejsou v něm obsaženy důležité prvky - v roce 1992 vzniká nový standard n SQL-92 nebo také SQL92. qV současné době SQL3 – řeší objektový přístup a objektové databáze obecně q PB155 Úvod do databázových systémů ‹#› 28.2.2019 PB155 Úvod do databázových systémů 4 28.2.2019 PŘÍKAZY JAZYKA SQL qSQL je neprocedurální jazyk – v příkazech popisuje „co“ chceme získat, a ne „jak“ n qSQL příkazy se dělí do dvou základních skupin n - příkazy pro manipulaci s daty – DML n - příkazy pro definici dat – DDL n n n PB155 Úvod do databázových systémů ‹#› 28.2.2019 PB155 Úvod do databázových systémů 5 28.2.2019 PŘÍKLAD DATABÁZE ISBN nazev ID_autor nakladatel pocet_stran 0001 Vekslák 14331 1 278 0002 Hříšnice 14332 2 336 0003 Svatoušek 14333 3 286 0004 Matka 14332 2 288 0005 Pidilidi 14334 2 136 ID_autor jmeno prijmeni 14331 Jan Frýbort 14332 Petra Hammersfahrová 14333 Madeline Hunter 14334 Mary Nortonová nakladatel nazev 1 Šulc 2 Albatros 3 Alpress kniha autor nakladatel PB155 Úvod do databázových systémů ‹#› 28.2.2019 PB155 Úvod do databázových systémů 6 28.2.2019 Příkazy pro manipulaci s daty – DML qSELECT, INSERT, UPDATE, DELETE n qPříkaz SELECT n - umožňuje výběr a prohlížení záznamů uložených v tabulkách n - Syntaxe: n SELECT n FROM n WHERE n GROUP BY n HAVING n ORDER BY q n n PB155 Úvod do databázových systémů ‹#› 28.2.2019 PB155 Úvod do databázových systémů 7 28.2.2019 DML qVýpis všech informací v tabulce n SELECT * FROM kniha n ISBN nazev ID_autor nakladatel pocet_stran 0001 Vekslák 14331 1 278 0002 Hříšnice 14332 2 336 0003 Svatoušek 14333 3 286 0004 Matka 14332 2 288 0005 Pidilidi 14334 2 136 PB155 Úvod do databázových systémů ‹#› 28.2.2019 PB155 Úvod do databázových systémů 8 28.2.2019 DML – projekce qVýběr sloupců z tabulky n - pomocí příkazu SELECT omezíme sloupce n SELECT nazev, pocet_stran FROM kniha nazev pocet_ stran Vekslák 278 Hříšnice 336 Svatoušek 286 Matka 288 Pidilidi 136 PB155 Úvod do databázových systémů ‹#› 28.2.2019 PB155 Úvod do databázových systémů 9 28.2.2019 DML - restrikce qOmezení počtu řádků n SELECT * FROM kniha WHERE nakladatel=2 ISBN nazev ID_autor nakladatel pocet_stran 0002 Hříšnice 14332 2 336 0004 Matka 14332 2 288 0005 Pidilidi 14334 2 136 PB155 Úvod do databázových systémů ‹#› 28.2.2019 PB155 Úvod do databázových systémů 10 28.2.2019 DML qKombinace projekce a restrikce: n SELECT nazev FROM kniha WHERE pocet_stran > 280 n nazev Hříšnice Svatoušek Matka PB155 Úvod do databázových systémů ‹#› 28.2.2019 PB155 Úvod do databázových systémů 11 28.2.2019 DML – ORDER BY qTřídění řádků na výstupu n SELECT * FROM kniha ORDER BY nazev n n n n n n n n qvybere z tabulky všechny řádky a seřadí je abecedně podle názvu ISBN nazev ID_autor nakladatel pocet_stran 0002 Hříšnice 14332 2 336 0004 Matka 14332 2 288 0005 Pidilidi 14334 2 136 0003 Svatoušek 14333 3 286 0001 Vekslák 14331 1 278 PB155 Úvod do databázových systémů ‹#› 28.2.2019 PB155 Úvod do databázových systémů 12 28.2.2019 DML qSouhrnné informace za celou tabulku qAgregační funkce - SUM (součet), AVG (průměr), MIN (minimum), MAX (maximum), COUNT (počet) n nSELECT COUNT(*),AVG(pocet_stran), MIN(počet_stran), MAX(počet_stran)FROM kniha n COUNT(*) AVG(pocet_stran) MIN(počet_stran) MAX(počet_stran) 5 264,8 136 336 PB155 Úvod do databázových systémů ‹#› 28.2.2019 PB155 Úvod do databázových systémů 13 28.2.2019 DML – GROUP BY qSouhrnné informace za skupiny qSELECT nakladatel, COUNT(*),AVG(pocet_stran), MIN(počet_stran), MAX(počet_stran) n FROM kniha GROUP BY nakladatel n n n n n q qseskupí řádky podle nakladatel qsouhrnná funkce je vypočtena pro každou vzniklou skupinu nakladatel COUNT (*) AVG(počet_stran) MIN(počet_stran) MAX(počet_stran) 1 1 278 278 278 2 3 253,3 136 336 3 1 286 286 286 PB155 Úvod do databázových systémů ‹#› 28.2.2019 PB155 Úvod do databázových systémů 14 28.2.2019 DML - HAVING qomezuje, které souhrnné řádky budou ve výsledku qSELECT nakladatel, SUM(počet_stran) FROM kniha GROUP BY nakladatel HAVING SUM(počet_stran)>280 n nakladatel SUM(pocet_stran) 2 760 3 286 PB155 Úvod do databázových systémů ‹#› 28.2.2019 PB155 Úvod do databázových systémů 15 28.2.2019 SPOJOVÁNÍ TABULEK q qspojování se provádí spojovací podmínkou, ta určuje, které řádky se mají navzájem spojit q qpodmínka se zadává jako rovnost sloupců, z nichž každý je v jedné tabulce n PB155 Úvod do databázových systémů ‹#› 28.2.2019 PB155 Úvod do databázových systémů 16 28.2.2019 SPOJOVÁNÍ TABULEK qSELECT nazev, jmeno, prijmeni FROM kniha, autor n WHERE kniha.ID_autor = autor.ID_autor n n n n n n n n nazev jmeno prijmeni Vekslák Jan Frýbort Hříšnice Petra Hammersfahrová Svatoušek Madeline Hunter Matka Petra Hammersfahrová Pidilidi Mary Nortonová PB155 Úvod do databázových systémů ‹#› 28.2.2019 PB155 Úvod do databázových systémů 17 28.2.2019 INSERT qpřidává nové řádky do tabulky q qINSERT INTO autor VALUES (14335 , ‘Jaroslav’ , ‘Hašek’) n do tabulky autor přidá nový řádek q qNeznámou hodnotu nahrazujeme speciální hodnotou NULL q qINSERT INTO autor VALUES (14335 , NULL , ‘Hašek’) q PB155 Úvod do databázových systémů ‹#› 28.2.2019 PB155 Úvod do databázových systémů 18 28.2.2019 UPDATE qopravuje dříve zadanou hodnotu v databázi qnedochází ke změně počtu řádků q qUPDATE autor SET prijmeni = ‘Novotná’ n WHERE ID_autor = 14332 n qu autora 14332 změní jméno na Novotná PB155 Úvod do databázových systémů ‹#› 28.2.2019 PB155 Úvod do databázových systémů 19 28.2.2019 DELETE qSmaže z tabulky všechny záznamy, které vyhovují podmínce q qDELETE FROM autor WHERE ID_autor = 14335 q qz tabulky autor smaže autora 14335 PB155 Úvod do databázových systémů ‹#› 28.2.2019 PB155 Úvod do databázových systémů 20 28.2.2019 Příkazy definici dat – DLL qCREATE TABLE q q DROP TABLE q qALTER TABLE q n n n n PB155 Úvod do databázových systémů ‹#› 28.2.2019 PB155 Úvod do databázových systémů 21 28.2.2019 VYTVOŘENÍ TABULKY qCREATE TABLE q qCREATE TABLE autor n ID_autor int NOT NULL n jmeno varchar(40) n prijmeni varchar(50) qVlastnost NOT NULL definuje, že položka ID_autor nemůže obsahovat prázdnou položku PB155 Úvod do databázových systémů ‹#› 28.2.2019 PB155 Úvod do databázových systémů 22 28.2.2019 ODSTARNĚNÍ TABULKY qDROP TABLE q qDROP TABLE autor q qVymaže tabulku autor PB155 Úvod do databázových systémů ‹#› 28.2.2019 PB155 Úvod do databázových systémů 23 28.2.2019 ZMĚNA TABULKY qALTER TABLE qSlouží pro manipulaci s existující tabulkou q qpřidání sloupce n ALTER TABLE autor n ADD (adresa varchar(5) ) n přidá do tabulky autor sloupec adresa PB155 Úvod do databázových systémů ‹#› 28.2.2019 PB155 Úvod do databázových systémů 24 28.2.2019 ZMĚNA TABULKY qmodifikace sloupce n ALTER TABLE autor n MODIFY (adresa varchar(10) ) n sloupec adresa nebude řetězec o délce 5 znaků ale 10 znaků q qSmazání slopce n ALTER TABLE autor n DROP adresa n smaže sloupec adresa PB155 Úvod do databázových systémů ‹#› 28.2.2019 PB155 Úvod do databázových systémů 25 28.2.2019 NASTAVENÍ PRÁV qpříkaz GRANT qGRANT - SELECT,INSERT, UPDATE, DELETE n ON n TO nPř: n GRANT UPDATE (jmeno, prijmeni) ON autor TO geust n quživatel guest má právo aktualizovat sloupec jméno a příjmení PB155 Úvod do databázových systémů ‹#› 28.2.2019 PB155 Úvod do databázových systémů 26 28.2.2019 ODEBRÁNÍ PRÁV qpříkaz REVOVE n n REVOKE DELETE ON autor FROM guest n quživateli guest bylo odejmuto právo mazání