Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка SQL(14) (оптимизация).docx
Скачиваний:
64
Добавлен:
17.03.2015
Размер:
452.16 Кб
Скачать

Глава 3. Выборка данных.

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

3.1. Оператор select. Синтаксис.

Оператор SELECT может использоваться как:

  • самостоятельная команда на получение и вывод строк таблицы, сформированной из столбцов и строк одной или нескольких таблиц (представлений);

  • элемент WHERE- или HAVING-условия (сокращенный вариант предложения, называемый "вложенный запрос");

  • фраза выбора в командах CREAT VIEW, DECLARE CURSOR или INSERT;

  • средство присвоения глобальным переменным значений из строк сформированной таблицы (INTO-фраза).

Оператор SELECT (выбрать) имеет следующий формат:

SELECT [[ALL] | DISTINCT] [ТОР n [PERCENT]] [WITH TIES] {* | элемент_SELECT [, элемент_SELECT] ...}

FROM таблица [псевдоним] [, таблица [псевдоним]] ...

[WHERE условие_отбора_строк]

[GROUP BY [таблица.]столбец [, [таблица.]столбец] ...

[HAVING условие_отбора_групп]]

[ORDER BY {[таблица.]столбец | номер_элемента_SELECT} [[ASC] | DESC]

[, {[таблица.]столбец | номер_элемента_SELECT } [ [ASC] | DESC] ] ...] ];

Этот оператор можно прочитать следующим образом:

  • SELECT (выбрать) — данные из указанных столбцов и (если необходимо) выполнить перед выводом их преобразование в соответствии с указанными выражениями и (или) функциями

  • FROM (из) — перечисленных таблиц, в которых расположены эти столбцы

  • WHERE (где) — строки из указанных таблиц должны удовлетворять указанному перечню условий отбора строк

  • GROUP BY (группируя по) — указанному перечню столбцов с тем, чтобы получить для каждой группы единственное агрегированное значение, используя во фразе SELECT SQL-функции SUM (сумма), COUNT (количество), MIN (минимальное значение), MAX (максимальное значение) или AVG (среднее значение)

  • HAVING (имея) — в результате лишь те группы, которые удовлетворяют указанному перечню условий отбора групп

  • ORDER BY (упорядочить) — результаты выбора данных по указанному перечню столбцов. При этом упорядочение можно производить в порядке возрастания - ASC (ASCending)(по умолчанию) или убывания DESC (DESCending).

Рассмотрим каждую строку этого оператора подробно.

Раздел SELECT.

В разделе SELECT указывается список столбцов, которые будут включены в результат выборки. Структура раздела SELECT следующая:

SELECT [[ALL] | DISTINCT] [ТОР n [PERCENT]] [WITH TIES] {* | элемент_SELECT [, элемент_SELECT]...}

Параметры раздела обозначают следующее:

ALL – указывает, что в результат выборки должны быть включены все строки возвращаемые запросом, т.е. выборка может содержать повторяющиеся строки (используется по умолчанию).

DISTINCT – позволяет исключить из выборки повторяющиеся строки.

ТОР n [PERCENT] [WITH TIES] – ограничивает количество строк в выборке. Параметр n задает максимальное количество строк, при указании параметра PERCENT количество строк задается в процентах от общего числа строк, возвращаемых запросом.

*- означает включение в результат выборки всех столбцов всех таблиц, участвующих в запросе и указанных в разделе FROM. При этом порядок вывода полей соответствует порядку, в котором эти поля определялись при создании таблиц.

элемент_SELECT – список столбцов, которые включены в результат выборки. Структура этой конструкции следующая:

элемент_SELECT = {[таблица.]* | [таблица.]столбец [AS псевдоним] | (выражение) [AS псевдоним] | константа [AS псевдоним] | переменная [AS псевдоним] | SQL_функция [AS псевдоним]}

термин таблица – используется для обобщения понятий: базовая таблица, представление.

выражение – подразумевает выражение, на основе которого будет формироваться содержимое столбца.

AS псевдоним – определение псевдонима для столбца.

Раздел FROM.

Раздел FROM содержит список таблиц, из которых будет производиться выборка данных.

Структура раздела FROM следующая:

FROM таблица [псевдоним] [, таблица [псевдоним]] ...

псевдоним - позволяет присвоить таблице имя, под которым на неё можно будет ссылаться в запросе, служит для упрощения вида запроса при работе с длинными именами таблиц и для именования временных таблиц (полученных в результате выполнения оператора SELECT)

Также в разделе FROM можно указать метод связывания таблиц между собой (фраза JOIN будет рассмотрена в п. 3.4.)

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