- Команда ORDER BY
- Основные запросы
- Условия выборки
- Группировка
- Сложение строк
- Несколько таблиц
- Длина строк
- Изменение строк
- Поиск по строкам
- Работа с пробелами
- Работа с регистром
- Информация
- Условия
- Полезное
- Разное
- Математические функции
- Списки
- Извлечение части даты
- Получение даты и времени
- Преобразование даты
- Сложение дат
- Тригонометрия
- Отдельные символы
- Системы счисления
- Синтаксис
- Примеры
- Пример
- Пример
- Пример
- Пример
- Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite
- Базы данных
- SQL оператор ORDER BY
- Описание
- Синтаксис
- Параметры или аргумент
- Примечание
- Пример — сортировка результатов по возрастанию
- SQL SELECT и запросы на выборку данных
- SELECT для выбора столбцов таблицы
- SELECT и WHERE для выбора строк таблицы
- Использование SELECT и предикатов IN, OR, BETWEEN, LIKE
- Написать SQL запросы с SELECT и предикатами IN, NOT IN, BETWEEN самостоятельно, а затем посмотреть решения
- SELECT и ORDER BY — сортировка (упорядочение) строк
- SELECT и DISTINCT — удаление дубликатов строк
- Оператор SELECT в подзапросах SQL
Видео:Что такое словосочетание. Как составить словосочетания?Скачать
Команда ORDER BY
Видео:Что такое словосочетаниеСкачать
Основные запросы
Видео:Что такое словосочетаниеСкачать
Условия выборки
Видео:Что такое словосочетание 2 классСкачать
Группировка
Видео:Что такое словосочетание?Скачать
Сложение строк
Видео:СЛОВОСОЧЕТАНИЯ. ЛЕГКО НАЙТИ В ПРЕДЛОЖЕНИИ!!!Скачать
Несколько таблиц
Видео:Словосочетания: согласование, управление, примыканиеСкачать
Длина строк
Видео:Русский язык. Словосочетание. Виды словосочетаний.Скачать
Изменение строк
Видео:ЗА ТРИ МИНУТЫ ИЩЕМ СЛОВОСОЧЕТАНИЕ В ПРЕДЛОЖЕНИИ!!!ПРАКТИЧЕСКАЯ РАБОТАСкачать
Поиск по строкам
Видео:Словосочетание - что это такоеСкачать
Работа с пробелами
Видео:Словосочетания: зачем и как искать?Скачать
Работа с регистром
Видео:Что такое словосочетание. Из чего состоит словосочетаниеСкачать
Информация
Видео:Виды связи в словосочетаниях: согласование, управление, примыканиеСкачать
Условия
Видео:Согласование, управление, примыканиеСкачать
Полезное
Видео:Русский язык. Словосочетание. Виды словосочетаний. Видеоурок.Скачать
Разное
- Типы полей
- Организация базы данных
создание правильной структуры —> - Подзапросы
- SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop; mysql> SELECT * FROM shop WHERE price=@min_price OR price=@max_price; https://habrahabr.ru/post/133781/ тут еще про переменные цикл получается SET @i = 0; SELECT * FROM product WHERE MOD(@i:=@i+1, 2) = 0; —>Переменные sql
Видео:Русский язык 9 класс (Урок№6 - Словосочетание.)Скачать
Математические функции
Видео:Что такое словосочетание ?Скачать
Списки
Видео:#70 English A1-A2: переведи словосочетания (см. описание)Скачать
Извлечение части даты
Видео:Что такое словосочетаниеСкачать
Получение даты и времени
Видео:Словосочетание. Типы словосочетаний. Именные, глагольные, наречные словосочетанияСкачать
Преобразование даты
Сложение дат
Тригонометрия
Отдельные символы
Системы счисления
Команда ORDER BY позволяет сортировать записи по определенному полю при выборе из базы данных.
См. также команду LIMIT, которая ограничивает количество выбираемых записей.
Синтаксис
Сортировка по одному полю:
Можно сортировать не по одному, а по многим полям сразу:
По умолчанию записи сортируются по возрастанию, чтобы отсортировать по убыванию — поставьте DESC:
По умолчанию будет сортировка, будто поставлено ASC:
Условие WHERE не обязательно — если его не поставить, будут выбраны все записи:
Примеры
Все примеры будут по этой таблице workers, если не сказано иное:
id айди | name имя | age возраст | salary зарплата |
---|---|---|---|
1 | Дима | 23 | 400 |
2 | Петя | 25 | 500 |
3 | Вася | 23 | 500 |
4 | Коля | 30 | 1000 |
5 | Иван | 27 | 500 |
6 | Кирилл | 28 | 1000 |
Пример
Давайте получим все записи из таблицы и отсортируем их по возрастанию возраста:
SQL запрос выберет строки в следующем порядке:
id айди | name имя | age возраст | salary зарплата |
---|---|---|---|
1 | Дима | 23 | 400 |
3 | Вася | 23 | 500 |
2 | Петя | 25 | 500 |
5 | Иван | 27 | 500 |
6 | Кирилл | 28 | 1000 |
4 | Коля | 30 | 1000 |
Так как выбираются все записи, то блок WHERE можно не указывать:
Можно также указать тип сортировки в явном виде — ASC — результат от этого не изменится:
Пример
Давайте теперь отсортируем записи по убыванию возраста:
SQL запрос выберет строки в следующем порядке:
id айди | name имя | age возраст | salary зарплата |
---|---|---|---|
4 | Коля | 30 | 1000 |
6 | Кирилл | 28 | 1000 |
5 | Иван | 27 | 500 |
2 | Петя | 25 | 500 |
1 | Дима | 23 | 400 |
3 | Вася | 23 | 500 |
Пример
Давайте теперь отсортируем записи одновременно по возрастанию возраста и по убыванию зарплаты.
При этом записи сначала будут сортироваться по возрасту, а те записи, в которых возраст одинаковый (в нашем случае — 23), будут располагаться по убыванию зарплаты:
SQL запрос выберет строки в следующем порядке:
id айди | name имя | age возраст | salary зарплата |
---|---|---|---|
3 | Вася | 23 | 500 |
1 | Дима | 23 | 400 |
2 | Петя | 25 | 500 |
5 | Иван | 27 | 500 |
6 | Кирилл | 28 | 1000 |
4 | Коля | 30 | 1000 |
Пример
Давайте при тех же условиях (т.е. сначала сортировка по возрасту) отсортируем по возрастанию зарплаты.
Теперь первая и вторая запись поменяются местами так, чтобы сначала шла меньшая зарплата, а потом — большая:
SQL запрос выберет строки в следующем порядке:
Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite
Базы данных
SQL оператор ORDER BY
В этом учебном материале вы узнаете, как использовать SQL оператор ORDER BY с синтаксисом и примерами.
Описание
SQL оператор ORDER BY используется для сортировки записей в наборе результатов запроса SELECT.
Синтаксис
Синтаксис для оператора ORDER BY в SQL.
Параметры или аргумент
Примечание
- Если модификатор ASC или DESC не указан в предложении ORDER BY, результаты будут отсортированы по expressions в порядке возрастания. Это эквивалентно ORDER BY expressions ASC
Пример — сортировка результатов по возрастанию
Чтобы отсортировать результаты в порядке возрастания, вы можете указать атрибут ASC. Если после поля в предложении ORDER BY не указано значение (ASC или DESC), порядок сортировки по умолчанию будет соответствовать возрастающему. Давайте рассмотрим это дальше.
В этом примере у нас есть таблица customers со следующими данными:
SQL SELECT и запросы на выборку данных
Оглавление
- SELECT для выбора столбцов таблицы
- SELECT и WHERE для выбора строк таблицы
- Использование SELECT и предикатов IN, OR, BETWEEN, LIKE
- SELECT и ORDER BY — сортировка (упорядочение) строк
- SELECT и DISTINCT — удаление дубликатов строк
- Оператор SELECT в подзапросах SQL
- Группировка вместе с сортировкой в запросе: что ставится раньше — GROUP BY или ORDER BY?
Связанные темы
- Реляционная модель данных
- SELECT в подзапросах
Назад >> |
Оператор языка SQL SELECT — основная строительная конструкция для создания любого, простого или сложного запроса к базе данных. Без него, как и без фундамента для постройки, невозможно получить ни одну выборку данных из базы. На этом уроке мы узнаем, как построить запрос для получения
- простой выборки данных без условий (выбор всех строк во всех столбцах или всех строк в определённых столбцах);
- выборки данных с одним или несколькими условиями (выбор определённых строк), которые заданы в секции WHERE с помощью предикатов и дополительный операторов;
- как использовать оператор SELECT в подзапросах .
SELECT для выбора столбцов таблицы
Запрос с оператором SELECT для выбора всех столбцов таблицы имеет следующий синтаксис:
То есть для выбора всех столбцов таблицы после слова SELECT нужно ставить звёздочку.
Если вы хотите выполнить запросы к базе данных из этого урока на MS SQL Server, но эта СУБД не установлена на вашем компьютере, то ее можно установить, пользуясь инструкцией по этой ссылке .
Работать будем с базой данных фирмы — Company1. Скрипт для создания этой базы данных, её таблиц и заполения таблиц данными — в файле по этой ссылке .
Пример 1. Итак, есть база данных фирмы — Company1. В ней есть таблица Org (Структура фирмы) и Staff (Сотрудники). Требуется выбрать из таблиц все столбцы. Соответствующий запрос для выбора всех столбцов из таблицы Org выглядит следующим образом (на MS SQL Server — с предваряющей конструкцией USE company1;):
Этот запрос вернёт следующее (для увеличения картинки щёлкнуть по ней левой кнопкой мыши):
Запрос для выбора всех столбцов из таблицы Staff выглядит следующим образом (на MS SQL Server — с предваряющей конструкцией USE company1;):
Этот запрос вернёт следующее:
Для выбора определённых столбцов таблицы нам потребуется вместо звёздочки перечислить через запятую названия всех столбцов, которые требуется выбрать:
Пример 2. Пусть требуется из таблицы Org выбрать столбцы Depnumb и Deptname, в которых содержатся данные соответственно о номерах отделов фирмы и об их названиях. Запрос для получения такой выборки будет следующим (на MS SQL Server — с предваряющей конструкцией USE company1;):
А из таблицы Staff нужно выбрать столбцы Dept, Name, Job, в которых содержатся соответственно данные о номере отдела, в котором трудится сотрудник, его имени и должности (на MS SQL Server — с предваряющей конструкцией USE company1;):
SELECT и WHERE для выбора строк таблицы
Для выбора определённых строк таблицы вместе с оператором SELECT уже потребуется ключевое слово WHERE, указывающее на некоторое значение или несколько значений, содержащиеся в интересующих нас строках. Наиболее простые условия задаются при помощи операторов сравнения и равенства ( , =), а также ключевого слова IS. Условий может быть несколько, тогда они перечисляются с использованием ключевого слова AND. Запросы для выбора строк имеют следующий синтаксис:
Пример 3. Выберем из таблицы Staff строки, в которых содержатся данные только о сотрудниках, которые работают в 38-м отделе (на MS SQL Server — с предваряющей конструкцией USE company1;):
Этот запрос вернёт следующие данные:
Пример 4. В предыдущем примере мы выбирали строки из таблицы только по значению одного столбца — DEPT. Пусть теперь нужно выбрать данные о сотрудниках, которые работают в 38-м отделе и должность которых — служащий (Clerk). Для этого в секции WHERE соответствующие значения нужно перечислить с использованием слова AND (на MS SQL Server — с предваряющей конструкцией USE company1;):
Этот запрос вернёт следующие данные:
Пример 5. Пусть нужно выбрать из таблицы Staff идентификаторы и имена тех сотрудников, размер комиссии которых — неопределённый. Для этого в секции WHERE перед указанием значения столбца Comm — NULL нужно ставить не знак равенства, а слово IS (на MS SQL Server — с предваряющей конструкцией USE company1;):
Этот запрос вернёт следующие данные:
Для указания значений в строках, которые требуется выбрать, используются и знаки сравнения.
Пример 6. Выберем из таблицы имена, размеры заработные платы и число лет, проработанных в фирме, сотрудников, которые работают в фирме более девяти лет (на MS SQL Server — с предваряющей конструкцией USE company1;):
Запрос вернёт следующие строки:
Использование SELECT и предикатов IN, OR, BETWEEN, LIKE
Предикаты — слова IN, OR, BETWEEN, LIKE в секции WHERE — также позволяют выбрать определённые диапазоны значений (IN, OR, BETWEEN) или значения в строках (LIKE), которые требуется выбрать из таблицы. Запросы с предикатами IN, OR, BETWEEN имеют следующий синтаксис:
Запросы с предикатом LIKE имеют следующий синтаксис:
Пример 7. Пусть требуется выбрать из таблицы Staff имена, должности и число отработанных лет сотрудников, работающих в отделах с номерами 20 или 84. Это можно сделать следующим запросом (на MS SQL Server — с предваряющей конструкцией USE company1;):
Результат выполнения запроса:
На сайте есть подробный урок об использовании предиката IN.
Пример 8. Пусть теперь требуется выбрать из таблицы Staff те же данные, что и в предыдущем примере. Запрос со словом OR аналогичен запросу со словом IN и перечислением интересующих значений в скобках. Запрос будет следующим (на MS SQL Server — с предваряющей конструкцией USE company1;):
Пример 9. Выберем из той же таблицы имена, должности и число отработанных лет сотрудников, зарплата которых между 15000 и 17000 включительно (на MS SQL Server — с предваряющей конструкцией USE company1;):
Результат выполнения запроса:
На сайте есть подробный урок об использовании предиката BETWEEN.
Предикат LIKE используется для выборки тех строк, в значениях которых встречаются символы, указанные после предиката между апострофами (‘).
Пример 10. Выберем из той же таблицы имена, должности и число отработанных лет сотрудников, имена которых начинаются с буквы S и состоят из 7 символов (на MS SQL Server — с предваряющей конструкцией USE company1;):
Символ подчёркивания (_) означает любой символ. Результат выполнения запроса:
Пример 11. Выберем из той же таблицы имена, должности и число отработанных лет сотрудников, имена которых начинаются с буквы S и содержат любые другие буквы в любом количестве (на MS SQL Server — с предваряющей конструкцией USE company1;):
Символ процентов (%) означает любое количество символов. Результат выполнения запроса:
На сайте есть подробный урок об использовании предиката LIKE.
Значения, указанные с использованием предикатов IN, OR, BETWEEN, LIKE можно инвертировать при помощи слова NOT. Тогда запрашиваемые данные будут иметь противоположный смысл. Если мы используем NOT IN (20, 84), то будут выведены данные сотрудников, которые работают во всех отделах, кроме имеющих номера 20 и 84. С использованием NOT BETWEEN 15000 AND 17000 можно получить данные сотрудников, зарплата которых не входит в интервал от 15000 до 17000. Запрос с NOT LIKE выведет данные сотрудников, чьи имена не начинаются или не содержат символов, указанных с NOT LIKE.
Написать SQL запросы с SELECT и предикатами IN, NOT IN, BETWEEN самостоятельно, а затем посмотреть решения
Есть база данных «Театр». Таблица Play содержит данные о постановках. Таблица Team — о ролях актёров. Таблица Actor — об актёрах. Таблица Director — о режиссёрах. Поля таблиц, первичные и внешние ключи можно увидеть на рисунке ниже (для увеличения нажать левой кнопкой мыши).
Пример 12. Вывести список актёров, которые не разу не были утверждены на главную роль. В таблице team данные о главных ролях содержатся в столбце mainteam. Если роль — главная, то в соответствующей строке отмечено ‘Y’.
Пример 13. Вывести список актеров, которые играли во всех спектаклях WilliamShakespeare. Данные об авторах содержается в таблице play в столбце author.
Пример 14. Вывести спектакли, в которых средний возраст актеров от 20 до 30 (использовать BETWEEN, Group by, Having, AVG, перекрестное соединение таблиц (CROSS JOIN), удобнее без слова JOIN, а с перечислением таблиц через запятую).
SELECT и ORDER BY — сортировка (упорядочение) строк
Разобранные до сих пор запросы SQL SELECT возвращали строки, которые могли быть расположены в любой последовательности. Однако часто требуется отсортировать строки по порядку номеров, алфавиту и другим признакам. Для этого служит ключевое словосочетание ORDER BY. Такие запросы имеют следующий синтаксис:
Пример 15. Вновь база данных Company1. Пусть требуетя выбрать из таблицы Staff сотрудников, работающих в отделе с номером 84 и отсортировать (упорядочить) записи по числу отработанных лет в возрастающем порядке (на MS SQL Server — с предваряющей конструкцией USE company1;):
Слово ASC указывает, что порядок сортировки — возрастающий. Это слово не обязательно, так как возрастающий порядок сортировки применяется по умолчанию. Результат выполнения запроса:
Пример 16. Пусть требуетя выбрать те же данные, что и в предыдущем примере, но отсортировать (упорядочить) записи по числу отработанных лет в убывающем порядке (на MS SQL Server — с предваряющей конструкцией USE company1;):
Слово DESC указывает, что порядок сортировки — убывающий. Результат выполнения запроса:
SELECT и DISTINCT — удаление дубликатов строк
Когда для значений строк таблицы не задано условие уникальности, в результатах запроса могут встретиться одинаковые строки. Часто требуется вывести лишь уникальные строки. Это делается при помощи выражения DISTINCT после оператора SELECT.
Пример 17. Пусть требуетcя узнать, какие существуют отделы и какие должности среди отделов, номера которых меньше 30. Это можно сделать при помощи следующего запроса (на MS SQL Server — с предваряющей конструкцией USE company1;):
Результат выполнения запроса:
Оператор SELECT в подзапросах SQL
До сих пор мы разбирали конструкции SQL с оператором SELECT, в которых условия, по котором выбираются данные, и сами выбираемые данные содержатся в одной и той же таблице базы данных. На практике часто бывает, что данные, которые надо выбрать, содержатся в одной таблице, а условия — в другой. Здесь на помощь приходят подзапросы: значения условия отбора возвращаются из другого запроса (вложенного запроса), начинающегося также с SELECT. Запросы с подзапросами могут выдавать как одну, так и несколько строк.
Пример 18. Все те же таблицы Org и Staff. Пусть требуетcя узнать, в каком подразделении работает сотрудник с идентификационным номером 16, и где это подразделение расположено. Но информация о подразделениях хранится в таблице Org, а информация о сотрудниках — в таблице Staff. Это можно сделать при помощи следующего запроса с подзапросом, в котором внешний SELECT обращается к таблице Org, а внутренний SELECT — к таблице Staff:
Пример 19. Пусть теперь требуетcя узнать, в каких подразделениях (без дублирования) работают сотрудники с заработной платой менее 13000. Для этого в секции WHERE внешнего SELECT (запрос к таблице Org) задаётся условие, принимающее диапазон значений (IN), а внутренний SELECT (к таблице Staff) как раз возвращает требуемый диапазон значений: