
Команда 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. |
