- Klauzule SQL nám pomáhá načíst sadu nebo svazky záznamů z tabulky.
- Klauzule SQL nám pomáhá určit podmínku pro sloupce nebo záznamy tabulky.
Různé klauzule dostupné ve strukturovaném dotazovacím jazyce jsou následující:
- KDE klauzule
- SKUPINA PODLE klauzule
- MÍT klauzuli
- OBJEDNEJTE PODLE klauzule
Podívejme se na každou klauzuli jednu po druhé s příkladem. Pro psaní dotazů v příkladech použijeme databázi MySQL.
1. klauzule KDE
Klauzule WHERE v SQL se používá s dotazem SELECT, což je jeden z příkazů jazyka pro manipulaci s daty. KDE lze použít klauzule k omezení počtu řádků, které se mají zobrazit v sadě výsledků, obecně to pomáhá při filtrování záznamů. Vrací pouze ty dotazy, které splňují specifické podmínky klauzule WHERE. Klauzule WHERE se používá v příkazech SELECT, UPDATE, DELETE atd.
Klauzule WHERE s dotazem SELECT
Symbol hvězdičky se používá s klauzulí WHERE v dotazu SELECT k načtení všech hodnot sloupců pro každý záznam z tabulky.
Syntaxe klauzule where s výběrovým dotazem pro načtení všech hodnot sloupců pro každý záznam z tabulky:
SELECT * FROM TABLENAME WHERE CONDITION;
Pokud podle požadavku chceme načíst pouze selektivní sloupce, použijeme níže uvedenou syntaxi:
SELECT COLUMNNAME1, COLUMNNAME2 FROM TABLENAME WHERE CONDITION;
Zvažte tabulku zaměstnanců s následujícími údaji:
E_ID | název | Plat | Město | Označení | Datum_připojení | Stáří |
---|---|---|---|---|---|---|
1 | Sakshi Kumari | 50 000 | Bombaj | Projektový manažer | 2021-06-20 | 24 |
2 | Tejaswini Naik | 75 000 | Dillí | Systémový inženýr | 2019-12-24 | 23 |
3 | Anuja Sharma | 40 000 | Jaipur | Manažer | 2021-08-15 | 26 |
4 | Anushka Tripathi | 90 000 | Bombaj | Testeři softwaru | 2021-06-13 | 24 |
5 | Rucha Jagtap | 45 000 | Bangalore | Projektový manažer | 2020-08-09 | 23 |
6 | Rutuja Deshmukh | 60 000 | Bangalore | Manažer | 2019-07-17 | 26 |
7 | Baviskarův hlas | 55 000 | Jaipur | Systémový inženýr | 2021-10-10 | 24 |
8 | Je tam Sheik | 45 000 | Pune | Softwarový inženýr | 2020-09-10 | 26 |
9 | Swati Kumari | 50 000 | Pune | Testeři softwaru | 2021-01-01 | 25 |
10 | Mayuri Patel | 60 000 | Bombaj | Projektový manažer | 2020-10-02 | 24 |
jedenáct | Simran Khanna | 45 500 | Kolhapur | HR | 2019-01-02 | 26 |
12 | Shivani Wagh | 50500 | Dillí | Vývojář softwaru | 2016-09-10 | 25 |
13 | Kiran Maheshwari | 50 000 | Nashik | HR | 2013-12-12 | 23 |
14 | Tejal Jain | 40 000 | Dillí | Projektový manažer | 2017-11-10 | 25 |
patnáct | Mohini Shah | 38 000 | Pune | Vývojář softwaru | 2019-03-05 | dvacet |
Příklad 1:
Napište dotaz pro získání všech těch záznamů zaměstnance, kde je mzda zaměstnance vyšší než 50 000.
Dotaz:
mysql> SELECT * FROM employees WHERE Salary > 50000;
Výše uvedený dotaz zobrazí všechny záznamy o zaměstnanci, kde je mzda zaměstnance vyšší než 50 000. Mzda pod 50 000 se podle podmínek nezobrazí.
Získáte následující výstup:
Podle očekávaného výkonu se zobrazují pouze záznamy, kde je mzda zaměstnance vyšší než 50 000. V tabulce zaměstnance je šest záznamů, které splňují danou podmínku.
Příklad 2:
Napište dotaz pro aktualizaci záznamu zaměstnance a nastavte aktualizované jméno jako „Harshada Sharma“, kde název města zaměstnance je Jaipur.
Dotaz:
mysql> UPDATE employees SET Name = 'Harshada Sharma' WHERE City = 'Jaipur';
Výše uvedený dotaz aktualizuje jméno zaměstnance na „Harshada Sharma“, kde město zaměstnance je Jaipur.
Pro ověření, zda jsou záznamy aktualizovány nebo ne, spustíme výběrový dotaz.
mysql> SELECT * FROM employees;
V tabulce zaměstnance je pouze jeden záznam, kde je město zaměstnance 'Jaipur'. ID záznamu je 3, což splňuje danou podmínku. Podle dané podmínky se tedy jméno zaměstnance s ID zaměstnance 3 nyní změní na „Harshada Sharma“.
Příklad 3:
Napište dotaz na smazání záznamu zaměstnance, kde je datum nástupu zaměstnance '2013-12-12'.
Dotaz:
mysql> DELETE FROM employees WHERE Date_of_Joining = '2013-12-12';
Výše uvedený dotaz vymaže údaje o zaměstnanci, jehož datum nástupu je '2013-12-12'.
Pro ověření výsledků výše uvedeného dotazu provedeme výběrový dotaz.
mysql> SELECT *FROM employees;
V tabulce zaměstnanců je pouze jeden záznam, kde je datum nástupu zaměstnance '2013-12-12'. ID záznamu je 13, což splňuje danou podmínku. Zaměstnanec s ID zaměstnance 13 je tedy podle dané podmínky nyní vymazán z tabulky zaměstnance.
2. SKUPINA PODLE klauzule
Klauzule Seskupit podle se používá k uspořádání podobných druhů záznamů do skupin ve strukturovaném dotazovacím jazyce. Klauzule Group by ve strukturovaném dotazovacím jazyce se používá s příkazem Select. Skupina podle klauzule je umístěna za klauzulí where v příkazu SQL. Klauzule Seskupit podle se používá speciálně s agregační funkcí, tj. max (), min (), avg (), suma (), počet () k seskupení výsledku na základě jednoho nebo více než jednoho sloupce.
Syntaxe klauzule Seskupit podle:
SELECT * FROM TABLENAME GROUP BY COLUMNNAME;
Výše uvedená syntaxe vybere všechna data nebo záznamy z tabulky, ale uspořádá všechna tato data nebo záznamy do skupin na základě názvu sloupce uvedeného v dotazu.
Syntaxe klauzule Seskupit podle s agregačními funkcemi:
SELECT COLUMNNAME1, Aggregate_FUNCTION (COLUMNNAME) FROM TABLENAME GROUP BY COLUMNNAME;
Pojďme pochopit klauzuli Group By pomocí příkladů.
Zvažte tabulku zaměstnanců s následujícími údaji:
E_ID | název | Plat | Město | Označení | Datum_připojení | Stáří |
---|---|---|---|---|---|---|
1 | Sakshi Kumari | 50 000 | Bombaj | Projektový manažer | 2021-06-20 | 24 |
2 | Tejaswini Naik | 75 000 | Dillí | Systémový inženýr | 2019-12-24 | 23 |
3 | Anuja Sharma | 40 000 | Jaipur | Manažer | 2021-08-15 | 26 |
4 | Anushka Tripathi | 90 000 | Bombaj | Testeři softwaru | 2021-06-13 | 24 |
5 | Rucha Jagtap | 45 000 | Bangalore | Projektový manažer | 2020-08-09 | 23 |
6 | Rutuja Deshmukh | 60 000 | Bangalore | Manažer | 2019-07-17 | 26 |
7 | Baviskarův hlas | 55 000 | Jaipur | Systémový inženýr | 2021-10-10 | 24 |
8 | Je tam Sheik | 45 000 | Pune | Softwarový inženýr | 2020-09-10 | 26 |
9 | Swati Kumari | 50 000 | Pune | Testeři softwaru | 2021-01-01 | 25 |
10 | Mayuri Patel | 60 000 | Bombaj | Projektový manažer | 2020-10-02 | 24 |
jedenáct | Simran Khanna | 45 500 | Kolhapur | HR | 2019-01-02 | 26 |
12 | Shivani Wagh | 50500 | Dillí | Vývojář softwaru | 2016-09-10 | 25 |
13 | Kiran Maheshwari | 50 000 | Nashik | HR | 2013-12-12 | 23 |
14 | Tejal Jain | 40 000 | Dillí | Projektový manažer | 2017-11-10 | 25 |
patnáct | Mohini Shah | 38 000 | Pune | Vývojář softwaru | 2019-03-05 | dvacet |
Příklad 1:
Napište dotaz pro zobrazení všech záznamů tabulky zaměstnanců, ale seskupte výsledky podle sloupce věku.
Dotaz:
mysql> SELECT * FROM employees GROUP BY Age;
Výše uvedený dotaz zobrazí všechny záznamy tabulky zaměstnanců, ale seskupené podle sloupce věku.
Získáte následující výstup:
Příklad 2:
Napište dotaz pro zobrazení všech záznamů tabulky zaměstnanců seskupených podle označení a platu.
onclick javascript
Dotaz:
mysql> SELECT * FROM employees GROUP BY Salary, Designation;
Výše uvedený dotaz zobrazí všechny záznamy tabulky zaměstnanců, ale seskupené podle sloupce plat a označení.
Získáte následující výstup:
Příklady klauzule Seskupit podle pomocí agregačních funkcí
Příklad 1:
Napište dotaz na seznam počtu zaměstnanců pracujících na určitém označení a seskupte výsledky podle označení zaměstnance.
Dotaz:
mysql> SELECT COUNT (E_ID) AS Number_of_Employees, Designation FROM employees GROUP BY Designation;
Výše uvedený dotaz zobrazí označení s příslušným počtem zaměstnanců pracujících na tomto označení. Všechny tyto výsledky budou seskupeny podle sloupce označení.
Získáte následující výstup:
Podle očekávaného výkonu se zobrazí označení s příslušným počtem zaměstnanců.
Příklad 2:
Napište dotaz pro zobrazení součtu platu zaměstnance podle města seskupeného podle věku zaměstnance.
Dotaz:
mysql> SELECT SUM (Salary) AS Salary, City FROM employees GROUP BY City;
Výše uvedený dotaz nejprve vypočítá součet platů pracujících v každém městě a poté zobrazí součet platu s příslušným platem, ale seskupený podle sloupce věku.
Získáte následující výstup:
Podle očekávaného výkonu se zobrazí součet platů zaměstnance podle města, do kterého zaměstnanec patří. Pokud dva zaměstnanci patří do stejného města, pak budou v jedné skupině.
3. MAJÍCÍ DOLOŽKU:
Když potřebujeme umístit jakékoli podmínky do sloupce tabulky, použijeme v SQL klauzuli WHERE. Pokud ale v tu chvíli chceme použít libovolnou podmínku na sloupec v klauzuli Group By, použijeme pro podmínky sloupců klauzuli HAVING s klauzulí Group By.
Syntax:
TABLENAME GROUP BY COLUMNNAME HAVING CONDITION;
Zvažte tabulku zaměstnanců s následujícími údaji:
E_ID | název | Plat | Město | Označení | Datum_připojení | Stáří |
---|---|---|---|---|---|---|
1 | Sakshi Kumari | 50 000 | Bombaj | Projektový manažer | 2021-06-20 | 24 |
2 | Tejaswini Naik | 75 000 | Dillí | Systémový inženýr | 2019-12-24 | 23 |
3 | Anuja Sharma | 40 000 | Jaipur | Manažer | 2021-08-15 | 26 |
4 | Anushka Tripathi | 90 000 | Bombaj | Testeři softwaru | 2021-06-13 | 24 |
5 | Rucha Jagtap | 45 000 | Bangalore | Projektový manažer | 2020-08-09 | 23 |
6 | Rutuja Deshmukh | 60 000 | Bangalore | Manažer | 2019-07-17 | 26 |
7 | Baviskarův hlas | 55 000 | Jaipur | Systémový inženýr | 2021-10-10 | 24 |
8 | Je tam Sheik | 45 000 | Pune | Softwarový inženýr | 2020-09-10 | 26 |
9 | Swati Kumari | 50 000 | Pune | Testeři softwaru | 2021-01-01 | 25 |
10 | Mayuri Patel | 60 000 | Bombaj | Projektový manažer | 2020-10-02 | 24 |
jedenáct | Simran Khanna | 45 500 | Kolhapur | HR | 2019-01-02 | 26 |
12 | Shivani Wagh | 50500 | Dillí | Vývojář softwaru | 2016-09-10 | 25 |
13 | Kiran Maheshwari | 50 000 | Nashik | HR | 2013-12-12 | 23 |
14 | Tejal Jain | 40 000 | Dillí | Projektový manažer | 2017-11-10 | 25 |
patnáct | Mohini Shah | 38 000 | Pune | Vývojář softwaru | 2019-03-05 | dvacet |
Příklad 1:
Napište dotaz pro zobrazení jména zaměstnanců, platu a města, kde je maximální plat zaměstnance větší než 40 000, a seskupte výsledky podle označení.
Dotaz:
mysql> SELECT Name, City, MAX (Salary) AS Salary FROM employees GROUP BY Designation HAVING MAX (Salary) > 40000;
Získáte následující výstup:
Výše uvedený výstup ukazuje, že jméno zaměstnance, plat a město zaměstnance, kde je plat zaměstnance vyšší než 40 000, seskupené podle označení. (Zaměstnanci s podobným označením jsou zařazeni do jedné skupiny a zaměstnanci s jiným označením jsou zařazeni samostatně).
Příklad 2:
Napište dotaz pro zobrazení jména zaměstnanců a označení, kde je součet platu zaměstnance větší než 45000 a seskupte výsledky podle města.
Dotaz:
mysql> SELECT Name, Designation, SUM (Salary) AS Salary FROM employees GROUP BY City HAVING SUM (Salary) > 45000;
Získáte následující výstup:
Výše uvedený výstup zobrazuje jméno zaměstnance, označení a plat zaměstnance. Součet platů je větší než 45 000 seskupených podle města. (Zaměstnanci s podobnými městy jsou zařazeni do jedné skupiny a zaměstnanci s jiným městem nejsou podobní jsou umístěni samostatně).
4. OBJEDNÁVKA PODLE klauzule
Kdykoli chceme v SQL cokoliv třídit, použijeme klauzuli ORDER BY. Klauzule ORDER BY v SQL nám pomůže seřadit data na základě konkrétního sloupce tabulky. To znamená, že všechna data uložená v konkrétním sloupci, na kterém provádíme klauzuli ORDER BY, budou setříděna. Odpovídající hodnoty sloupců se zobrazí v pořadí, ve kterém jsme získali hodnoty v předchozím kroku.
Jak všichni víme, řazení znamená buď ve vzestupném nebo sestupném pořadí. Stejně tak ORDER BY CLAUSE třídí data vzestupně nebo sestupně podle našeho požadavku. Data budou řazena vzestupně vždy, když dojde k klíčové slovo ASC se používá s klauzulí ORDER by a klíčové slovo DESC seřadí záznamy v sestupném pořadí.
Ve výchozím nastavení se řazení v SQL provádí pomocí klauzule ORDER BY ve vzestupném pořadí, pokud jsme nezmínili pořadí řazení.
Než přejdeme k příkladu klauzule ORDER BY pro třídění záznamů, nejprve se podíváme na syntaxi, takže pro nás bude snadné tento příklad projít.
Syntaxe klauzule ORDER BY bez klíčových slov asc a desc:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMNAME;
Syntaxe klauzule ORDER BY pro řazení ve vzestupném pořadí:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME ASC;
Syntaxe klauzule ORDER BY pro řazení v sestupném pořadí:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME DESC;
Uvažujme, že máme tabulku zaměstnanců s následujícími údaji:
E_ID | název | Plat | Město | Označení | Datum_připojení | Stáří |
---|---|---|---|---|---|---|
1 | Sakshi Kumari | 50 000 | Bombaj | Projektový manažer | 2021-06-20 | 24 |
2 | Tejaswini Naik | 75 000 | Dillí | Systémový inženýr | 2019-12-24 | 23 |
3 | Anuja Sharma | 40 000 | Jaipur | Manažer | 2021-08-15 | 26 |
4 | Anushka Tripathi | 90 000 | Bombaj | Testeři softwaru | 2021-06-13 | 24 |
5 | Rucha Jagtap | 45 000 | Bangalore | Projektový manažer | 2020-08-09 | 23 |
6 | Rutuja Deshmukh | 60 000 | Bangalore | Manažer | 2019-07-17 | 26 |
7 | Baviskarův hlas | 55 000 | Jaipur | Systémový inženýr | 2021-10-10 | 24 |
8 | Je tam Sheik | 45 000 | Pune | Softwarový inženýr | 2020-09-10 | 26 |
9 | Swati Kumari | 50 000 | Pune | Testeři softwaru | 2021-01-01 | 25 |
10 | Mayuri Patel | 60 000 | Bombaj | Projektový manažer | 2020-10-02 | 24 |
jedenáct | Simran Khanna | 45 500 | Kolhapur | HR | 2019-01-02 | 26 |
12 | Shivani Wagh | 50500 | Dillí | Vývojář softwaru | 2016-09-10 | 25 |
13 | Kiran Maheshwari | 50 000 | Nashik | HR | 2013-12-12 | 23 |
14 | Tejal Jain | 40 000 | Dillí | Projektový manažer | 2017-11-10 | 25 |
patnáct | Mohini Shah | 38 000 | Pune | Vývojář softwaru | 2019-03-05 | dvacet |
Příklad 1:
Napište dotaz pro seřazení záznamů ve vzestupném pořadí podle označení zaměstnance z tabulky zaměstnanců.
Dotaz:
mysql> SELECT * FROM employees ORDER BY Designation;
Zde v dotazu SELECT je na sloupec 'Designation' použita klauzule ORDER BY k řazení záznamů, ale nepoužili jsme klíčové slovo ASC za klauzulí ORDER BY k řazení ve vzestupném pořadí. Takže ve výchozím nastavení budou data řazena vzestupně, pokud neurčíme klíčové slovo asc.
Získáte následující výstup:
Podle očekávaného výkonu se záznamy zobrazují vzestupně podle označení zaměstnance.
Příklad 2:
Napište dotaz pro zobrazení jména a platu zaměstnance ve vzestupném pořadí podle platu zaměstnance z tabulky zaměstnanců.
Dotaz:
mysql> SELECT Name, Salary FROM employees ORDER BY Salary ASC;
Zde v dotazu SELECT se na sloupec 'Plat' použije klauzule ORDER BY, aby se záznamy seřadily. Klíčové slovo ASC jsme použili k seřazení platu zaměstnance vzestupně.
Získáte následující výstup:
Všechny záznamy se zobrazují vzestupně podle mzdy zaměstnance.
Příklad 3:
Napište dotaz pro seřazení dat v sestupném pořadí podle jména zaměstnance uloženého v tabulce zaměstnanci.
Dotaz:
mysql> SELECT * FROM employees ORDER BY Name DESC;
Zde jsme k řazení dat použili klauzuli ORDER BY s dotazem SELECT aplikovaným na sloupec Název. Klíčové slovo DESC za klauzulí ORDER BY jsme použili k seřazení dat v sestupném pořadí.
Získáte následující výstup:
Všechny záznamy jsou zobrazeny v sestupném pořadí podle jména zaměstnance.