HTML Diff
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>