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.
GO TO FULL VERSION