logo

KLAUZULE SQL

  • 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:

  1. GDZIE KLAUZULA
  2. GRUPUJ WEDŁUG KLAUZULI
  3. POSIADAJĄC KLAUZULĘ
  4. 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:

KLAUZULE SQL

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'; 

KLAUZULE SQL

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; 

KLAUZULE SQL

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'; 

KLAUZULE SQL

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; 

KLAUZULE SQL

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:

KLAUZULE SQL

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:

KLAUZULE SQL

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:

KLAUZULE SQL

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:

KLAUZULE SQL

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:

KLAUZULE SQL

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:

KLAUZULE SQL

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:

KLAUZULE SQL

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
KLAUZULE SQL

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:

KLAUZULE SQL

Wszystkie rekordy są wyświetlane w kolejności malejącej według nazwiska pracownika.