Informatika pro ekonomy II přednáška 11 Jazyk SQL Informatika pro ekonomy II přednáška 11
Popis jazyka SQL SQL — Structured Query Language (strukturovaný dotazovací jazyk, IBM počátkem sedmdesátých let) Neprocedurální jazyk — příkazy popisují, CO se má provést, a ne JAK Různá dělení příkazů do skupin. Například se užívá dělení na tyto tři části: jazyk pro definici dat (DDL), jazyk pro manipulaci s daty (DML), dotazovací jazyk (DQL)
Příkazy skupiny DDL CREATE, ALTER, RENAME, DROP Definování primárního klíče PRIMARY KEY Znemožnění prázdné hodnoty NOT NULL Možnost uložení výchozí hodnoty DEFAULT Jedinečnost v některém sloupci UNIQUE Definování omezení CHECK Definování pojmenovaného omezení CONSTRAINT Definování cizích klíčů REFERENCES
Příkazy skupiny DDL Vytvoření tabulky — CREATE TABLE CREATE TABLE lide (rc varchar(10) PRIMARY KEY, jmeno varchar(15), prijmeni varchar(25) NOT NULL, utvar number(3) REFERENCES odd(utvar)) Přejmenování tabulky — RENAME RENAME lide TO zam Odstranění tabulky — DROP DROP TABLE odd
Příkazy skupiny DML Vkládání záznamů — INSERT INSERT INTO zam VALUES ('5806176789','Karel','Smolný',100) INSERT INTO zam (rc,utvar,prijmeni) VALUES ('6955112819',101,'Veselská') Modifikace hodnot — UPDATE Zvýšení platu všem zaměstnancům o 1000 Kč UPDATE zam SET plat = plat + 1000 Zvýšení platu o 20 % všem zaměstnancům útvaru 101 UPDATE zam SET plat = 1,2 * plat WHERE utvar=101 Odstranění záznamů — DELETE Výmaz zaměstnanců, kteří nemají zadané jméno DELETE FROM zam WHERE jmeno IS NULL
Příkaz skupiny DQL — SELECT Zobrazení záznamů — SELECT Zobrazení všech záznamů se všemi atributy z tabulky SELECT * FROM zam Projekce Zobrazení jen jména a příjmení z tabulky zaměstnanců SELECT jmeno,prijmeni FROM zam Výpis příjmení s čísly řádků (změna názvu sloupce výpisu) SELECT rownum AS "č.",prijmeni FROM zam Restrikce — klauzule WHERE Výpis zaměstnanců pracujících v oddělení 100 SELECT * FROM zam WHERE utvar = 100
Příkaz SELECT Spojení tabulek Výpis příjmení zaměstnanců a názvů útvaru SELECT prijmeni, nazev FROM zam, odd WHERE zam.utvar=odd.utvar Řazení vypisovaných záznamů — klauzule ORDER BY Výpis abecedního seznamu zaměstnanců SELECT jmeno,prijmeni FROM zam ORDER BY prijmeni,jmeno,utvar DESC Seskupení záznamů — klauzule GROUP BY Výpis počtu zaměstnanců v jednotlivých odděleních SELECT count(prijmeni) FROM zam GROUP BY utvar
Příkaz SELECT Výběr seskupených záznamů Výpis čísel útvarů, v nichž mají zaměstnanci větší průměrný plat než 18000 Kč SELECT utvar, avg(plat) FROM zam GROUP BY utvar having avg(plat)>18000 Poddotazy — vnoření příkazu SELECT Výpis seznamu zaměstnanců, kteří mají větší plat než Václav Novák SELECT jmeno,prijmeni FROM zam WHERE plat > (SELECT plat FROM zam WHERE jmeno='Václav' AND prijmeni='Novák')
Operátory Použití pro manipulaci s daty. Operátor provede s daty operaci a vrátí výsledek. Unární operárory operátor operand (př. NOT Zaplaceno) Binární operátory operand1 operátor operand2 (př. 5 + 4) Priority vyhodnocování (lze změnit závorkováním) Aritmetické operátory + – = * / Operátory pro porovnání = <> >= <= BETWEEN SELECT * FROM zam WHERE plat NOT BETWEEN 18000 AND 20000 SELECT * FROM zam WHERE plat >= ALL (SELECT plat FROM zam)
Operátory Logické operátory AND, OR, NOT SELECT * FROM zam WHERE (utvar = 100) AND (jmeno = ’Petr’) Množinové operátory UNION, UNION ALL, INTERSECT, MINUS SELECT prijmeni FROM zam1 UNION SELECT prijmeni FROM zam2 Operátory ANY, ALL, LIKE SELECT * FROM zam WHERE jmeno = ANY (’Jan’,’Daniel’) Regulární výrazy SELECT * FROM zam WHERE jmeno = LIKE ’K_r%’
Pseudosloupce Konstanta NULL SELECT * FROM zam WHERE plat IS NOT NULL ROWID (jedinečný identifikátor řádku tabulky) ROWNUM (dočasná hodnota řádku tabulky) SELECT prijmeni FROM zam WHERE ROWNUM <= 2 Konstanta NULL SELECT * FROM zam WHERE plat IS NOT NULL
Použitá literatura RIORDAN, R. M. Vytváříme relační databázové aplikace. Praha: Computer Press, 2000. ŠIMŮNEK, M. SQL. Kompletní kapesní průvodce. Praha: Grada, 1999.