Operacje logiczne w zapytaniu SQL w Pythonie
W warunku selekcji można tworzyć bardziej złożone
kombinacje za pomocą poleceń OR i
AND. Działają one tak samo, jak ich
analogi w konstrukcji Pythona if.
Spójrzmy na przykłady.
Przykład
Wybierzmy użytkowników z wynagrodzeniem 500 I
wiekie 23 lat:
query = "SELECT * FROM users WHERE salary=500 AND age=23"
Wynik wykonanego kodu:
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
Przykład
Wybierzmy użytkowników z wynagrodzeniem 500 LUB
wiekie 23 lat:
query = "SELECT * FROM users WHERE salary=500 OR age=23"
Wynik wykonanego kodu:
{'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}
Przykład
Wybierzmy użytkowników z wynagrodzeniem od 450
do 900:
query = "SELECT * FROM users WHERE salary>450 AND salary<900"
Wynik wykonanego kodu:
{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500}
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
{'id': 5, 'name': 'user5', 'age': 27, 'salary': 500}
Przykład
Wybierzmy użytkowników w wieku od 23
do 27 lat włącznie:
query = "SELECT * FROM users WHERE age>=23 AND age<=27"
Wynik wykonanego kodu:
{'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}
Przykład
Złożone kombinacje poleceń OR i
AND można grupować za pomocą
nawiasów okrągłych, aby pokazać priorytet
warunków:
query = "SELECT * FROM users WHERE (age<20 AND age>27) OR (salary>300 AND salary<500)"
Wynik wykonanego kodu:
{'id': 1, 'name': 'user1', 'age': 23, 'salary': 400}
Zadania praktyczne
Wybierz użytkowników w wieku od 25
(nie włącznie) do 28 lat
(włącznie).
Wybierz użytkownika user1.
Wybierz użytkowników user1 i user2.
Wybierz wszystkich, z wyjątkiem użytkownika user3.
Wybierz wszystkich użytkowników w wieku 27
lat lub z wynagrodzeniem 1000.
Wybierz wszystkich użytkowników w wieku 27
lat lub z wynagrodzeniem nie równym 400.
Wybierz wszystkich użytkowników w wieku od 23
lat (włącznie) do 27 lat (nie
włącznie) lub z wynagrodzeniem 1000.
Wybierz wszystkich użytkowników w wieku od 23
lat do 27 lat lub z wynagrodzeniem od
400 do 1000.