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

4. Выборка данных из базы данных

Команда запроса данных

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


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