Oracle SQL. 100 шагов от новичка до профессионала. 20 дней новых знаний и практики - страница 17
Синтаксис
Где таблица – наименование таблицы, условия выборки которой могут быть объединены логическими операндами.
Примеры запросов
Выведите все записи из таблицы AUTO, отсортируйте автомобили по марке (MARK).
Рисунок 25. Выбрать из таблицы AUTO, отсортировать по марке
Выведите все записи из таблицы AUTO, отсортируйте автомобили по дате создания и цвету в обратном порядке (RELEASED, MARK).
Рисунок 26. Запрос к таблице AUTO: сортировка по дате и цвету авто
Сортировка по двум колонкам RELEASED от меньшей даты к большей, MARK от A—Z.
Выберите только те записи из таблицы MAN, где возраст (YEAROLD) человека больше 30 лет; отсортируйте выбранные записи по возрасту, сортировку произведите в обратном порядке.
Рисунок 27. Выбор из таблицы MAN, где возраст больше 30 лет; сортировка по году выпуска
Пример использования ORDER BY и WHERE
Выберите наименования городов (CITYNAME) и население (PEOPLES) из таблицы CITY, отсортируйте выбранные данные в обратном порядке по наименованию города и количеству населения (PEOPLES).
Рисунок 28. Запрос к CITY: сортировка по названию и населению в обратном порядке
Важные замечания
Следует пояснить, как работает сортировка по нескольким колонкам.
Сначала данные сортируются по первой колонке в инструкции ORDER BY, затем уже в рамках этой сортировки данные сортируются по второму признаку, по второй колонке из инструкции ORDER BY, затем третьей и так далее.
Команда сортировки ORDER BY выполняется в запросе последней, сортируется итоговое выражение запроса.
Это важная информация, и она пригодится нам в дальнейшем, при создании сложных SQL-запросов.
Вопросы учеников
Как сделать, если я хочу одну колонку отсортировать по возрастанию, а две другие по убыванию?
Давайте рассмотрим пример.
Выберите наименования городов (CITYNAME) и население (PEOPLES) из таблицы CITY, отсортируйте выбранные данные по коду города (CITYCODE), в обратном порядке по наименованию города и количеству населения.
Я знаю, что для инструкции ORDER BY существует альтернативный синтаксис. Расскажите о нем.
Перепишем этот запрос с использованием альтернативного синтаксиса:
То есть вместо названий колонок таблиц в инструкции ORDER BY мы используем порядковый номер колонки в нашем запросе – у CITYCODE он равен 1, у CITYNAME 2, у PEOPLES 3.
Можно ли отсортировать запрос по полю, которого нет в запросе, но которое есть в таблице после инструкции FROM?
Да, синтаксис SQL это допускает, и вот пример:
Контрольные вопросы и задания для самостоятельного выполнения
1. Выберите записи из таблицы CITY, где в названии города (CITYNAME) есть слог «ем», отсортируйте запрос по названию города (CITYNAME) и по популяции (PEOPLES) в обратном порядке.
2. Выберите все записи из таблицы AUTO, отсортируйте записи по цвету (COLOR) и по марке (MARK) автомобиля в обратном порядке.
Шаг 14. Ограничение на количество выбранных строк ROWNUM, TOP (n)
Введение
Иногда запросы строятся таким образом, что на экран сразу выводится множество строк.
А что если нам необходимо ограничить количество строк выводимой информации, то есть из десятков тысяч строк нам достаточно нескольких строк для анализа информации?
Теория и практика
Для решения этой задачи в разных диалектах языка SQL используются разные синтаксические конструкции: в MS SQL это конструкция TOP, в ORACLE есть специальный предикат ROWNUM, в PostgreSql, MYSQL для этого существует конструкция LIMIT.