3.1 Porównywanie wartości: <, >, =, <>

Jednym z najczęściej używanych słów kluczowych podczas pisania zapytań SQL jest WHERE. To za jego pomocą mówimy MySQL, które wiersze tabeli chcemy przefiltrować (wybrać).

Po słowie kluczowym WHEREmożesz napisać bardzo złożone i trudne warunki. Jakie więc operacje może zawierać ten warunek?

Operator Opis Przykład
< Mniej pensja < 40000
> Więcej wynagrodzenie > 100 000
<= Mniej lub równo wiek <= 25 lat
>= Więcej lub równo wiek >= 18 lat
= Równa się zawód = „Programista”
<>, != Nie równe Rok(data_dołączenia) != 2015

W przeciwieństwie do języka Java, dla ścisłej równości, używany jest tutaj jeden znak równy, a nie dwa .

Jeśli chcesz sprawdzić, czy wartości nie są równe, możesz to zrobić na dwa sposoby: <>albo !=Pierwsze podejście jest stosowane w językach takich jak Pascal, drugie jest typowe dla języków takich jak C++ i Jawa.

Do przypisania w SQL używa się go :=jak w Pascalu, ale samo przypisanie jest używane bardzo rzadko.

Napiszmy zapytanie, w którym wyświetlimy wszystkich pracowników, którzy nie byli zatrudnieni w 2015 roku.


SELECT * FROM employee WHERE YEAR(join_date) != 2015
        

Otrzymujemy następujący wynik zapytania:

ID nazwa zawód wynagrodzenie wiek data_dołączenia
1 Iwanow Iwan Programista 100 000 25 2012-06-30
2 Pietrow Pietr Programista 80 000 23 2013-08-12
3 Iwanow Siergiej Próbnik 40 000 trzydzieści 2014-01-01
6 Vaska kot 1000 3 2018-01-01

3.2 Operacje logiczne I, LUB, NIE

Możesz także użyć WHEREoperacji logicznych ANDi OR. NOTI są one napisane dokładnie tak, jak je tutaj opisałem. Brak &&lub ||_!

Napiszmy zapytanie SQL, w którym wybieramy pracowników, którzy mają ponad 20 lat i otrzymują wynagrodzenie poniżej 50 tys.


SELECT * FROM employee WHERE age > 20 AND salary < 50000
        

Otrzymujemy następujący wynik zapytania:

ID nazwa zawód wynagrodzenie wiek data_dołączenia
3 Iwanow Siergiej Próbnik 40 000 trzydzieści 2014-01-01
5 Kirienko Anastazja Kierownik biura 40 000 25 2015-10-10

Zbyt łatwe. Napiszmy zapytanie, w którym wybieramy pracowników, którzy otrzymują więcej niż 100 000 i nie pracują jako dyrektor:


SELECT * FROM employee WHERE salary >= 100000 AND NOT occupation = 'Director'
        

Tutaj specjalnie !=użyliśmy operatora zamiast symbolu NOT.

Otrzymujemy następujący wynik zapytania:

ID nazwa zawód wynagrodzenie wiek data_dołączenia
1 Iwanow Iwan Programista 100 000 25 2012-06-30

3.3 MIĘDZY: zakres wartości

Również w SQL istnieje specjalny operator, BETWEENza pomocą którego można sprawdzić, czy zmienna leży między dwiema wartościami. Ten operator jest używany wewnątrz wyrażeń boolowskich. Ogólna postać takiego operatora to:


variable BETWEEN bottom line AND top_bound
        

W tym przypadku, w przeciwieństwie do języka Java, zarówno dolna, jak i górna granica mieszczą się w dozwolonym przedziale.

Napiszmy przykład, w którym wybieramy wszystkich pracowników z pensją od 40K do 100K. Żądanie będzie wyglądać następująco:

SELECT * FROM employee WHERE salary BETWEEN 40000 AND 100000

Otrzymujemy następujący wynik zapytania:

ID nazwa zawód wynagrodzenie wiek data_dołączenia
1 Iwanow Iwan Programista 100 000 25 2012-06-30
2 Pietrow Pietr Programista 80 000 23 2013-08-12
3 Iwanow Siergiej Próbnik 40 000 trzydzieści 2014-01-01
5 Kirienko Anastazja Kierownik biura 40 000 25 2015-10-10

