Počítačová cvičení z předmětu Datové sklady #2 Dotazování nad relační db Vladimír Bartík Jan Kupčík Petr Leixner Vysoké učení technické v Brně, Fakulta informačních technologií Božetěchova 2, 612 66 Brno
SQL – manipulace s daty příkazy: SELECT, UPDATE, DELETE, INSERT - operandem jsou bázové tabulky nebo pohledy, výsledkem tabulka Příkaz SELECT SELECT [ALL|DISTINCT] položka [[AS] alias_sl], … FROM tabulkový_výraz [[AS] [alias_tab]], … [WHERE podmínka] [GROUP BY jm_sloupce_z_FROM|číslo, …] [HAVING podmínka] [ORDER BY jm_sloupce_z_SELECT|číslo [ASC|DESC]], … Počítačová cvičení z předmětu Datové sklady pro FP
SQL: manipulace s daty Příkaz DELETE (prohledávací) DELETE FROM jm_tabulky [WHERE podmínka] → zruší jeden nebo několik řádků tabulky splňující podmínku „Zruš informace o klientech bez účtu." DELETE FROM Klient WHERE r_cislo NOT IN (SELECT r_cislo FROM Ucet) • Příkaz UPDATE (prohledávací) UPDATE jm_tabulky SET jm_sloupce = výraz|NULL|DEFAULT, … [WHERE podmínka] → změní hodnoty specifikovaných sloupců v řádcích splňujících podmínku „Poznač vklad 1000 Kč na účet číslo 100.“ UPDATE Ucet SET stav=stav+1000 WHERE c_uctu=100 Počítačová cvičení z předmětu Datové sklady pro FP
MS SQL Server 2005 – práce s databází Spusťte si Microsoft SQL Server Management studio Programy -> Microsoft SQL Server 2005 -> Microsoft SQL Server Management studio Přihlašte se loginem a heslem pro SQL Server (u1-u20) Vytvořte si případně vlastní databázi – dle vašeho loginu pro FP Počítačová cvičení z předmětu Datové sklady pro FP
MS SQL Server 2005 - Vytvoření tabulek Skript s tabulkami http://www.fit.vutbr.cz/~ikupcik/fp/cviceni_ds_02_skripty.sql Počítačová cvičení z předmětu Datové sklady pro FP
MS SQL Server 2005 - Přihlašování do systému Programy -> Microsoft SQL Server 2005 -> Microsoft SQL Server Management studio Adresa serveru je winsql, resp. winsql.fit.vutbr.cz Počítačová cvičení z předmětu Datové sklady pro FP
MS SQL Server 2005 – použití databáze Každý účet má přiřazenu vlastní databázi: U1 = db1,…, u20 = db20 Počítačová cvičení z předmětu Datové sklady pro FP
MS SQL Server 2005 – spouštění SQL dotazů Pro spouštění SQL skriptů je potřeba se přepnout do dotazovacího okna Počítačová cvičení z předmětu Datové sklady pro FP
MS SQL Server 2005 – spouštění skriptů Nový skript se spouští přes kontextové menu – „Execute“ Počítačová cvičení z předmětu Datové sklady pro FP
MS SQL Server 2005 – refresh seznamu tabulek Aktualizovaný seznam tabulek získáte přes kontextové menu – „Refrresh“ Počítačová cvičení z předmětu Datové sklady pro FP
SQL - Jednoduché dotazy SELECT r_cislo, jmeno FROM Klient SELECT * FROM Klient SELECT DISTINCT mesto SELECT c_uctu FROM Ucet WHERE pobocka='Jánská' SELECT nazev, jmeni/25 AS jmeni_v_$ FROM Pobocka ORDER BY jmeni_v_$ Počítačová cvičení z předmětu Datové sklady pro FP
SQL - Spojení tabulek Kteří klienti mají účet v pobočce Jánská? SELECT DISTINCT K.* FROM Klient K, Ucet U WHERE K.r_cislo=U.r_cislo AND U.pobocka='Jánská’ Kteří klienti prováděli transakce v pobočce Jánská 12.10.1998? SELECT K.r_cislo,K.jmeno, T.c_uctu,T.castka FROM Klient K,Ucet U,Transakce T WHERE K.r_cislo=U.r_cislo AND U.c_uctu=T.c_uctu AND U.pobocka='Jánská' AND T.datum='1998-10-12' ORDER BY K.r_cislo Počítačová cvičení z předmětu Datové sklady pro FP
SQL - Agregační funkce, GROUP BY Kolik klientů má spořitelna? SELECT COUNT(*) AS pocet FROM Klient Kolik mají účtů a celkem na nich peněz jednotliví klienti? SELECT K.jmeno, K.r_cislo, COUNT(*) AS p,SUM(stav) AS c FROM Klient K, Ucet U WHERE K.r_cislo=U.r_cislo GROUP BY K.r_cislo, K.jmeno Počítačová cvičení z předmětu Datové sklady pro FP
SQL – Agregační funkce, GROUP BY Kteří klienti mají na účtech více než 50 000Kč? SELECT K.jmeno, K.r_cislo, SUM(stav) AS celkem FROM Klient K, Ucet U WHERE K.r_cislo=U.r_cislo GROUP BY K.r_cislo, K.jmeno HAVING SUM(stav)>50000 Počítačová cvičení z předmětu Datové sklady pro FP
SQL - Příklad vnořeného dotazu Kteří klienti mají účet jen u pobočky Jánská? SELECT DISTINCT K.* FROM Klient K, Ucet U WHERE K.r_cislo=U.r_cislo AND U.pobocka='Jánská' AND NOT EXISTS (SELECT * FROM Ucet U WHERE K.r_cislo=U.r_cislo AND U.pobocka<>'Jánská') Počítačová cvičení z předmětu Datové sklady pro FP
Vytvořte následující dotazy: SQL – Samostatné úkoly Vytvořte následující dotazy: Kteří klienti z Brna mají účet u pobočky Jánská? Jaký je celkový součet částek všech transakcí na jednotlivých účtech? Ověřte funkčnost vytvořených dotazů. Počítačová cvičení z předmětu Datové sklady pro FP
Toť vše… Počítačová cvičení z předmětu Datové sklady pro FP