3.1 Confronto dei valori: <, >, =, <>

Una delle parole chiave più comuni utilizzate durante la scrittura di query SQL è l'estensione WHERE. È con il suo aiuto che diciamo a MySQL quali righe della tabella vogliamo filtrare (selezionare).

Dopo la parola chiave, WHEREpuoi scrivere condizioni molto complesse e complicate. Quindi quali operazioni può contenere questa condizione?

Operatore Descrizione Esempio
< Meno stipendio < 40000
> Di più stipendio > 100000
<= Minore o uguale età <= 25
>= Più o uguale età >= 18
= Equivale occupazione = 'Programmatore'
<>, != Non uguale Anno(join_date) != 2015

A differenza del linguaggio Java, per stretta uguaglianza, qui viene utilizzato un carattere uguale e non due .

Se vuoi verificare che i valori non siano uguali, puoi farlo in due modi: <>o !=Il primo approccio è utilizzato in linguaggi come Pascal, il secondo è tipico di linguaggi come C ++ e Giava.

Per l'assegnazione in SQL, viene utilizzato :=come in Pascal, ma l'assegnazione stessa viene utilizzata molto raramente.

Scriviamo una query in cui mostriamo tutti i dipendenti che non sono stati assunti nel 2015.


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

E otteniamo il seguente risultato della query:

id nome occupazione stipendio età data di iscrizione
1 Ivanov Ivan Programmatore 100.000 25 2012-06-30
2 Petrov Petr Programmatore 80.000 23 2013-08-12
3 Sergej Ivanov Tester 40.000 trenta 2014-01-01
6 Vasca gatto 1.000 3 2018-01-01

3.2 Operazioni logiche AND, OR, NOT

È inoltre possibile WHEREutilizzare le operazioni logiche ANDe OR. NOTE sono scritti esattamente come li ho descritti qui. Nessuno &&, ||o!

Scriviamo una query SQL in cui selezioniamo dipendenti che hanno più di 20 anni e ricevono uno stipendio inferiore a 50.000.


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

E otteniamo il seguente risultato della query:

id nome occupazione stipendio età data di iscrizione
3 Sergej Ivanov Tester 40.000 trenta 2014-01-01
5 Kirienko Anastasia Capo ufficio 40.000 25 2015-10-10

Troppo facile. Scriviamo una query in cui selezioniamo i dipendenti che ricevono più di 100.000 e non lavorano come direttore:


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

Qui abbiamo !=usato specificamente l'operatore al posto del simbolo NOT.

E otteniamo il seguente risultato della query:

id nome occupazione stipendio età data di iscrizione
1 Ivanov Ivan Programmatore 100.000 25 2012-06-30

3.3 TRA: intervallo di valori

Anche in SQL esiste un operatore speciale BETWEENcon il quale è possibile verificare se una variabile si trova tra due valori. Questo operatore viene utilizzato all'interno delle espressioni booleane. La forma generale di un tale operatore è:


variable BETWEEN bottom line AND top_bound
        

In questo caso, a differenza del linguaggio Java, sia il limite inferiore che quello superiore sono inclusi nell'intervallo consentito.

Scriviamo un esempio in cui selezioniamo tutti i dipendenti con uno stipendio da 40K a 100K. La richiesta sarà simile a:

SELECT * FROM employee WHERE salary BETWEEN 40000 AND 100000

E otteniamo il seguente risultato della query:

id nome occupazione stipendio età data di iscrizione
1 Ivanov Ivan Programmatore 100.000 25 2012-06-30
2 Petrov Petr Programmatore 80.000 23 2013-08-12
3 Sergej Ivanov Tester 40.000 trenta 2014-01-01
5 Kirienko Anastasia Capo ufficio 40.000 25 2015-10-10

L'operatore BETWEENsupporta non solo i tipi numerici, ma anche le date e persino i tipi di stringa . Nel caso di lavorare con le stringhe, viene utilizzato l'ordine lessicografico: aaba viene prima di aabb

3.4 IN: lista di valori

Inoltre, SQL dispone di un operatore speciale INcon il quale è possibile verificare se una variabile è contenuta nell'elenco specificato. Questo operatore viene utilizzato all'interno delle espressioni booleane. La forma generale di un tale operatore è:

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

Scriviamo una query in cui selezioniamo dipendenti che hanno 20, 25 o 30 anni. La richiesta sarà simile a:

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

E otteniamo il seguente risultato della query:

id nome occupazione stipendio età data di iscrizione
1 Ivanov Ivan Programmatore 100.000 25 2012-06-30
3 Sergej Ivanov Tester 40.000 trenta 2014-01-01
5 Kirienko Anastasia Capo ufficio 40.000 25 2015-10-10

E ora scriviamo una query, dove, al contrario, selezioniamo dipendenti la cui età è not20, 25 o 30. La query sarà simile a:

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

E otteniamo il seguente risultato della query:

id nome occupazione stipendio età data di iscrizione
2 Petrov Petr Programmatore 80.000 23 2013-08-12
4 Rabinovich Moisha Direttore 200.000 35 2015-05-12
6 Vasca gatto 1.000 3 2018-01-01

Tutto ha funzionato come previsto. Bellezza.

3,5 MI PIACE: schema corde

E infine, un altro operatore importante e molto utilizzato - LIKE. Viene utilizzato quando si confrontano stringhe. Può essere utilizzato per impostare uno schema corde. Questo operatore viene utilizzato all'interno delle espressioni booleane. La forma generale di un tale operatore è:

variable LIKE 'sample'

I caratteri speciali possono essere utilizzati nel modello: %e _.

  • Il trattino basso indica qualsiasi carattere, sempre 1 pz.
  • Percentuale indica qualsiasi carattere e qualsiasi numero di volte (compreso 0 volte).

Scriviamo una query che selezionerà tutte le persone il cui cognome inizia con la lettera "I". La richiesta sarà simile a:

SELECT * FROM employee WHERE name LIKE 'I%'

E otteniamo il seguente risultato della query:

id nome occupazione stipendio età data di iscrizione
1 Ivanov Ivan Programmatore 100.000 25 2012-06-30
3 Sergej Ivanov Tester 40.000 trenta 2014-01-01

Ora complichiamo il compito: il nome dovrebbe contenere "o" e il nome dovrebbe terminare con "a". La richiesta sarà simile a:

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

E otteniamo il seguente risultato della query:

id nome occupazione stipendio età data di iscrizione
4 Rabinovich Moisha Direttore 200.000 35 2015-05-12

Ok, rendiamolo un po' più difficile. Filtriamo tutti i dipendenti la cui età inizia con il numero "3". La richiesta sarà simile a:

SELECT * FROM employee WHERE age LIKE '3%'

E otteniamo il seguente risultato della query:

id nome occupazione stipendio età data di iscrizione
3 Sergej Ivanov Tester 40.000 trenta 2014-01-01
4 Rabinovich Moisha Direttore 200.000 35 2015-05-12
6 Vasca gatto 1.000 3 2018-01-01

A proposito, la nostra colonna etàint è di tipo , quindi LIKEfunziona non solo con le stringhe. Cosa non può che rallegrarsi.