Opérations logiques dans une requête SQL en Python
Dans la condition de sélection, il est possible de créer des combinaisons plus complexes
à l'aide des commandes OR et
AND. Elles fonctionnent de la même manière que leurs
équivalents dans la construction Python if.
Regardons des exemples.
Exemple
Sélectionnons les utilisateurs avec un salaire de 500 ET
un âge de 23 ans :
query = "SELECT * FROM users WHERE salary=500 AND age=23"
Résultat du code exécuté :
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
Exemple
Sélectionnons les utilisateurs avec un salaire de 500 OU
un âge de 23 ans :
query = "SELECT * FROM users WHERE salary=500 OR age=23"
Résultat du code exécuté :
{'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}
Exemple
Sélectionnons les utilisateurs avec un salaire de 450
à 900 :
query = "SELECT * FROM users WHERE salary>450 AND salary<900"
Résultat du code exécuté :
{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500}
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
{'id': 5, 'name': 'user5', 'age': 27, 'salary': 500}
Exemple
Sélectionnons les utilisateurs avec un âge de 23
à 27 ans inclusivement :
query = "SELECT * FROM users WHERE age>=23 AND age<=27"
Résultat du code exécuté :
{'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}
Exemple
Les combinaisons complexes des commandes OR et
AND peuvent être regroupées à l'aide
de parenthèses pour indiquer la priorité
des conditions :
query = "SELECT * FROM users WHERE (age<20 AND age>27) OR (salary>300 AND salary<500)"
Résultat du code exécuté :
{'id': 1, 'name': 'user1', 'age': 23, 'salary': 400}
Problèmes pratiques
Sélectionnez les utilisateurs âgés de 25
ans (non inclus) à 28 ans
(inclus).
Sélectionnez l'utilisateur user1.
Sélectionnez les utilisateurs user1 et user2.
Sélectionnez tous les utilisateurs sauf user3.
Sélectionnez tous les utilisateurs âgés de 27
ans ou avec un salaire de 1000.
Sélectionnez tous les utilisateurs âgés de 27
ans ou avec un salaire différent de 400.
Sélectionnez tous les utilisateurs âgés de 23
ans (inclus) à 27 ans (non
inclus) ou avec un salaire de 1000.
Sélectionnez tous les utilisateurs âgés de 23
ans à 27 ans ou avec un salaire de
400 à 1000.