Autor, Název akce Databázové systémy a SQL Lekce 3 Daniel Klimeš 1 Autor, Název akce Minulý domácí úkol Daniel Klimeš, Databázové systémy a SQL 2 •Vytvořit tabulku student se sloupci • jmeno, prijmeni, datum_narozeni, rok_prijeti • Vložit řádek se svým jménem • Pomocí update prohoďte jméno a příjmení, • UPDATE tabulka SET jmeno = prijmeni, prijmeni = jmeno • Převeďte vše na velká písmena, •UPDATE tabulka SET jmeno = UPPER(jmeno), prijmeni = UPPER(prijmeni) •Odstraňte diakritiku (ř -> r, č->c), •UPDATE tabulka SET jmeno = TRANSLATE (jmeno, ‘řč’,’rc’) •Vyberte iniciály (1. písmeno jméno + 1. příjmení) •SELECT SUBSTR(jmeno,1,1) || SUBSTR (prijmeni,1,1) FROM tabulka • Autor, Název akce Operátory za WHERE Daniel Klimeš, Databázové systémy a SQL 3 = Rovná se <> Nerovná se IS NULL/ IS NOT NULL Testování prázdné/neprázdné hodnoty [NOT] IN (hodnota, hodnota, …) Rovnost [NEROVNOST] se skupinou hodnot LIKE Podobný řetězec SELECT * FROM tabulka WHERE sloupec IN (1,5,7) SELECT * FROM tabulka WHERE sloupec NOT IN (‘a’, ‘d’, ‘j’) SELECT * FROM tabulka WHERE sloupec LIKE (‘Jan%’) % = žádný nebo libovolné znaky Autor, Název akce Logické operátory Daniel Klimeš, Databázové systémy a SQL 4 AND, OR, NOT AND TRUE FALSE NULL TRUE TRUE FALSE NULL FALSE FALSE FALSE FALSE OR TRUE FALSE NULL TRUE TRUE TRUE TRUE FALSE TRUE FALSE NULL NOT TRUE = FALSE NOT FALSE = TRUE NOT NULL = NULL AND se vyhodnocuje před OR ! WHERE jmeno = ‘Jan’ AND prijmeni = ‘Novák’ Autor, Název akce LOGICKÉ OPERÁTORY - cvičení Daniel Klimeš, Databázové systémy a SQL 5 X AND FALSE => FALSE X OR TRUE => TRUE FALSE AND FALSE OR TRUE => TRUE FALSE AND (FALSE OR TRUE) => FALSE 5 > 1 AND NULL IS NOT NULL OR 1 = 1 => TRUE Autor, Název akce GROUP BY, HAVING •Agregace Daniel Klimeš, Databázové systémy a SQL 6 Autor, Název akce GROUP BY Daniel Klimeš, Databázové systémy a SQL 7 Seskupení položek SELECT sloupec, count(*), MAX(sloupec2), MIN(sloupec2) FROM tabulka GROUP BY sloupec; SELECT sloupec, count(*), MAX(sloupec2), MIN(sloupec2) FROM tabulka WHERE sloupec2 > 1 and … GROUP BY sloupec; SELECT sloupec, count(*), MAX(sloupec2), MIN(sloupec2) FROM tabulka GROUP BY sloupec HAVING count(*) > 1 Autor, Název akce Agregační funkce Daniel Klimeš, Databázové systémy a SQL 8 Funkce Popis Pozn. COUNT(*) Počet AVG(sloupec) Aritmetický průměr MIN(sloupec) Minimum MAX(sloupec) Maximum STDDEV(sloupec) Směrodatná odchylka SUM(sloupec) Suma MEDIAN(sloupec) Medián ORACLE Autor, Název akce COUNT Daniel Klimeš, Databázové systémy a SQL 9 SELECT COUNT(*), --všechny řádky COUNT(sloupec), -- všechny NOT NULL řádky COUNT(DISTINCT sloupec) -- počet unikátních hodnot FROM tabulka; SELECT COUNT(*), COUNT(jmeno), COUNT(DISTINCT jmeno) FROM student Autor, Název akce MODIFIKÁTOR DISTINCT Daniel Klimeš, Databázové systémy a SQL 10 SELECT DISTINCT sloupec1 FROM tabulka; -- unikátní hodnoty sloupce SELECT DISTINCT sloupec1, sloupec2 FROM tabulka; -- unikátní kombinace sloupců SELECT DISTINCT jmeno FROM student SELECT jmeno FROM student GROUP BY jmeno Autor, Název akce Cvičení - agregace Daniel Klimeš, Databázové systémy a SQL 11 Zjistěte • Počet jednotlivých křestních jmen v tabulce student • Průměrný věk studenta, součet věků • Počet studentů a průměrný věk studenta podle sloupce studium • pouze skupiny, které mají víc jak 3 studenty • pouze studenty se zkouškou WHERE x HAVING Autor, Název akce SELECT Daniel Klimeš, Databázové systémy a SQL 12 •SELECT •FROM •WHERE •GROUP BY •HAVING •ORDER BY Autor, Název akce PRÁCE S VÍCE TABULKAMI • Daniel Klimeš, Databázové systémy a SQL 13 Autor, Název akce Práce s více tabulkami Daniel Klimeš, Databázové systémy a SQL 14 ID pacienta Jmeno Prijmeni 1 Jan Novák 2 Jana Nová 3 Karel Starý ID pacienta Datum vysetreni Vysledek vysetreni 1 12.1.2011 39,5 1 15.3.2011 36,8 2 2.2.2011 37,5 + Autor, Název akce Vazby Daniel Klimeš, Databázové systémy a SQL 15 ENTITY = tabulky RELATIONSHIP = vazba E-R diagramy = datové modely 1:1 – jeden řádek tabulky A má vazbu s jedním řádkem tabulky B 1:n – k jednomu řádku tabulky A se váže 0 až N řádků tabulky B m:n – k jednomu řádku tabulky A se váže 0 až N řádků tabulky B ale zároveň k jednomu řádku z B se váže 0 až N řádků A Autor, Název akce ER diagram Daniel Klimeš, Databázové systémy a SQL 16 1:n 1:n n:1 Vidlička = dětská závislá tabulka Autor, Název akce VYUKA – datový model Daniel Klimeš, Databázové systémy a SQL 17 Vazba student – predmet m-n => „mezitabulka“ VYUKA C:\aa\export_vilp.jpg 1:n 1:n n:1 Vidlička = dětská závislá tabulka Autor, Název akce Postup tvorby datového modelu Daniel Klimeš, Databázové systémy a SQL 18 •Definice entit (tabulek) •Stanovení primárních klíčů všech tabulek •Tvorba vazeb •Migrace primárního klíče rodičovské tabulky do dětské tabulky •Cizí klíč může, ale nemusí být součástí primárního klíče dětské tabulky Autor, Název akce Cvičení a domácí úkol Daniel Klimeš, Databázové systémy a SQL 19 Spusťte skript2.sql • •Vytvořte si vlastní předmět (řádek v tabulce předmět) •Zkuste vytvořit předmět s neexistujícím UCO_ucitele •Přihlaste se do zvolených předmětů •Odhlašte se ze všech předmětů •Přihlaste se do všech dostupných předmětů •Zkuste smazat všechny učitele