0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>В этом уроке разберем одну из самых часто используемых операций SQL - SELECT. С помощью этой команды выполняют выборку данных из таблиц.</p>
1
<p>В этом уроке разберем одну из самых часто используемых операций SQL - SELECT. С помощью этой команды выполняют выборку данных из таблиц.</p>
2
<p>Запросы выполняемые в этом уроке, можно повторить локально, используя<a>подготовленную базу данных</a>или через сервис<a>sqlfiddle</a></p>
2
<p>Запросы выполняемые в этом уроке, можно повторить локально, используя<a>подготовленную базу данных</a>или через сервис<a>sqlfiddle</a></p>
3
<h2>Выборка данных</h2>
3
<h2>Выборка данных</h2>
4
<p>В типичных веб-приложениях данные выбираются в 10 раз чаще, чем модифицируются. Для этого используют запрос SELECT. Его простая форма выглядит так:</p>
4
<p>В типичных веб-приложениях данные выбираются в 10 раз чаще, чем модифицируются. Для этого используют запрос SELECT. Его простая форма выглядит так:</p>
5
<p>Этот запрос достает все содержимое таблицы users. Звездочка в примере означает все поля. Если поля нужны не все, то достаточно перечислить их через запятую вместо звездочки:</p>
5
<p>Этот запрос достает все содержимое таблицы users. Звездочка в примере означает все поля. Если поля нужны не все, то достаточно перечислить их через запятую вместо звездочки:</p>
6
<p>Поля необязательно перечислять в том же порядке, в котором они идут в таблице. В результате такого запроса порядок полей в выводе будет соответствовать не тому, что в таблице, а указанному в части SELECT.</p>
6
<p>Поля необязательно перечислять в том же порядке, в котором они идут в таблице. В результате такого запроса порядок полей в выводе будет соответствовать не тому, что в таблице, а указанному в части SELECT.</p>
7
<p>На практике выборка, которая извлекает все записи, встречается редко. Дело в том, что у таблиц бывают большие объемы и нужно ограничивать вывод для конкретного пользователя. В этом случае используется WHERE, который мы рассматривали в прошлом уроке. Он работает одинаково вне зависимости от типа выполняемого запроса, будь-то UPDATE, DELETE или SELECT:</p>
7
<p>На практике выборка, которая извлекает все записи, встречается редко. Дело в том, что у таблиц бывают большие объемы и нужно ограничивать вывод для конкретного пользователя. В этом случае используется WHERE, который мы рассматривали в прошлом уроке. Он работает одинаково вне зависимости от типа выполняемого запроса, будь-то UPDATE, DELETE или SELECT:</p>
8
<p>Даже в таком варианте количество возможных записей может быть слишком большим. Поэтому нужно сделать так, чтобы из всей информации выбиралось ограниченное количество записей.</p>
8
<p>Даже в таком варианте количество возможных записей может быть слишком большим. Поэтому нужно сделать так, чтобы из всей информации выбиралось ограниченное количество записей.</p>
9
<h2>Пагинация</h2>
9
<h2>Пагинация</h2>
10
<p>Когда записей очень много, можно реализовать пагинацию - она позволяет перемещаться по страницам, если их много. Этот механизм можно реализовать целиком в коде. Но так не делают, потому что количество данных, перегоняемых из базы данных в код, может быть огромным. На такую задачу не хватит ресурсов сервера. Поэтому пагинацию реализуют на уровне базы данных.</p>
10
<p>Когда записей очень много, можно реализовать пагинацию - она позволяет перемещаться по страницам, если их много. Этот механизм можно реализовать целиком в коде. Но так не делают, потому что количество данных, перегоняемых из базы данных в код, может быть огромным. На такую задачу не хватит ресурсов сервера. Поэтому пагинацию реализуют на уровне базы данных.</p>
11
<p>Чтобы реализовать его, используют LIMIT - ограничение на количество записей, которые выбирают из базы данных:</p>
11
<p>Чтобы реализовать его, используют LIMIT - ограничение на количество записей, которые выбирают из базы данных:</p>
12
<p>Число после LIMIT - это количество записей, которые мы хотим выбрать. В нашем примере запрос выберет не больше трех записей. Если в таблице их меньше, то выберутся все. Количество записей в лимите можно увеличивать или уменьшать.</p>
12
<p>Число после LIMIT - это количество записей, которые мы хотим выбрать. В нашем примере запрос выберет не больше трех записей. Если в таблице их меньше, то выберутся все. Количество записей в лимите можно увеличивать или уменьшать.</p>
13
<p>SQL не гарантирует порядка в выборках выше. Если не указать сортировку, то мы не можем знать, в каком порядке вернутся данные. Поэтому в подобных выборках всегда присутствует секция ORDER BY:</p>
13
<p>SQL не гарантирует порядка в выборках выше. Если не указать сортировку, то мы не можем знать, в каком порядке вернутся данные. Поэтому в подобных выборках всегда присутствует секция ORDER BY:</p>
14
<p>Такой запрос отсортирует данные по ключу birthday в прямом порядке - кто родился раньше, будет выше. Если нужно отсортировать в обратном порядке, то надо добавить ключевое слово DESC:</p>
14
<p>Такой запрос отсортирует данные по ключу birthday в прямом порядке - кто родился раньше, будет выше. Если нужно отсортировать в обратном порядке, то надо добавить ключевое слово DESC:</p>
15
<p>Такой запрос вернет пользователей, отсортированных по дню рождения в обратном порядке - выше будут те, кто младше.</p>
15
<p>Такой запрос вернет пользователей, отсортированных по дню рождения в обратном порядке - выше будут те, кто младше.</p>
16
<p>На этом базовые возможности SELECT заканчиваются. Все части запроса, которые мы рассмотрели, комбинируются друг с другом и даже могут использоваться одновременно:</p>
16
<p>На этом базовые возможности SELECT заканчиваются. Все части запроса, которые мы рассмотрели, комбинируются друг с другом и даже могут использоваться одновременно:</p>
17
<p>Запрос читается практически как фраза на английском языке: "Выбрать поля username и created_at из таблицы users для пользователей, которые родились раньше 2018-10-21. Результат должен быть отсортирован по дню рождения в обратном порядке. Ограничить выборку двумя записями."</p>
17
<p>Запрос читается практически как фраза на английском языке: "Выбрать поля username и created_at из таблицы users для пользователей, которые родились раньше 2018-10-21. Результат должен быть отсортирован по дню рождения в обратном порядке. Ограничить выборку двумя записями."</p>
18
<p>Чтобы было удобно считывать код, длинные запросы разбивают на строчки:</p>
18
<p>Чтобы было удобно считывать код, длинные запросы разбивают на строчки:</p>
19
<p>В будущих уроках мы рассмотрим каждую из этих частей подробнее.</p>
19
<p>В будущих уроках мы рассмотрим каждую из этих частей подробнее.</p>
20
<h2>Выводы</h2>
20
<h2>Выводы</h2>
21
<p>В этом уроке мы разобрали одну из самых часто используемых операций SQL - SELECT. С ее помощью можно выбирать данные из таблицы. Кроме того, дополнительные секции в SELECT позволяют ограничивать число выборки записей, а также упорядочивать их. Все эти возможности можно комбинировать в одном запросе.</p>
21
<p>В этом уроке мы разобрали одну из самых часто используемых операций SQL - SELECT. С ее помощью можно выбирать данные из таблицы. Кроме того, дополнительные секции в SELECT позволяют ограничивать число выборки записей, а также упорядочивать их. Все эти возможности можно комбинировать в одном запросе.</p>