# Логические операции в SQL запросе в Python

В условии выборки можно делать более сложные комбинации с помощью команд `OR` и `AND`. Работают они так же, как и их аналоги в Python конструкции `if`. Давайте посмотрим на примерах.

## Пример

Выберем юзеров с зарплатой `500` И возрастом `23` года:

`query = "SELECT * FROM users WHERE salary=500 AND age=23"`

Результат выполненного кода:

`{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}`

## Пример

Выберем юзеров с зарплатой `500` ИЛИ возрастом `23` года:

`query = "SELECT * FROM users WHERE salary=500 OR age=23"`

Результат выполненного кода:

`{'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}`

## Пример

Выберем юзеров с зарплатой от `450` до `900`:

`query = "SELECT * FROM users WHERE salary>450 AND salary<900"`

Результат выполненного кода:

`{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500} {'id': 3, 'name': 'user3', 'age': 23, 'salary': 500} {'id': 5, 'name': 'user5', 'age': 27, 'salary': 500}`

## Пример

Выберем юзеров с возрастом от `23` до `27` лет включительно:

`query = "SELECT * FROM users WHERE age>=23 AND age<=27"`

Результат выполненного кода:

`{'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}`

## Пример

Сложные комбинации команд `OR` и `AND` можно группировать с помощью круглых скобок, чтобы показать приоритет условий:

`query = "SELECT * FROM users WHERE (age<20 AND age>27) OR (salary>300 AND salary<500)"`

Результат выполненного кода:

`{'id': 1, 'name': 'user1', 'age': 23, 'salary': 400}`

## Практические задачи

Выберите юзеров в возрасте от `25` (не включительно) до `28` лет (включительно).

Выберите юзера `user1`.

Выберите юзеров `user1` и `user2`.

Выберите всех, кроме юзера `user3`.

Выберите всех юзеров в возрасте `27` лет или с зарплатой `1000`.

Выберите всех юзеров в возрасте `27` лет или с зарплатой не равной `400`.

Выберите всех юзеров в возрасте от `23` лет (включительно) до `27` лет (не включительно) или с зарплатой `1000`.

Выберите всех юзеров в возрасте от `23` лет до `27` лет или с зарплатой от `400` до `1000`.

← →
↑