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, WHERE
puteț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 WHERE
utiliza operațiunile logice și . Și sunt scrise exact așa cum le-am descris aici. Niciuna , sauAND
OR
NOT
&&
||
!
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 BETWEEN
cu 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 BETWEEN
acceptă 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 IN
cu 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 not
20, 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ă LIKE
funcționează nu numai cu șiruri. Ce nu poate decât să se bucure.