Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

SQL – příkaz SELECT Ing. Roman Danel, Ph.D.

Podobné prezentace


Prezentace na téma: "SQL – příkaz SELECT Ing. Roman Danel, Ph.D."— Transkript prezentace:

1 SQL – příkaz SELECT Ing. Roman Danel, Ph.D. roman.danel@vsb.cz
Institut ekonomiky a systémů řízení Hornicko–geologická fakulta

2 Přehled pojmů Projekce - FROM Restrikce - WHERE Kartézský součin
Spojování tabulek – JOIN DISTINCT – jedinečné hodnoty UNION – sjednocení dotazů EXCEPT – rozdíl dotazů INTERSECT – průnik dotazů Řazení výsledků – ORDER BY Seskupování – GROUP BY, filtr HAVING NULL Vnořené dotazy

3 SELECT – ukázky syntaxe
Výpis všech polí z tabulky, která se jmenuje Customers: SELECT * from Customers; Výpis vybraných polí z tabulky, která se jmenuje Customers: SELECT výčet_polí FROM tabulka; Výpis slopuců Company a Country z tabulky, která se jmenuje Customers, kde platí podmínka: SELECT Company, Country FROM Customers WHERE Country <> 'USA' ;

4 SELECT Výpis všech sloupců z tabulky SELECT * FROM Table
Výpis z tabuky Table1 je spojen s výpisem z Table2 SELECT col1, col2 FROM Table1 UNION SELECT col1, col2 FROM Table2 Totéž včetně duplicit UNION ALL Výsledkem dotazu je rozdíl (tj. data, která jsou v Table1 a zároveň nejsou v Table2 EXCEPT Průnik INTERSECT Kartézský součin SELECT * FROM Table1 CROSS JOIN Table2 Projekce SELECT DISTINCT col1 FROM Table1

5 SELECT SELECT Výpis dat z tabulky FROM Seznam tabulek WHERE
Predikát určující podmínku výběru (filtr dat) ORDER BY Způsob setřídění výsledných dat GROUP BY Agregační funkce (seskupení dat) HAVING Podmínka pro seskupení dat

6 Projekce Výpis části tabulky – seznam sloupců v příkazu SELECT
select jmeno, prijmeni from SEZNAM

7 Restrikce Omezení množiny řádků na základě podmínky – predikát WHERE
Podmínky lze kombinovat pomocí logických spojek select jmeno, prijmeni from SEZNAM where PRIJMENI = ‚Turek‘

8 Kartézský součin V dotazu můžeme za slovo FROM uvést více názvů tabulek. Dosáhneme tím tzv. kartézského součinu. Získáme množinu obsahující všechny kombinace záznamů Nežádoucí jev – měla by být restrikce - WHERE! select * from SEZNAM, PREDMETY

9 Spojování tabulek - JOIN
umožňuje oddělit dva druhy podmínek – jedny slouží k propojení tabulek (za JOIN … ON) a druhé k restrikci (za WHERE). Pomocí slova AS určíme aliasy tabulek select JMENO, PRIJMENI, NAZEV_PREDMET, ZNAMKA from SEZNAM left join VYSLEDKY on SEZNAM.ID_SEZNAM = VYSLEDKY.ID_SEZNAM left join PREDMETY on PREDMETY.ID_PREDMET = VYSLEDKY.ID_PREDMET where SEZNAM.PRIJMENI = 'Turek'

10 Příklad: Inner join Inner join vrátí pouze záznamy, pro které existuje
Outer join vrátí všechny záznamy zprava (right) nebo zleva (left) bez ohledu na existenci záznamů v spojované tabulce Příklad inner join: SELECT column_name(s) FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name

11 Distinct – jedinečné hodnoty
select prijmeni from SEZNAM select DISTINCT prijmeni from SEZNAM

12 Union – sjednocení dotazů
Sjednocená množina ze dvou tabulek Záznamy musí být stejného datového typu SELECT jmeno, prijmeni FROM osobni_kontakty UNION FROM autori;

13 EXCEPT – rozdíl dotazů Seznam osob, které jsou v autorech, ale nejsou v osobních kontaktech SRBD Oracle: „MINUS“ SELECT jmeno, prijmeni FROM autor EXCEPT FROM osobni_kontakty ORDER BY prijmeni

14 INTERSECT – průnik dotazů
Seznam osob, které jsou autorem a zároveň i osobou v našich kontaktech SELECT jmeno, prijmeni FROM autor INTERSECT FROM osobni_kontakty ORDER BY prijmeni

15 Řazení výsledků Ascending – vzestupně (od 0 do 9, od A do Z…)
Descending – sestupně (Z-A, 9-0) select jmeno, prijmeni from SEZNAM order by PRIJMENI [ascending / descending]

16 Seskupování – GROUP BY Seskupení dle podmínky v GROUP BY
Ve výčtu polí lze uvést pouze pole z GROUP BY nebo agregační funkce (count, sum, min, max…) Select prijmeni, count(*) from SEZNAM group by PRIJMENI

17 Seskupování – agregační funkce
Count Sum Min Max Avg (= average)

18 Seskupování – filtrování
Klauzule HAVING Select prijmeni, count(*) from SEZNAM group by PRIJMENI HAVING count(*) > 1

19 NULL hodnoty Hodnota není určena
Nelze porovnávat pomocí operátorů: =, >, < IS NULL, IS NOT NULL

20 Vnořené dotazy Zanořený dotaz Lze i na místě sloupce
SELECT max(pocet), min(pocet), avg(pocet) FROM ( SELECT count(k.id) AS pocet FROM autor AS a LEFT JOIN kniha AS k ON (a.id = k.autor) GROUP BY a.id ) AS knihy;


Stáhnout ppt "SQL – příkaz SELECT Ing. Roman Danel, Ph.D."

Podobné prezentace


Reklamy Google