Для чего используется оператор ORDER BY в SQL?

«Для чего используется оператор ORDER BY в SQL?» — вопрос из категории Базы данных, который задают на 25% собеседований C# Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Оператор ORDER BY используется в SQL для сортировки результирующего набора строк по одному или нескольким столбцам в порядке возрастания (ASC) или убывания (DESC).

Базовый синтаксис:

SELECT column1, column2
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC];

Пример с подробностями:

-- Сортировка сотрудников по фамилии (A-Z), а затем по убыванию зарплаты
SELECT FirstName, LastName, Salary, HireDate
FROM Employees
WHERE DepartmentId = 5
ORDER BY LastName ASC, Salary DESC;

Ключевые особенности и лучшие практики:

  1. Сортировка по нескольким столбцам: Приоритет задается порядком столбцов в ORDER BY. Сначала сортируется по первому столбцу, затем по второму внутри групп с одинаковыми значениями первого и т.д.
  2. Сортировка по выражению: Можно сортировать не только по столбцу, но и по результату выражения или псевдониму (alias).
    SELECT Name, UnitPrice * UnitsInStock AS TotalValue
    FROM Products
    ORDER BY TotalValue DESC;
  3. Обработка NULL-значений: Поведение зависит от СУБД. В SQL Server и PostgreSQL NULL считается меньшим любого значения, поэтому при ORDER BY ... ASC строки с NULL идут первыми, а при DESC — последними. В MySQL по умолчанию NULL считается минимальным значением.
  4. Влияние на производительность: ORDER BY — ресурсоемкая операция, особенно на больших объемах данных. Если сортировка выполняется часто по одному и тому же столбцу, создание индекса по этому столбцу может значительно ускорить запрос.
  5. Использование с LIMIT/OFFSET (или FETCH/OFFSET): ORDER BY обязателен для предсказуемого постраничного вывода (pagination). Без него порядок строк не гарантирован.
    -- Получить 10 самых дорогих товаров
    SELECT Name, UnitPrice
    FROM Products
    ORDER BY UnitPrice DESC
    LIMIT 10;