Команда SQL для выборки из базы данных часть 2 (ORDER BY, LIMIT, SELECT AS, COUNT)

При запросе к базе данных существует возможность ограничить выборку по количеству возвращаемых строк. А ещё можно запросить отсортированный по какому-либо параметру результат.

Сортировка (ORDER BY)

С помощью команды ORDER BY можно сделать сортировку результата, который будет выдан из базы данных. Результат можно сортировать по значению поля. Либо в прямом направлении "ASC", либо в обратном направлении "DESC". Приведём пример использования:
SELECT * FROM `USERS` WHERE `ID` > 2 ORDER BY `ID` DESC;
В конце этого запроса можно увидеть конструкцию "ORDER BY `ID` DESC", которая говорит о том, что выборка будет отсортирована по убыванию значения столбца ID. Если нужно сделать по возрастанию, то будет такой запрос:
SELECT * FROM `USERS` WHERE `ID` > 2 ORDER BY `ID` ASC;
Можно сделать две сортировки. Для этого после "ORDER BY" необходимо написать через запятую название столбца и направление сортировки. К примеру, отсортируем выборку по возрастанию ID но по убыванию даты (столбец DATE):
SELECT * FROM `USERS` ORDER BY `ID` ASC, `DATE` DESC;

Ограничение (LIMIT)

При работе с базой надо всегда помнить, что база данных - это довольно медленный инструмент. Поэтому необходимо минимизировать не только количество запросов к ней, но и количество выбранных из неё данных. Это можно сделать тремя способами. И лучше использовать их все одновременно:
  • Делать выборку определённых полей, а не всех полей таблицы. Для этого после команды SELECT необходимо ставить не *, а название выбираемых полей через запятую.
  • Использовать условия WHERE, которые ограничивают размер выборки.
  • Использовать LIMIT (лимит) на количество выбираемых строк.
О последнем способе поговорим отдельно. Лимит задаётся числом. К примеру, если написать "LIMIT 1;", то в результате SQL запроса будут возвращены не более 10 строк из таблицы. Чтобы установить лимит, напишите его в самом конце запроса:
SELECT * FROM `USERS` LIMIT 10;
Установка лимита на выборку может значительно ускорить некоторые запросы к базе. Не забывайте, что чем медленнее загружаются страницы Вашего сайта, тем меньше посетителей на нём будет. Потому что люди не любят ждать загрузки страницы. Загрузка длительностью более 2 секунд отталкивает от сайта более 60% его аудитории.

Переименовывание столбца при запросе (AS)

Бывают случаи, когда необходимо переименовать столбец в результатах выборки. Зачастую это делается для упрощения последующего программирования обработки выборки. Представьте, что у нас есть таблица со столбцом, который называется "SECTION_FULL_NUMBER":
+---------------------+
| SECTION_FULL_NUMBER |
+---------------------+
| 6                   |
+---------------------+
| 118                 |
+---------------------+
| 21                  |
+---------------------+
Использовать такое длинное имя не хочется, поэтому попробуем его укоротить до слова "NAME". Сделать это нам поможет команда "AS", которую необходимо поставить после называния выбираемого поля, вот так:
SELECT `SECTION_FULL_NUMBER` AS 'SECTION' FROM `USERS`;
В результате выполнения такого SQL запроса мы получим таблицу, но название столбца будет заменено на 'SECTION':
+---------+
| SECTION |
+---------+
| 6       |
+---------+
| 118     |
+---------+
| 21      |
+---------+
При переименовании в SELECT нельзя указать новое название столбца, которое будет совпадать с названием другого столбца.

Количесво строк в выборке (COUNT)

Одной из самых частых необходимостей является подсчёт количества строк вы вборке. Но как было сказано ранее, получение большого количества строк и столбцов из базы происходит довольно долго, что замедляет сайт. Поэтому не стоит пытаться подсчитывать количество строк после получения выборки. Лучше получить количество строк непосредственно из запроса. Для этого исопльзуется команда "COUNT(*)" (по английски "count" переводится как "количество"). Попробуем использовать её в SQL запросе:
SELECT COUNT(*) FROM `USERS`;
В результате выполнения такого запроса будет получен один столбце с одной строкой:
+----------+
| COUNT(*) |
+----------+
| 3        |
+----------+
Цифра "3" в примере означает, что в таблице было всего 3 записи (3 строчки). Если попробовать обработать данные, возвращённые базой, то может возникнуть проблема с названием столбца (в нём есть скобки и звёздочка). Поэтому воспользуемся рекомендацией из предыдущего параграфа и переименуем столбец в "CNT":
SELECT COUNT(*) AS 'CNT' FROM `USERS`;
Теперь результат будет легче обработать благодаря лаконичному названию столбца, содержащему только латинские буквы:
+-----+
| CNT |
+-----+
| 2   |
+-----+
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, покупка SSL сертификатов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Была ли эта статья полезна? Есть вопрос?
Cмотрите другие статьи: