Příkaz SELECT je nejdůležitějším příkazem ve SQL. Používá se k získání dat z databáze. Základní syntaxe příkazu SELECT je následující:

SELECT column_1, column_2, ...
FROM table_name;


To už jsme si ale ukazovali v předešlém tutorialu o datových typech. V dnešním tutorialu se budeme bavit o základních klauzulích v jazyce SQL. Co to je vlastně klauzule? Klauzule jsou části příkazu jazyka SQL, díky kterému můžeme mít kontrolu nad výsledkem dotazu. Ve výše uvedeném příkazu se nám vrátí všechny sloupce z tabulky s názvem table_name.

Základní klauzule, které lze použít s příkazem SELECT nám ovšem umožňují získávat data z databáze mnohem efektivněji!

Klauzule WHERE

Klauzula WHERE se používá k filtrování dat, která se mají vrátit. Syntaxe klauzule WHERE je následující:

SELECT sloupec_1, sloupec_2, ...
FROM název_tabulky
WHERE podmínka;

Abychom si uvedly nějaké konkrétní případy můžeme zase použít tabulku dogs. V následujícím příkazu si vyfiltrujeme všechny data z tabulky dogs v databázy dogsdb, kde ovšem budeme chtít pouze pejsky kteří se jmenují Benny. Pokud příkaz zadáme do MySQL Workbench tak vidíme že se nám vyfiltrují pouze dva řádky. které jsou v tabulce uloženy.

SELECT * FROM dogsdb.dogs
WHERE DogsName='Benny';
klauzule where
Podmínek můžeme samozřejmě použít velké množství, níže uvedu seznam operátorů, které můžeme pro filtrování použít:

= Rovnost
< Menší než
<= Menší nebo rovno
> Větší než
<= Větší nebo rovno
<> Nerovná se

V následujícím příkazu si vyfiltrujeme všechny pejsky, kteří jsou starší více jak 3 roky:

SELECT * FROM dogsdb.dogs
WHERE DogsAge > 3;
klauzule where podmínky

Klauzule ORDER BY

Klauzule ORDER BY se používá k řazení dat, čas odčasu je potřeba seřadit data například v sestupném pořadí. To si můžeme ukázat na jednoduchém příkladu kde použime funkci DESC.

SELECT * FROM dogsdb.dogs
ORDER BY DogsAge desc;

Tento jednoduchý kód nám vypíše všechny řádky tabulky dogs. Ovšem sestupně vzhledem k věku pejsků. Můžeme použít i obrácenou funkci ASC, která vrátí data v zestupném pořadí.

klauzule order_by

Velice často se ale asi budete setkávat například s kombinací filtru řazení. To znamená že se filtrační podmínka kombinuje s řazením zobrazených řádků. Klauzuli ORDER BY zapíšeme až za klauzuli WHERE. Příklad si uvedeme níže, kde si vypíšeme všechny pejsky se jménem Benny sestupně podle věku.

SELECT * FROM dogsdb.dogs
WHERE DogsName = 'Benny'
ORDER BY DogsAge desc;

Klauzule GROUP BY

Funkce GROUP BY se používá k seskupování záznamů v tabulce na základě jednoho nebo více sloupců. To se provádí před vyhodnocením jakýchkoli agregačních funkcí, jako je SUM, AVG, COUNT nebo MIN. Když se klauzule GROUP BY použije, databáze seskupí záznamy v tabulce na základě hodnot sloupců uvedených v klauzuli. Poté se pro každou skupinu vyhodnotí všechny agregační funkce uvedené v seznamu SELECT. Uvedeme si to na naší oblíbené tabulce dogs, ve které si chceme zobrazit skupiny v kterých uvidíme v jakých městech máme kolik pejsků.

SELECT count(DogsCity), DogsCity
FROM dogsdb.dogs
GROUP BY DogsCity;
klauzule group_by

Klauzule HAVING

Klauzule HAVING se používá ve SQL k filtrování seskupených záznamů. Je to podobné klauzuli WHERE, ale používá se po klauzuli GROUP BY. Klauzule HAVING může být použita k filtrování záznamů na základě agregačních funkcí. To si ukážeme níže, kde si vyfiltrujeme pouze hodnoty které se rovnají = 2. Tedy ty seskupení měst které obsahují pouze 2 pejsky.

SELECT count(DogsCity), DogsCity
FROM dogsdb.dogs
GROUP BY DogsCity
HAVING count(DogsCity) = 2;
klauzule having