HTML Diff
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 &gt; 60. Запрос будет выглядеть так:</p>
3 <p>Чтобы выбрать строки, которые нам нужны используют оператор WHERE. В запросе SELECT его нужно добавить и после него задать нужное нам условие. Идентификатор пользователя хранится в поле id, значит нас интересуют те строки, у которых id &gt; 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>&gt; - больше</li>
11 <li>&gt; - больше</li>
12 <li>&lt; - меньше</li>
12 <li>&lt; - меньше</li>
13 <li>&gt;= - больше либо равно, не меньше</li>
13 <li>&gt;= - больше либо равно, не меньше</li>
14 <li>&lt;= - меньше либо равно, не больше</li>
14 <li>&lt;= - меньше либо равно, не больше</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>