- Klauzula SQL pomaga nam pobrać zestaw lub wiązki rekordów z tabeli.
- Klauzula SQL pomaga nam określić warunek dla kolumn lub rekordów tabeli.
Różne klauzule dostępne w ustrukturyzowanym języku zapytań są następujące:
- GDZIE KLAUZULA
- GRUPUJ WEDŁUG KLAUZULI
- POSIADAJĄC KLAUZULĘ
- ZAMÓW PRZEZ KLAUZULĘ
Przyjrzyjmy się każdej klauzuli jeden po drugim na przykładzie. Do zapisywania zapytań w przykładach wykorzystamy bazę danych MySQL.
1. GDZIE KLAUZULA
Klauzula WHERE w języku SQL jest używana z zapytaniem SELECT, które jest jednym z poleceń języka manipulacji danymi. Klauzul WHERE można używać do ograniczania liczby wierszy wyświetlanych w zestawie wyników. Zwykle pomaga to w filtrowaniu rekordów. Zwraca tylko te zapytania, które spełniają określone warunki klauzuli WHERE. Klauzula WHERE jest używana w instrukcjach SELECT, UPDATE, DELETE itp.
Klauzula WHERE z zapytaniem SELECT
Symbol gwiazdki jest używany z klauzulą WHERE w zapytaniu SELECT w celu pobrania wszystkich wartości kolumn dla każdego rekordu z tabeli.
Składnia klauzuli Where z zapytaniem wybierającym pobierającym z tabeli wszystkie wartości kolumn dla każdego rekordu:
SELECT * FROM TABLENAME WHERE CONDITION;
Jeśli zgodnie z wymaganiami chcemy pobrać tylko wybrane kolumny, zastosujemy poniższą składnię:
SELECT COLUMNNAME1, COLUMNNAME2 FROM TABLENAME WHERE CONDITION;
Rozważ tabelę pracowników z następującymi danymi:
E_ID | Nazwa | Wynagrodzenie | Miasto | Przeznaczenie | Data dołączenia | Wiek |
---|---|---|---|---|---|---|
1 | Sakshi Kumari | 50000 | Bombaj | Menadżer projektu | 2021-06-20 | 24 |
2 | Tejaswini Naik | 75000 | Delhi | Inżynier systemowy | 24.12.2019 | 23 |
3 | Anuja Sharma | 40000 | Jaipur | Menedżer | 2021-08-15 | 26 |
4 | Anushka Tripathi | 90000 | Bombaj | Testerzy oprogramowania | 2021-06-13 | 24 |
5 | Rucha Jagtap | 45000 | Bangalore | Menadżer projektu | 2020-08-09 | 23 |
6 | Rutuja Deshmukh | 60000 | Bangalore | Menedżer | 17.07.2019 | 26 |
7 | Głos Baviskara | 55000 | Jaipur | Inżynier systemowy | 2021-10-10 | 24 |
8 | Jest Szejk | 45000 | Pune | Inżynier oprogramowania | 2020-09-10 | 26 |
9 | Swati Kumari | 50000 | Pune | Testerzy oprogramowania | 2021-01-01 | 25 |
10 | Mayuri Patel | 60000 | Bombaj | Menadżer projektu | 2020-10-02 | 24 |
jedenaście | Simran Khanna | 45500 | Kolhapur | HR | 2019-01-02 | 26 |
12 | Shivani Wagh | 50500 | Delhi | Programista | 2016-09-10 | 25 |
13 | Kiran Maheshwari | 50000 | Nashik | HR | 2013-12-12 | 23 |
14 | Tejala Jaina | 40000 | Delhi | Menadżer projektu | 2017-11-10 | 25 |
piętnaście | Mohini Shah | 38000 | Pune | Programista | 2019-03-05 | 20 |
Przykład 1:
Napisz zapytanie, które pobierze wszystkie rekordy pracownika, którego wynagrodzenie przekracza 50 000.
data w JavaScript
Zapytanie:
mysql> SELECT * FROM employees WHERE Salary > 50000;
Powyższe zapytanie wyświetli wszystkie rekordy pracownika, którego pensja jest większa niż 50000. Wynagrodzenie poniżej 50000 nie będzie wyświetlane zgodnie z warunkami.
Otrzymasz następujące dane wyjściowe:
Zgodnie z oczekiwanym wynikiem wyświetlane są tylko te rekordy, w których wynagrodzenie pracownika jest większe niż 50000. W tabeli pracowników znajduje się sześć rekordów spełniających podany warunek.
Przykład 2:
Napisz zapytanie, aby zaktualizować dane pracownika i ustawić zaktualizowane imię i nazwisko jako „Harshada Sharma”, gdzie nazwa miasta pracownika to Jaipur.
Zapytanie:
mysql> UPDATE employees SET Name = 'Harshada Sharma' WHERE City = 'Jaipur';
Powyższe zapytanie zaktualizuje nazwisko pracownika do „Harshada Sharma”, gdzie miasto pracownika to Jaipur.
Aby sprawdzić, czy rekordy są zaktualizowane, uruchomimy zapytanie wybierające.
mysql> SELECT * FROM employees;
W tabeli pracowników znajduje się tylko jeden rekord, w którym miasto pracownika to „Jaipur”. Identyfikator rekordu wynosi 3, co spełnia podany warunek. Dlatego też, zgodnie z podanym warunkiem, nazwisko pracownika o identyfikatorze pracownika 3 zostało teraz zmienione na „Harshada Sharma”.
Przykład 3:
Napisz zapytanie o usunięcie rekordu pracownika, którego data dołączenia to „2013-12-12”.
Zapytanie:
mysql> DELETE FROM employees WHERE Date_of_Joining = '2013-12-12';
Powyższe zapytanie spowoduje usunięcie danych pracownika, którego data dołączenia to '2013-12-12'.
Aby zweryfikować wyniki powyższego zapytania, wykonamy zapytanie wybierające.
mysql> SELECT *FROM employees;
W tabeli pracowników znajduje się tylko jeden rekord, w którym data dołączenia pracownika to „2013-12-12”. Identyfikator rekordu to 13, co spełnia podany warunek. Zatem zgodnie z podanym warunkiem, pracownik o identyfikatorze pracownika 13 jest teraz usuwany z tabeli pracowników.
2. GRUPUJ WEDŁUG KLAUZULI
Klauzula Group By służy do porządkowania podobnych rekordów w grupy w ustrukturyzowanym języku zapytań. Klauzula Group by w ustrukturyzowanym języku zapytań jest używana z instrukcją Select. Klauzula Group by jest umieszczana po klauzuli Where w instrukcji SQL. Klauzula Group By jest specjalnie używana z funkcją agregującą, tj. max (), min (), avg (), sum (), count () w celu grupowania wyniku na podstawie jednej lub więcej kolumn.
Składnia klauzuli Group By:
SELECT * FROM TABLENAME GROUP BY COLUMNNAME;
Powyższa składnia wybierze wszystkie dane lub rekordy z tabeli, ale uporządkuje wszystkie te dane lub rekordy w grupach na podstawie nazwy kolumny podanej w zapytaniu.
Składnia klauzuli Group By z funkcjami agregującymi:
SELECT COLUMNNAME1, Aggregate_FUNCTION (COLUMNNAME) FROM TABLENAME GROUP BY COLUMNNAME;
Przyjrzyjmy się klauzuli Group By na przykładach.
Rozważ tabelę pracowników zawierającą następujące dane:
E_ID | Nazwa | Wynagrodzenie | Miasto | Przeznaczenie | Data dołączenia | Wiek |
---|---|---|---|---|---|---|
1 | Sakshi Kumari | 50000 | Bombaj | Menadżer projektu | 2021-06-20 | 24 |
2 | Tejaswini Naik | 75000 | Delhi | Inżynier systemowy | 24.12.2019 | 23 |
3 | Anuja Sharma | 40000 | Jaipur | Menedżer | 2021-08-15 | 26 |
4 | Anushka Tripathi | 90000 | Bombaj | Testerzy oprogramowania | 2021-06-13 | 24 |
5 | Rucha Jagtap | 45000 | Bangalore | Menadżer projektu | 2020-08-09 | 23 |
6 | Rutuja Deshmukh | 60000 | Bangalore | Menedżer | 17.07.2019 | 26 |
7 | Głos Baviskara | 55000 | Jaipur | Inżynier systemowy | 2021-10-10 | 24 |
8 | Jest Szejk | 45000 | Pune | Inżynier oprogramowania | 2020-09-10 | 26 |
9 | Swati Kumari | 50000 | Pune | Testerzy oprogramowania | 2021-01-01 | 25 |
10 | Mayuri Patel | 60000 | Bombaj | Menadżer projektu | 2020-10-02 | 24 |
jedenaście | Simran Khanna | 45500 | Kolhapur | HR | 2019-01-02 | 26 |
12 | Shivani Wagh | 50500 | Delhi | Programista | 2016-09-10 | 25 |
13 | Kiran Maheshwari | 50000 | Nashik | HR | 2013-12-12 | 23 |
14 | Tejala Jaina | 40000 | Delhi | Menadżer projektu | 2017-11-10 | 25 |
piętnaście | Mohini Shah | 38000 | Pune | Programista | 2019-03-05 | 20 |
Przykład 1:
Napisz zapytanie wyświetlające wszystkie rekordy tabeli pracowników, ale pogrupuj wyniki na podstawie kolumny wieku.
Zapytanie:
mysql> SELECT * FROM employees GROUP BY Age;
Powyższe zapytanie wyświetli wszystkie rekordy tabeli pracowników, ale pogrupowane według kolumny wieku.
Otrzymasz następujące dane wyjściowe:
Przykład 2:
Napisz zapytanie wyświetlające wszystkie rekordy tabeli pracowników pogrupowane według stanowiska i wynagrodzenia.
Zapytanie:
mysql> SELECT * FROM employees GROUP BY Salary, Designation;
Powyższe zapytanie wyświetli wszystkie rekordy tabeli pracowników, ale pogrupowane według kolumny wynagrodzeń i mianowań.
Otrzymasz następujące dane wyjściowe:
Przykłady klauzuli Group By wykorzystującej funkcje agregujące
Przykład 1:
Napisz zapytanie, które wyszczególni liczbę pracowników pracujących na konkretnym powołaniu i pogrupuje wyniki według nominacji pracownika.
wydrukuj tablicę w Javie
Zapytanie:
mysql> SELECT COUNT (E_ID) AS Number_of_Employees, Designation FROM employees GROUP BY Designation;
Powyższe zapytanie wyświetli oznaczenie wraz z odpowiednią liczbą pracowników pracujących na tym nominacji. Wszystkie te wyniki zostaną pogrupowane według kolumny oznaczenia.
Otrzymasz następujące dane wyjściowe:
Zgodnie z oczekiwanymi wynikami wyświetlane jest oznaczenie z odpowiednią liczbą pracowników.
Przykład 2:
Napisz zapytanie wyświetlające sumę wynagrodzeń pracownika według miasta pogrupowaną według wieku pracownika.
Zapytanie:
mysql> SELECT SUM (Salary) AS Salary, City FROM employees GROUP BY City;
Powyższe zapytanie najpierw obliczy sumę wynagrodzeń osób pracujących w każdym mieście, a następnie wyświetli sumę wynagrodzeń z odpowiednim wynagrodzeniem, ale pogrupowaną według kolumny wieku.
Otrzymasz następujące dane wyjściowe:
Zgodnie z oczekiwanymi wynikami wyświetlana jest suma wynagrodzeń pracowników według miasta, do którego należy pracownik. Jeśli dwóch pracowników będzie należeć do tego samego miasta, to będą w jednej grupie.
3. POSIADAJĄCY KLAUZULA:
Kiedy musimy umieścić jakieś warunki w kolumnie tabeli, używamy klauzuli WHERE w SQL. Jeśli jednak w tym momencie chcemy użyć dowolnego warunku w kolumnie w klauzuli Group By, użyjemy klauzuli HAVING z klauzulą Group By dla warunków kolumn.
Składnia:
TABLENAME GROUP BY COLUMNNAME HAVING CONDITION;
Rozważ tabelę pracowników zawierającą następujące dane:
E_ID | Nazwa | Wynagrodzenie | Miasto | Przeznaczenie | Data dołączenia | Wiek |
---|---|---|---|---|---|---|
1 | Sakshi Kumari | 50000 | Bombaj | Menadżer projektu | 2021-06-20 | 24 |
2 | Tejaswini Naik | 75000 | Delhi | Inżynier systemowy | 24.12.2019 | 23 |
3 | Anuja Sharma | 40000 | Jaipur | Menedżer | 2021-08-15 | 26 |
4 | Anushka Tripathi | 90000 | Bombaj | Testerzy oprogramowania | 2021-06-13 | 24 |
5 | Rucha Jagtap | 45000 | Bangalore | Menadżer projektu | 2020-08-09 | 23 |
6 | Rutuja Deshmukh | 60000 | Bangalore | Menedżer | 17.07.2019 | 26 |
7 | Głos Baviskara | 55000 | Jaipur | Inżynier systemowy | 2021-10-10 | 24 |
8 | Jest Szejk | 45000 | Pune | Inżynier oprogramowania | 2020-09-10 | 26 |
9 | Swati Kumari | 50000 | Pune | Testerzy oprogramowania | 2021-01-01 | 25 |
10 | Mayuri Patel | 60000 | Bombaj | Menadżer projektu | 2020-10-02 | 24 |
jedenaście | Simran Khanna | 45500 | Kolhapur | HR | 2019-01-02 | 26 |
12 | Shivani Wagh | 50500 | Delhi | Programista | 2016-09-10 | 25 |
13 | Kiran Maheshwari | 50000 | Nashik | HR | 2013-12-12 | 23 |
14 | Tejala Jaina | 40000 | Delhi | Menadżer projektu | 2017-11-10 | 25 |
piętnaście | Mohini Shah | 38000 | Pune | Programista | 2019-03-05 | 20 |
Przykład 1:
Napisz zapytanie wyświetlające nazwisko pracownika, wynagrodzenie oraz miasto, w którym maksymalne wynagrodzenie pracownika jest większe niż 40000 i pogrupuj wyniki według oznaczenia.
Zapytanie:
mysql> SELECT Name, City, MAX (Salary) AS Salary FROM employees GROUP BY Designation HAVING MAX (Salary) > 40000;
Otrzymasz następujące dane wyjściowe:
Powyższe dane wyjściowe pokazują, że imię i nazwisko pracownika, wynagrodzenie i miasto pracownika, w przypadku którego wynagrodzenie pracownika jest większe niż 40000, pogrupowane według oznaczenia. (Pracownicy o podobnym przeznaczeniu umieszczani są w jednej grupie, a pracownicy o innym przeznaczeniu oddzielnie).
Przykład 2:
Napisz zapytanie wyświetlające nazwiska pracowników i oznaczenie w przypadku, gdy suma wynagrodzeń pracownika jest większa niż 45000 oraz pogrupuj wyniki według miast.
Zapytanie:
mysql> SELECT Name, Designation, SUM (Salary) AS Salary FROM employees GROUP BY City HAVING SUM (Salary) > 45000;
Otrzymasz następujące dane wyjściowe:
Powyższe dane wyjściowe pokazują imię i nazwisko pracownika, jego stanowisko i wynagrodzenie. Suma wynagrodzeń przekracza 45000 pogrupowanych według miast. (Pracownicy z podobnych miast umieszczani są w jednej grupie, a pracownicy z innego miasta nie są podobni umieszczani osobno).
4. ZAMÓWIENIE PRZEZ KLAUZULĘ
Ilekroć chcemy posortować cokolwiek w SQL, używamy klauzuli ORDER BY. Klauzula ORDER BY w SQL pomoże nam posortować dane na podstawie konkretnej kolumny tabeli. Oznacza to, że wszystkie dane zapisane w konkretnej kolumnie, na której wykonujemy klauzulę ORDER BY, zostaną posortowane. Odpowiednie wartości kolumn zostaną wyświetlone w kolejności, w jakiej uzyskaliśmy wartości we wcześniejszym kroku.
Jak wszyscy wiemy, sortowanie oznacza w kolejności rosnącej lub malejącej. W ten sam sposób ORDER BY CLAUSE sortuje dane w kolejności rosnącej lub malejącej, zgodnie z naszymi wymaganiami. Dane zostaną posortowane w kolejności rosnącej za każdym razem, gdy Słowo kluczowe ASC jest używany z klauzulą ORDER by i Słowo kluczowe DESC posortuje rekordy w kolejności malejącej.
Domyślnie sortowanie w SQL będzie odbywać się za pomocą klauzuli ORDER BY w kolejności rosnącej, jeśli nie wspomnieliśmy o kolejności sortowania.
Zanim przejdziemy do przykładu klauzuli ORDER BY sortującej rekordy, najpierw przyjrzymy się składni, aby łatwo było nam przejrzeć przykład.
Składnia klauzuli ORDER BY bez słów kluczowych asc i desc:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMNAME;
Składnia klauzuli ORDER BY do sortowania w kolejności rosnącej:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME ASC;
Składnia klauzuli ORDER BY do sortowania w kolejności malejącej:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME DESC;
Załóżmy, że mamy tabelę pracowników zawierającą następujące dane:
E_ID | Nazwa | Wynagrodzenie | Miasto | Przeznaczenie | Data dołączenia | Wiek |
---|---|---|---|---|---|---|
1 | Sakshi Kumari | 50000 | Bombaj | Menadżer projektu | 2021-06-20 | 24 |
2 | Tejaswini Naik | 75000 | Delhi | Inżynier systemowy | 24.12.2019 | 23 |
3 | Anuja Sharma | 40000 | Jaipur | Menedżer | 2021-08-15 | 26 |
4 | Anushka Tripathi | 90000 | Bombaj | Testerzy oprogramowania | 2021-06-13 | 24 |
5 | Rucha Jagtap | 45000 | Bangalore | Menadżer projektu | 2020-08-09 | 23 |
6 | Rutuja Deshmukh | 60000 | Bangalore | Menedżer | 17.07.2019 | 26 |
7 | Głos Baviskara | 55000 | Jaipur | Inżynier systemowy | 2021-10-10 | 24 |
8 | Jest Szejk | 45000 | Pune | Inżynier oprogramowania | 2020-09-10 | 26 |
9 | Swati Kumari | 50000 | Pune | Testerzy oprogramowania | 2021-01-01 | 25 |
10 | Mayuri Patel | 60000 | Bombaj | Menadżer projektu | 2020-10-02 | 24 |
jedenaście | Simran Khanna | 45500 | Kolhapur | HR | 2019-01-02 | 26 |
12 | Shivani Wagh | 50500 | Delhi | Programista | 2016-09-10 | 25 |
13 | Kiran Maheshwari | 50000 | Nashik | HR | 2013-12-12 | 23 |
14 | Tejala Jaina | 40000 | Delhi | Menadżer projektu | 2017-11-10 | 25 |
piętnaście | Mohini Shah | 38000 | Pune | Programista | 2019-03-05 | 20 |
Przykład 1:
Napisz zapytanie sortujące rekordy w kolejności rosnącej według oznaczenia pracownika z tabeli pracowników.
Zapytanie:
mysql> SELECT * FROM employees ORDER BY Designation;
Tutaj, w zapytaniu SELECT, w kolumnie „Oznaczenie” zastosowano klauzulę ORDER BY, aby posortować rekordy, ale nie użyliśmy słowa kluczowego ASC po klauzuli ORDER BY, aby posortować w porządku rosnącym. Zatem domyślnie dane będą sortowane w kolejności rosnącej, jeśli nie określimy słowa kluczowego asc.
Otrzymasz następujące dane wyjściowe:
Zgodnie z oczekiwanym wynikiem, rekordy są wyświetlane w kolejności rosnącej według oznaczenia pracownika.
Przykład 2:
Napisz zapytanie wyświetlające nazwisko pracownika oraz jego wynagrodzenie w kolejności rosnącej według wynagrodzenia pracownika z tabeli pracowników.
Zapytanie:
mysql> SELECT Name, Salary FROM employees ORDER BY Salary ASC;
Tutaj, w zapytaniu SELECT, do kolumny „Wynagrodzenie” stosowana jest klauzula ORDER BY w celu sortowania rekordów. Do posortowania wynagrodzenia pracownika w kolejności rosnącej użyliśmy słowa kluczowego ASC.
Otrzymasz następujące dane wyjściowe:
pliki Linuxa
Wszystkie rekordy wyświetlane są w kolejności rosnącej według wynagrodzenia pracownika.
Przykład 3:
Napisz zapytanie sortujące dane w kolejności malejącej według nazwiska pracownika zapisanego w tabeli pracowników.
Zapytanie:
mysql> SELECT * FROM employees ORDER BY Name DESC;
Tutaj użyliśmy klauzuli ORDER BY z zapytaniem SELECT zastosowanym w kolumnie Nazwa w celu posortowania danych. Użyliśmy słowa kluczowego DESC po klauzuli ORDER BY, aby posortować dane w kolejności malejącej.
Otrzymasz następujące dane wyjściowe:
Wszystkie rekordy są wyświetlane w kolejności malejącej według nazwiska pracownika.