Назад    Оглавление    Далее

Сортировка строк, возвращаемых запросом

Порядок строк, возвращаемых в результате запроса, не определен. Отсортировать строки можно с помощью предложения ORDER BY. Для сортировки можно задать выражение или позицию столбца в списке предложения SELECT.

Пример: Вывод из таблицы S_EMP фамилии, номера отдела и даты начала работы каждого служащего. Результат сортируется по фамилиям.

LAST_NAME
-----------------------
DEPT_ID
----------------
START_DATE
-----------------
biri 43 07-APR-90
Catchpole 43 09-FEB-92
Chang 44 30-NOV-90
Dancs 45 17-MAR-91
Dumas 35 09-OCT-91
Giljum 32 18-JAN-92
Havel 45 27-FEB-91

По умолчанию строки сортируются в порядке возрастания:

Порядок сортировки, принятый по умолчанию, меняется на противоположный с помощью слова DESC после имени столбца в предложении ORDER BY.

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

LAST_NAME DEPT_ID START_DATE
----------------------- ------------------- ----------------
...    
Urquhart 41 18-JAN-91
Chang 44 30-NOV-90
Patel 34 17-OCT-90
Menchu 42 14-MAY-90
...    
25 rows Selected.    

В предложении ORDER BY можно указать псевдоним столбца.

Еще один способ сортировки результатов запроса - это сортировка по позиции. Он особенно полезен при сортировке по длинному выражению. Вместо повторного ввода выражения можно указать его позицию в списке SELECT

Сортировать результат можно и по нескольким столбцам. Предельным количеством столбцов сортировки является количество столбцов таблицы. Столбцы указываются в предложении ORDER BY через запятые. Для изменения порядка сортировки по какому-либо столбцу на обратный следует задать квалификатор DESC после его имени или позиции. Сортировать можно и по столбцам, не входящим в список SELECT.

Пример: Вывод фамилии, номера отдела и заработной платы всех служащих. Результат сортируется по номерам отделов, а внутри отделов - в порядке убывания заработной платы.

LAST_NAME DEPT_ID SALARY
-------------------------- ------------------- --------------------
Quick-To-See 10 1450
Nagayama 31 1400
Magee 31 1400
Giljum 32 1490
Sedeghi 33 1515
Nguyen 34 1525
Patel 34 795
...    

 

Ограничение количества выбираемых строк.

Ограничить набор строк, возвращаемых в результате запроса, можно с помощью предложения WHERE. Предложение WHERE следует сразу за предложением FROM и задает условие, которое должно быть выполнено. Условие состоит из имен столбцов, выражений, констант и операторов сравнения.

Пример: Запрос для вывода имен, фамилий и должностей, служащих с фамилией “Magee”.

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

Оператор BETWEEN.

Оператор BETWEEN используется для проверки вхождения значения в интервал значений (включая границы интервала). Нижняя граница должна быть указана первой.

Пример: Вывод имени, фамилии и даты найма служащих, нанятых между 9 мая и 17 июня 1991 года включительно.

Оператор IN.

Для проверки принадлежности значений к заданному списку используется оператор IN.

Пример: Вывод номера, названия отдела и номера региона для отделов в регионах 1 и 3.

Оператор LIKE.

Используется для поиска строковых значений с помощью метасимволов (wildcards). Условия для поиска могут содержать символьные литералы или числа:

Пример: Вывод всех фамилий служащих на букву “М”.

Оператор LIKE может использоваться в качестве быстрого эквивалента некоторых операций BETWEEN.

Пример: Вывод фамилий и дат найма для служащих, принятых на работу в 1991 году.

В критерии поиска символы ‘%’ и ‘_’ можно сочетать с литералами в любой комбинации.

Пример: Вывод фамилий, второй буквой которых является “а”

Параметр ESCAPE.

Поиск символов ‘%’ и ‘_’ требует использования идентификатора ESCAPE (отменяющего специальное значение метасимволов).

Пример: Вывод названий фирм, содержащих сочетание “X_Y”.

Оператор IS NULL.

Неопределенные значения проверяются с помощью оператора IS NULL. Пользоваться оператором “=“ для сравнения с неопределенными значениями не следует, так как неопределенное значение не может быть равно или не равно какому-то другому.

Пример: Вывод номера, наименования и кредитного рейтинга всех клиентов, не имеющих торгового представителя.

Для закрепления материала рекомендуется выполнить Практическое задание 2.


Назад    Оглавление    Далее