Operazioni logiche nelle query SQL in Python
Nella condizione di selezione è possibile creare combinazioni più complesse
utilizzando i comandi OR e
AND. Funzionano come i loro
analoghi nella struttura if di Python.
Vediamo alcuni esempi.
Esempio
Selezioniamo gli utenti con uno stipendio di 500 E
un'età di 23 anni:
query = "SELECT * FROM users WHERE salary=500 AND age=23"
Risultato del codice eseguito:
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
Esempio
Selezioniamo gli utenti con uno stipendio di 500 O
un'età di 23 anni:
query = "SELECT * FROM users WHERE salary=500 OR age=23"
Risultato del codice eseguito:
{'id': 1, 'name': 'user1', 'age': 23, 'salary': 400}
{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500}
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
{'id': 5, 'name': 'user5', 'age': 27, 'salary': 500}
Esempio
Selezioniamo gli utenti con uno stipendio da 450
a 900:
query = "SELECT * FROM users WHERE salary>450 AND salary<900"
Risultato del codice eseguito:
{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500}
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
{'id': 5, 'name': 'user5', 'age': 27, 'salary': 500}
Esempio
Selezioniamo gli utenti con un'età da 23
a 27 anni inclusi:
query = "SELECT * FROM users WHERE age>=23 AND age<=27"
Risultato del codice eseguito:
{'id': 1, 'name': 'user1', 'age': 23, 'salary': 400}
{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500}
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
{'id': 5, 'name': 'user5', 'age': 27, 'salary': 500}
Esempio
Combinazioni complesse dei comandi OR e
AND possono essere raggruppate utilizzando
parentesi tonde per indicare la priorità
delle condizioni:
query = "SELECT * FROM users WHERE (age<20 AND age>27) OR (salary>300 AND salary<500)"
Risultato del codice eseguito:
{'id': 1, 'name': 'user1', 'age': 23, 'salary': 400}
Problemi pratici
Seleziona gli utenti di età compresa tra 25
(escluso) e 28 anni
(incluso).
Seleziona l'utente user1.
Seleziona gli utenti user1 e user2.
Seleziona tutti tranne l'utente user3.
Seleziona tutti gli utenti di 27
anni o con uno stipendio di 1000.
Seleziona tutti gli utenti di 27
anni o con uno stipendio diverso da 400.
Seleziona tutti gli utenti di età compresa tra 23
anni (incluso) e 27 anni (non
incluso) o con uno stipendio di 1000.
Seleziona tutti gli utenti di età compresa tra 23
anni e 27 anni o con uno stipendio compreso tra
400 e 1000.