Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Сортировка данных

Инструкция ORDER BY

Для сортировки данных в SQL используется инструкция ORDER BY команды SELECT.

SELECT список_полей FROM имя_таблицы ORDER BY поле1 [ASC | DESC] [, поле2 [ASC | DESC],];

  • поле1, поле 2 итд. – это поля по которым требуется осуществить сортировку. В инструкции ORDER BY должно быть указано как минимум одно поле для сортировки.
  • Параметр ASC показывает, что сортировка должна быть в прямом порядке. Этот параметр принят по умолчанию, поэтому если нужна прямая сортировка, то его можно вообще не указывать.
  • Параметр DESC нужно указывать, если требуется сортировка в обратном порядке.
Пример 1

Путь имеется таблица booking, содержащая данные о заказах неких клиентов. Нужно упорядочить таблицу по фамилиям заказчиков. Оба следующих запроса решают эту задачу:

SELECT * FROM booking ORDER BY fio;

SELECT * FROM booking ORDER BY fio ASC;

Результат:

Сортировка данных. Автор24 — интернет-биржа заказчиков и авторов

Пример 2

Если сортировку по фамилии нужно выполнить в обратном порядке, то потребуется следующий запрос:

SELECT * FROM booking ORDER BY fio DESC;

Результат:

Сортировка данных. Автор24 — интернет-биржа заказчиков и авторов

Поле в сортировке может быть задано не только именем, но и порядковым номером, начиная с единицы.

Пример 3

Запросы

SELECT * FROM booking ORDER BY fio;

и

SELECT * FROM booking ORDER BY 1;

Возвращают один и тот же результат.

В приведенных примерах для записей, содержащих одну и ту же фамилию, сортировка по дате заказа устанавливалась в случайном порядке. Чтобы записи для одной фамилии упорядочивались по дате заказа, потребуется указывать два поля в сортривке. При чем, дата заказа должна быть на второй позиции. При сортировке по нескольким полям одни поля можно сортировать по возрастанию, другие – по убыванию.

Пример 4

Если требуется, чтобы даты заказов, относящиеся к одному заказчику, выстроились по возрастанию, то нужно выполнить следующий запрос:

SELECT * FROM booking ORDER BY fio, booking_date;

Результат:

Сортировка данных. Автор24 — интернет-биржа заказчиков и авторов

Если даты заказа для одного заказчика должны выстроиться по убыванию, то запрос будет таким:

SELECT * FROM booking ORDER BY fio ASC,booking_date DESC;

Результат:

Сортировка данных. Автор24 — интернет-биржа заказчиков и авторов

«Сортировка данных» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

Представления кодировки

В командах CREATE DATABASE, CREATE TABLE присутствует инструкция CHARACTER SET. Она задает кодировку – таблицу соответствия символов и битовых кодов. При работе с базой данных важно знать, какая кодировка используется в данной таблице, чтобы сортировка и индексация проводились корректно. Но кроме кодировки порядок символов задается представлениями.

Определение 1

Представление кодировки (COLLATE) – набор правил для сравнения символов в массиве данных.

Одной кодировке соответствует несколько представлений. Например, у кодировки cp1251 есть представление cp1251_general_ci, которое упорядочивает без учета регистра, и представление cp1251_bin, которое упорядочивает с учетом регистра.

В качестве примера рассмотрим часто возникающую проблему с украинским алфавитом. В представлении кодировки utf8, которое называется utf8_bin, символы русского языка упорядочиваются верно, а вот для украинского языка вверху алфавита оказываются буквы I и Є и только после них следует буква А.

Сортировка данных. Автор24 — интернет-биржа заказчиков и авторов

Конечно же это не правильно. Поэтому для упорядочивания по украинскому алфавиту нужно указывать представление кодировки:

SELECT список_полей FROM имя_таблицы ORDER BY поле1 [ASC | DESC] [, поле2 [ASC | DESC],] COLLATE имя_представления_кодировки;

В приведенном примере нужно выполнить запрос:

Пример 5

SELECT * FROM booking ORDER BY fio COLLATE utf8_unicode_ci;

Результат:

Сортировка данных. Автор24 — интернет-биржа заказчиков и авторов

Для того чтобы получить список представлений по некоторой кодировке нужно выполнить запрос:

SHOW COLLATION LIKE 'шаблон';

Шаблоном в данном случае, как правило, является название кодировки с символом % после него.

Пример 6

Например, чтобы узнать все представления для кодировки utf8 нужно выполнить запрос:

SHOW COLLATION LIKE 'utf8%';

Дата написания статьи: 29.08.2016
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot