Представим, что нам нужно выбрать из нашей таблицы users всех пользователей с идентификаторами больше 60.
Мы могли бы с помощью оператора SELECT вывести всю таблицу, а затем вручную отобрать интересующие записи. Но это делать долго и неудобно.
В языке SQL для того, чтобы отобрать записи по требуемому условию, используют оператор WHERE
. Его мы изучим в этом уроке.
Как работать с условиями выборки
Чтобы выбрать строки, которые нам нужны используют оператор WHERE
. В запросе SELECT его нужно добавить и после него задать нужное нам условие.
Идентификатор пользователя хранится в поле id
, значит нас интересуют те строки, у которых id > 60
.
Запрос будет выглядеть так:
SELECT * FROM users WHERE id > 60;
View on DB Fiddle
Этот запрос выведет пользователей, чей идентификатор больше 60.
Можно заметить, что SQL-запросы можно читать как законченные предложения на английском языке. Запрос выше переводится так:
«Выбрать все столбцы из таблицы
users
, и строки, в которых значение в столбцеid
больше 60»
В условиях мы можем использовать и другие операторы сравнения:
-
=
— равно -
!=
— не равно -
>
— больше -
<
— меньше -
>=
— больше либо равно, не меньше -
<=
— меньше либо равно, не больше
Так эти операторы будут выглядеть в запросе:
SELECT * FROM users WHERE id = 1;
View on DB Fiddle
Этот запрос выберет всех пользователей из таблицы users
, чей идентификатор равен единице.
Такая формулировка звучит странно: мы выбираем по уникальному идентификатору, поэтому и запись должна быть одна.
Если смотреть с точки зрения смысла идентификатора, то запись будет одна. Но дело в том, что результатом любого запроса к таблице тоже будет таблица.
Если ничего не найдено, возвращается не пустота, а пустая таблица. Если в базе есть пользователь с указанным идентификатором, то вернется таблица с одним элементом — найденным пользователем.
Если нам нужны все пользователи кроме того, чей идентификатор равен трём, то воспользуемся оператором неравенства:
SELECT * FROM users WHERE id != 3;
View on DB Fiddle
Теперь попробуем вывести пользователей с именем Johan:
SELECT * FROM users WHERE first_name = Johan;
View on DB Fiddle
В таком виде запрос выдаст ошибку. Мы говорили, что в каждом столбце могут храниться данные только определенного типа. И обращаться к разным типам данных нужно по-разному.
В столбце id
таблицы users
хранятся числа, а в столбце first_name
- текст.
Текст в SQL должен записываться в одинарных кавычках. Правильный запрос будет выглядеть так:
SELECT * FROM users WHERE first_name = 'Johan';
View on DB Fiddle
Работе со строками мы посвятим отдельный урок.
Еще один тип данных, с которым мы уже столкнулись - дата. Как и текст, она должна быть оформлена в одинарные кавычки.
Следующий запрос выберет все курсы онлайн-школы, созданные начиная с 15 июня 2022 года:
SELECT name, created_at FROM courses WHERE created_at > '2022-06-14';
View on DB Fiddle
Выводы
В этом уроке мы изучили оператор WHERE
, который помогает указать условия для выбора записей. Для этого можно использовать операторы =
и !=
, а также операторы сравнения.
При использовании WHERE
нужно помнить про тип данных столбца, по которому задается условие. Это важно, потому что для разных типов данных устанавливаются разные правила оформления: например, строки и даты должны быть заключены в одинарные кавычки.
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
- Статья «Как учиться и справляться с негативными мыслями»
- Статья «Ловушки обучения»
- Статья «Сложные простые задачи по программированию»
- Вебинар «Как самостоятельно учиться»
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.