Operator BETWEENobsługuje nie tylko typy liczbowe, ale także daty , a nawet typy łańcuchowe . W przypadku pracy ze ciągami znaków stosowany jest porządek leksykograficzny: aaba występuje przed aabb

3.4 IN: lista wartości

Ponadto SQL ma specjalny operator, INza pomocą którego można sprawdzić, czy zmienna znajduje się na podanej liście. Ten operator jest używany wewnątrz wyrażeń boolowskich. Ogólna postać takiego operatora to:

variable IN (value 1 , value 2 , ... value N)

Napiszmy zapytanie, w którym wybieramy pracowników, którzy mają 20, 25 lub 30 lat. Żądanie będzie wyglądać następująco:

SELECT * FROM employee WHERE age IN (20, 25, 30)

Otrzymujemy następujący wynik zapytania:

ID nazwa zawód wynagrodzenie wiek data_dołączenia
1 Iwanow Iwan Programista 100 000 25 2012-06-30
3 Iwanow Siergiej Próbnik 40 000 trzydzieści 2014-01-01
5 Kirienko Anastazja Kierownik biura 40 000 25 2015-10-10

A teraz napiszmy zapytanie, w którym wręcz przeciwnie, wybieramy pracowników w wieku not20, 25 lub 30 lat. Zapytanie będzie wyglądać następująco:

SELECT * FROM employee WHERE age NOT IN (20, 25, 30)

Otrzymujemy następujący wynik zapytania:

ID nazwa zawód wynagrodzenie wiek data_dołączenia
2 Pietrow Pietr Programista 80 000 23 2013-08-12
4 Rabinowicz Mojsza Dyrektor 200 000 35 2015-05-12
6 Vaska kot 1000 3 2018-01-01

Wszystko działało zgodnie z oczekiwaniami. Uroda.

3,5 LIKE: wzór sznurka

I na koniec jeszcze jeden ważny i bardzo często używany operator - LIKE. Jest używany podczas porównywania ciągów znaków. Można go użyć do ustawienia wzoru sznurka. Ten operator jest używany wewnątrz wyrażeń boolowskich. Ogólna postać takiego operatora to:

variable LIKE 'sample'

We wzorcu można stosować znaki specjalne: %i _.

  • Podkreślenie oznacza dowolny znak, zawsze 1 szt.
  • Procent oznacza dowolny znak i dowolną liczbę razy (w tym 0 razy).

Napiszmy zapytanie, które wybierze wszystkie osoby, których nazwisko zaczyna się na literę „I”. Żądanie będzie wyglądać następująco:

SELECT * FROM employee WHERE name LIKE 'I%'

Otrzymujemy następujący wynik zapytania:

ID nazwa zawód wynagrodzenie wiek data_dołączenia
1 Iwanow Iwan Programista 100 000 25 2012-06-30
3 Iwanow Siergiej Próbnik 40 000 trzydzieści 2014-01-01

Teraz skomplikujmy zadanie - nazwa powinna zawierać "o", a nazwa powinna kończyć się na "a". Żądanie będzie wyglądać następująco:

SELECT * FROM employee WHERE name LIKE '%o%a'

Otrzymujemy następujący wynik zapytania:

ID nazwa zawód wynagrodzenie wiek data_dołączenia
4 Rabinowicz Mojsza Dyrektor 200 000 35 2015-05-12

Dobra, zróbmy to trochę trudniej. Odfiltrujmy wszystkich pracowników, których wiek zaczyna się od cyfry „3”. Żądanie będzie wyglądać następująco:

SELECT * FROM employee WHERE age LIKE '3%'

Otrzymujemy następujący wynik zapytania:

ID nazwa zawód wynagrodzenie wiek data_dołączenia
3 Iwanow Siergiej Próbnik 40 000 trzydzieści 2014-01-01
4 Rabinowicz Mojsza Dyrektor 200 000 35 2015-05-12
6 Vaska kot 1000 3 2018-01-01

Nawiasem mówiąc, nasza kolumna wiekuint jest typu , więc LIKEdziała nie tylko z łańcuchami. Co nie może się nie cieszyć.