3.1 Compararea valorilor: <, >, =, <>

Unul dintre cele mai comune cuvinte cheie care sunt folosite la scrierea interogărilor SQL este WHERE. Cu ajutorul lui, îi spunem MySQL ce rânduri de tabel dorim să filtram (selectăm).

După cuvântul cheie, WHEREputeți scrie condiții foarte complexe și complicate. Deci ce operații poate conține această afecțiune?

Operator Descriere Exemplu
< Mai puțin salariu < 40000
> Mai mult salariu > 100000
<= Mai puțin sau egal vârsta <= 25
>= Mai mult sau egal vârsta >= 18
= Egal ocupatie = 'Programator'
<>, != Nu este egal Anul(data_aderarea) != 2015

Spre deosebire de limbajul Java, pentru egalitate strictă, aici este folosit un caracter egal, și nu două .

Dacă doriți să verificați dacă valorile nu sunt egale, atunci acest lucru se poate face în două moduri: <>fie !=Prima abordare este utilizată în limbaje precum Pascal, a doua este tipică pentru limbaje precum C++ și Java.

Pentru atribuirea în SQL, este folosit :=ca în Pascal, dar atribuirea în sine este folosită foarte rar.

Să scriem o interogare în care afișăm toți angajații care nu au fost angajați în 2015.


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

Și obținem următorul rezultat al interogării:

id Nume ocupaţie salariu vârstă Data înscrierii
1 Ivanov Ivan Programator 100.000 25 30-06-2012
2 Petrov Petr Programator 80.000 23 12-08-2013
3 Ivanov Serghei Tester 40.000 treizeci 01-01-2014
6 Vaska pisică 1.000 3 2018-01-01

3.2 Operații logice ȘI, SAU, NU

De asemenea , puteți WHEREutiliza operațiunile logice și . Și sunt scrise exact așa cum le-am descris aici. Niciuna , sauANDORNOT&&||!

Să scriem o interogare SQL în care selectăm angajați care au peste 20 de ani și primesc un salariu mai mic de 50K.


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

Și obținem următorul rezultat al interogării:

id Nume ocupaţie salariu vârstă Data înscrierii
3 Ivanov Serghei Tester 40.000 treizeci 01-01-2014
5 Kirienko Anastasia Manager de birou 40.000 25 2015-10-10

Prea ușor. Să scriem o interogare în care selectăm angajați care primesc mai mult de 100.000 și nu lucrează ca director:


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

Aici am !=folosit în mod special operatorul în locul simbolului NOT.

Și obținem următorul rezultat al interogării:

id Nume ocupaţie salariu vârstă Data înscrierii
1 Ivanov Ivan Programator 100.000 25 30-06-2012

3.3 ÎNTRE: interval de valori

Tot în SQL există un operator special BETWEENcu care puteți verifica dacă o variabilă se află între două valori. Acest operator este utilizat în interiorul expresiilor booleene. Forma generală a unui astfel de operator este:


variable BETWEEN bottom line AND top_bound
        

În acest caz, spre deosebire de limbajul Java, atât granițele inferioare, cât și cele superioare sunt incluse în intervalul permis.

Să scriem un exemplu în care selectăm toți angajații cu un salariu de la 40K la 100K. Solicitarea va arăta astfel:

SELECT * FROM employee WHERE salary BETWEEN 40000 AND 100000

Și obținem următorul rezultat al interogării:

id Nume ocupaţie salariu vârstă Data înscrierii
1 Ivanov Ivan Programator 100.000 25 30-06-2012
2 Petrov Petr Programator 80.000 23 12-08-2013
3 Ivanov Serghei Tester 40.000 treizeci 01-01-2014
5 Kirienko Anastasia Manager de birou 40.000 25 2015-10-10

Operatorul BETWEENacceptă nu numai tipurile numerice, ci și datele și chiar și tipurile de șir . În cazul lucrului cu șiruri se folosește ordinea lexicografică: aaba vine înaintea aabb

3.4 IN: lista de valori

În plus, SQL are un operator special INcu care puteți verifica dacă o variabilă este conținută în lista specificată. Acest operator este utilizat în interiorul expresiilor booleene. Forma generală a unui astfel de operator este:

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

Să scriem o interogare în care selectăm angajați care au 20, 25 sau 30 de ani. Solicitarea va arăta astfel:

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

Și obținem următorul rezultat al interogării:

id Nume ocupaţie salariu vârstă Data înscrierii
1 Ivanov Ivan Programator 100.000 25 30-06-2012
3 Ivanov Serghei Tester 40.000 treizeci 01-01-2014
5 Kirienko Anastasia Manager de birou 40.000 25 2015-10-10

Și acum să scriem o interogare, unde, dimpotrivă, selectăm angajați a căror vârstă este de not20, 25 sau 30 de ani. Interogarea va arăta astfel:

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

Și obținem următorul rezultat al interogării:

id Nume ocupaţie salariu vârstă Data înscrierii
2 Petrov Petr Programator 80.000 23 12-08-2013
4 Rabinovici Moisha Director 200.000 35 2015-05-12
6 Vaska pisică 1.000 3 2018-01-01

Totul a funcționat conform așteptărilor. Frumuseţe.

3.5 LIKE: model de șir

Și în sfârșit, un alt operator important și foarte des folosit - LIKE. Este folosit la compararea șirurilor. Poate fi folosit pentru a seta un model de șir. Acest operator este utilizat în interiorul expresiilor booleene. Forma generală a unui astfel de operator este:

variable LIKE 'sample'

Caracterele speciale pot fi folosite în model: %și _.

  • Sublinierea înseamnă orice caracter, întotdeauna 1 buc.
  • Procent înseamnă orice caracter și orice număr de ori (inclusiv de 0 ori).

Să scriem o interogare care va selecta toate persoanele al căror nume de familie începe cu litera „I”. Solicitarea va arăta astfel:

SELECT * FROM employee WHERE name LIKE 'I%'

Și obținem următorul rezultat al interogării:

id Nume ocupaţie salariu vârstă Data înscrierii
1 Ivanov Ivan Programator 100.000 25 30-06-2012
3 Ivanov Serghei Tester 40.000 treizeci 01-01-2014

Acum să complicăm sarcina - numele ar trebui să conțină „o” și numele ar trebui să se termine cu „a”. Solicitarea va arăta astfel:

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

Și obținem următorul rezultat al interogării:

id Nume ocupaţie salariu vârstă Data înscrierii
4 Rabinovici Moisha Director 200.000 35 2015-05-12

Bine, hai să facem totul un pic mai dificil. Să eliminăm toți angajații a căror vârstă începe cu numărul „3”. Solicitarea va arăta astfel:

SELECT * FROM employee WHERE age LIKE '3%'

Și obținem următorul rezultat al interogării:

id Nume ocupaţie salariu vârstă Data înscrierii
3 Ivanov Serghei Tester 40.000 treizeci 01-01-2014
4 Rabinovici Moisha Director 200.000 35 2015-05-12
6 Vaska pisică 1.000 3 2018-01-01

Apropo, coloana noastră de vârstăint este de tipul , așa că LIKEfuncționează nu numai cu șiruri. Ce nu poate decât să se bucure.