1 added
1 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Представим, что нам нужно выбрать из нашей таблицы users всех пользователей с идентификаторами больше 60. Мы могли бы с помощью оператора SELECT вывести всю таблицу, а затем вручную отобрать интересующие записи. Но это делать долго и неудобно. В языке SQL для того, чтобы отобрать записи по требуемому условию, используют оператор WHERE. Его мы изучим в этом уроке.</p>
1
<p>Представим, что нам нужно выбрать из нашей таблицы users всех пользователей с идентификаторами больше 60. Мы могли бы с помощью оператора SELECT вывести всю таблицу, а затем вручную отобрать интересующие записи. Но это делать долго и неудобно. В языке SQL для того, чтобы отобрать записи по требуемому условию, используют оператор WHERE. Его мы изучим в этом уроке.</p>
2
<h2>Как работать с условиями выборки</h2>
2
<h2>Как работать с условиями выборки</h2>
3
<p>Чтобы выбрать строки, которые нам нужны используют оператор WHERE. В запросе SELECT его нужно добавить и после него задать нужное нам условие. Идентификатор пользователя хранится в поле id, значит нас интересуют те строки, у которых id > 60. Запрос будет выглядеть так:</p>
3
<p>Чтобы выбрать строки, которые нам нужны используют оператор WHERE. В запросе SELECT его нужно добавить и после него задать нужное нам условие. Идентификатор пользователя хранится в поле id, значит нас интересуют те строки, у которых id > 60. Запрос будет выглядеть так:</p>
4
<p><a>View on DB Fiddle</a></p>
4
<p><a>View on DB Fiddle</a></p>
5
<p>Этот запрос выведет пользователей, чей идентификатор больше 60.</p>
5
<p>Этот запрос выведет пользователей, чей идентификатор больше 60.</p>
6
<p>Можно заметить, что SQL-запросы можно читать как законченные предложения на английском языке. Запрос выше переводится так:</p>
6
<p>Можно заметить, что SQL-запросы можно читать как законченные предложения на английском языке. Запрос выше переводится так:</p>
7
<blockquote><p>"Выбрать все столбцы из таблицы users, и строки, в которых значение в столбце id больше 60"</p>
7
<blockquote><p>"Выбрать все столбцы из таблицы users, и строки, в которых значение в столбце id больше 60"</p>
8
</blockquote><p>В условиях мы можем использовать и другие операторы сравнения:</p>
8
</blockquote><p>В условиях мы можем использовать и другие операторы сравнения:</p>
9
<ul><li>= - равно</li>
9
<ul><li>= - равно</li>
10
<li>!= - не равно</li>
10
<li>!= - не равно</li>
11
<li>> - больше</li>
11
<li>> - больше</li>
12
<li>< - меньше</li>
12
<li>< - меньше</li>
13
<li>>= - больше либо равно, не меньше</li>
13
<li>>= - больше либо равно, не меньше</li>
14
<li><= - меньше либо равно, не больше</li>
14
<li><= - меньше либо равно, не больше</li>
15
</ul><p>Так эти операторы будут выглядеть в запросе:</p>
15
</ul><p>Так эти операторы будут выглядеть в запросе:</p>
16
<p><a>View on DB Fiddle</a></p>
16
<p><a>View on DB Fiddle</a></p>
17
<p>Этот запрос выберет всех пользователей из таблицы users, чей идентификатор равен единице.</p>
17
<p>Этот запрос выберет всех пользователей из таблицы users, чей идентификатор равен единице.</p>
18
<p>Такая формулировка звучит странно: мы выбираем по уникальному идентификатору, поэтому и запись должна быть одна.</p>
18
<p>Такая формулировка звучит странно: мы выбираем по уникальному идентификатору, поэтому и запись должна быть одна.</p>
19
<p>Если смотреть с точки зрения смысла идентификатора, то запись будет одна. Но дело в том, что результатом любого запроса к таблице тоже будет таблица.</p>
19
<p>Если смотреть с точки зрения смысла идентификатора, то запись будет одна. Но дело в том, что результатом любого запроса к таблице тоже будет таблица.</p>
20
<p>Если ничего не найдено, возвращается не пустота, а пустая таблица. Если в базе есть пользователь с указанным идентификатором, то вернется таблица с одним элементом - найденным пользователем.</p>
20
<p>Если ничего не найдено, возвращается не пустота, а пустая таблица. Если в базе есть пользователь с указанным идентификатором, то вернется таблица с одним элементом - найденным пользователем.</p>
21
<p>Если нам нужны все пользователи кроме того, чей идентификатор равен трём, то воспользуемся оператором неравенства:</p>
21
<p>Если нам нужны все пользователи кроме того, чей идентификатор равен трём, то воспользуемся оператором неравенства:</p>
22
<p><a>View on DB Fiddle</a></p>
22
<p><a>View on DB Fiddle</a></p>
23
<p>Теперь попробуем вывести пользователей с именем Johan:</p>
23
<p>Теперь попробуем вывести пользователей с именем Johan:</p>
24
<p><a>View on DB Fiddle</a></p>
24
<p><a>View on DB Fiddle</a></p>
25
<p>В таком виде запрос выдаст ошибку. Мы говорили, что в каждом столбце могут храниться данные только определенного типа. И обращаться к разным типам данных нужно по-разному.</p>
25
<p>В таком виде запрос выдаст ошибку. Мы говорили, что в каждом столбце могут храниться данные только определенного типа. И обращаться к разным типам данных нужно по-разному.</p>
26
<p>В столбце id таблицы users хранятся числа, а в столбце first_name - текст.</p>
26
<p>В столбце id таблицы users хранятся числа, а в столбце first_name - текст.</p>
27
<p>Текст в SQL должен записываться в одинарных кавычках. Правильный запрос будет выглядеть так:</p>
27
<p>Текст в SQL должен записываться в одинарных кавычках. Правильный запрос будет выглядеть так:</p>
28
<p><a>View on DB Fiddle</a></p>
28
<p><a>View on DB Fiddle</a></p>
29
<p>Работе со строками мы посвятим отдельный урок.</p>
29
<p>Работе со строками мы посвятим отдельный урок.</p>
30
<p>Еще один тип данных, с которым мы уже столкнулись - дата. Как и текст, она должна быть оформлена в одинарные кавычки.</p>
30
<p>Еще один тип данных, с которым мы уже столкнулись - дата. Как и текст, она должна быть оформлена в одинарные кавычки.</p>
31
-
<p>Следующий запрос выберет все курсы онлайн-школы, созданные начиная с 15 июня 2022 года:</p>
31
+
<p>Следующий запрос выберет все курсы онлайн-школы, созданные начиная с 14 июня 2022 года:</p>
32
<p><a>View on DB Fiddle</a></p>
32
<p><a>View on DB Fiddle</a></p>
33
<h2>Выводы</h2>
33
<h2>Выводы</h2>
34
<p>В этом уроке мы изучили оператор WHERE, который помогает указать условия для выбора записей. Для этого можно использовать операторы = и !=, а также операторы сравнения.</p>
34
<p>В этом уроке мы изучили оператор WHERE, который помогает указать условия для выбора записей. Для этого можно использовать операторы = и !=, а также операторы сравнения.</p>
35
<p>При использовании WHERE нужно помнить про тип данных столбца, по которому задается условие. Это важно, потому что для разных типов данных устанавливаются разные правила оформления: например, строки и даты должны быть заключены в одинарные кавычки.</p>
35
<p>При использовании WHERE нужно помнить про тип данных столбца, по которому задается условие. Это важно, потому что для разных типов данных устанавливаются разные правила оформления: например, строки и даты должны быть заключены в одинарные кавычки.</p>