Команда SELECT выбирает информацию из базы данных.
Основной блок запроса:
SELECT [DISTINCT] {*, столбец [псевдоним], групповая_функция} FROM таблица [WHERE условие] [GROUP BY выражение_группирования] [HAVING условие_группы] [ORDER BY {Столбец, выражение} [ASC | DESC]]; |
---|
где
SELECT | Список, включающий, по крайней мере, один столбец. |
DISTINCT | Подавляет выборку дубликатов. |
* | Выбирает все столбцы. |
столбец | Выбирает заданный столбец. |
псевдоним | Дает выбранным столбцам другие заголовки. |
таблица | Указывает таблицу, содержащую столбцы. |
WHERE | Ограничивает запрос строками, удовлетворяющими заданному условию. |
Условие | Состоит из имен столбцов, выражений, констант и операторов сравнения. |
GROUP BY | Разбивает строки на группы. |
Выражение_груп-пирования | Определяет столбец, по значениям которого группируются строки. |
HAVING | Вывод конкретных групп. |
Условие_группы | Задает условие отбора групп для вывода. |
ORDER BY | Задает порядок вывода строк. |
ASC | Сортирует строки в порядке возрастания; используется по умолчанию. |
DESC | Сортирует строки в порядке убывания. |
В простейшей форме команда SELECT должна включать следующее:
SELECT [DISTINCT] {* | столбец [псевдоним]} FROM таблица; |
---|
Предложение SELECT - задает нужные столбцы. Звездочка (*) означает выбор всех столбцов таблицы. Предложение FROM указывает, в какой таблице находятся столбцы, заданные в предложении SELECT.
Пример: Вывод содержимого всех столбцов и строк таблицы S_DEPT:
Результат:
ID -------- |
NAME ------------------------------- |
REGION_ID --------------- |
10 | Finance | 1 |
31 | Sales | 1 |
32 | Sales | 2 |
33 | Sales | 3 |
34 | Sales | 4 |
35 | Sales | 5 |
41 | Operations | 1 |
42 | Operations | 2 |
43 | Operations | 3 |
44 | Operations | 4 |
45 | Operations | 5 |
50 | Administration | 1 |
12 rows selected |
Выборка заданных столбцов.
Вывод можно ограничить столбцами, имена которых указаны через запятую в предложении SELECT.
Пример: Вывод всех номеров отделов, фамилий служащих и идентификационных номеров их менеджеров из таблицы S_EMP.
DEPT_ID -------------- |
LAST_NAME ------------------------------ |
MANAGER_ID ----------------- |
50 | Velasquez | |
41 | Ngao | 1 |
31 | Nagayama | 1 |
10 | Quick-To-See | 1 |
50 | Ropeburn | 1 |
41 | Urguhart | 2 |
42 | Menchu | 2 |
43 | Biri | 2 |
44 | catchpole | 2 |
. . . | ||
25 rows Selected |
Столбцы в команде SELECT указываются в последовательности, в которой должен осуществляться их вывод. Запятые между именами столбцов обязательны.
Формат заголовков столбцов, используемый по умолчанию.
Заголовки столбцов и данные, состоящие из символов и даты, выравниваются в столбце по левому краю, а числа — по правому. В заголовках столбцов, содержащих символы и даты, лишние символы могут быть отброшены, но числовые заголовки отображаются полностью. По умолчанию заголовки столбцов выводятся в символах верхнего регистра. На выводе можно заменить заголовок столбца псевдонимом.
Псевдонимы столбцов.
При выводе результатов запроса в среде SQL*Plus в качестве заголовков столбцов обычно используются их имена. Такие заголовки часто трудны для понимания и даже бессмысленны. Изменить заголовок столбца можно с помощью его псевдонима. Псевдоним указывается в списке команды SELECT сразу за именем столбца и отделяется от него пробелом. По умолчанию такие альтернативные заголовки выводятся в символах верхнего регистра и не могут содержать пробелов, если псевдоним не заключен в кавычки (" ").
Пример: Вывод фамилии, заработной платы и суммы компенсационных выплат за год для каждого служащего. Объем выплат за год вычисляется путем прибавления к заработной плате ежемесячной премии в размере 100 долларов и умножения суммы на 12. Назвать столбец при выводе ANNUAL_SALARY.
Замечание: Для соответствия стандарту ANSI SQL-92 перед псевдонимом может находиться ключевое слово AS.
Псевдонимы столбцов в кавычках.
Псевдоним, который содержит пробелы или специальные символы (например, # или _) или в котором различаются символы верхнего и нижнего регистров, должен быть заключен в кавычки (" ").
Пример: Вывод фамилии, заработной платы, должности и вычисленных комиссионных.
Предотвращение выборки дубликатов строк.
При отсутствии указаний с вашей стороны SQL*Plus включает в результаты запросов все строки, не изымая дубликаты. Ключевое слово DISTINCT, следующее сразу за словом SELECT, исключает дублирование строк.
Пример: Вывод всех названий отделов из таблицы S_DEPT.
NAME -------------------------------------------------- |
Finance |
Sales |
Sales |
Sales |
Sales |
Sales |
Operations |
. . . |
12 rows selected |
Пример: Вывод всех неповторяющихся названий отделов из таблицы S_DEPT.
NAME -------------------------------------------------- |
Finance |
Sales |
Administration |
Operations |
4 rows selected |
После квалификатора DISTINCT можно указать несколько столбцов. В этом случае он будет относиться ко всем выбранным столбцам.
Пример: Вывод всех возможных комбинаций должностей и номеров отделов.
![]() |
Для закрепления материала рекомендуется выполнить Практическое задание 1. |