Сортировка данных в SQL. SQL — это просто

Аватарка пользователя Slava Rozhnev

Выполняем сортировку данных в SQL при помощи команды ORDER BY и ключевых слов ASC и DESC.

Обложка поста Сортировка данных в SQL. SQL — это просто

В предыдущей статье цикла вы освоили базовые команды SELECT и FROM и уже можете написать элементарный запрос к базе. В этой мы продолжим изучение английского (зачёркнуто) SQL и выучим ещё три слова: ORDER BY, ASC и DESC.

Если вы не знаете английский – можно открыть онлайн переводчик и найти перевод:

  1. ORDER BY – упорядочить (отсортировать) по;
  2. ASC – (сокращение от ascending – восходящий) порядок то есть сортировка от меньшего к большему (0, 1, 2, 3 .. ) в случае сортировки слов – по алфавиту (А -> Я);
  3. DESC – (сокращение от descending – нисходящий) порядок то есть сортировка от большего к меньшему (100, 99, 98 …). Слова в этом случае сортируются в порядке обратном алфавитному (Я -> А).

Как мы можем использовать эти ключевые слова в написании запросов? Например, так:

			SELECT name, score
FROM students
ORDER BY name ASC;
		

Если перевести запрос с английского на русский получим:

			ВЫБЕРИ имя и оценку
ИЗ ТАБЛИЦЫ студентов
УПОРЯДОЧИВ ПО имени ПО ВОЗРАСТАНИЮ;
		

Выполним этот запрос получим следующий результат:

			|------------------|-------|
| name             | score |
|------------------|-------|
| Илья Краснов     | 3     |
| Марина Кузина    | 4     |
| Сергей Петров    | 5     |
| Татьяна Говорова | 5     |
		

Как видите мы получили список студентов в алфавитном порядке. Выполним ещё задачу – отсортируем список студентов так чтобы в начале были студенты с более высокими оценками. Для этого напишем запрос:

			SELECT name, score FROM students ORDER BY score DESC;
		
			|------------------|-------|
| name             | score |
|------------------|-------|
| Сергей Петров    | 5     |
| Татьяна Говорова | 5     |
| Марина Кузина    | 4     |
| Илья Краснов     | 3     |
		

Как видите порядок записей изменился – в начале списка отличники Сергей и Татьяна, а Илья со своей тройкой оказался внизу списка. Уделим ещё пару минут нашим отличникам. Они оба имеют оценку 5, значит при выполнении нашего запроса с сортировкой обе записи имеют равный приоритет и то что Сергей оказался выше Татьяны – дело случая. База данных не гарантирует порядок строк кроме того который явно указан в запросе. Если нам принципиально чтобы студенты с равными оценками были упорядочены по имени придется уточнить запрос следующим образом:

			SELECT name, score FROM students ORDER BY score DESC, name ASC;
		

В этом запросе мы прописали что хотим получить данные отсортированные по убыванию оценки, а в случае если оценки равны – отсортировать такие строки по имени. Таким запросом мы гарантируем порядок выдачи строк вне зависимости от настроения базы данных.

Таким образом вы знаете уже пять слов из лексикона SQL и можете выполнить задания 3 и 9 на SQLtest.online

Следующий урок можно найти здесь а вопросы по теме задать можно тут.

SQL
Базы данных
225