Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_k_ekzamenu_TBD.doc
Скачиваний:
11
Добавлен:
23.09.2019
Размер:
958.98 Кб
Скачать

27.Основы sql. Формат оператора select. Вложение подзапросов.

Вложение подзапросов. Часто невозможно решить поставленную задачу путем использования единственного запроса. Например, в тех случаях, когда при использовании условия поиска в предложении WHERE параметр <значение, с которым сравнивать> заранее не определен и должен вычисляться в момент выполнения оператора SELECT.

В этом случае оператор SELECT с подзапросом имеет следующий вид:

SELECT …

FROM …

WHERE <сравниваемое_значение> <оператор> (SELECT …)

Ошибкой для данного вида запроса является использование вложенного оператора SELECT, возвращающего вместо единичного список значений.

Логический порядок выполнения запроса:

  • Определяется самая крупная покупка – отыскивается максимальное значение в столбце KOLVO («самый вложенный» запрос).

  • Определяется покупатель, осуществивший эту покупку (средний запрос)

  • Основной запрос выбирает записи с заданным покупателем.

Дополнительные возможности

Предложение EXISTS. Требуется отобрать только те данные, для которых подзапрос возвращает одно или более значений.

EXISTS (<подзапрос>)

Предложение SINGULAR. Требуется выбрать лишь те записи, для которых подзапрос возвращает только одно значение.

SINGULAR (<подзапрос>)

Использование ALL, SOME (ANY). Если в условиях поиска необходимо указать , что сравниваемое значение должно находиться в определенных отношениях со всеми или некоторыми значениями из множества значений, возвращаемых подзапросом, применяют выражение:

<сравниваемое_значение> [NOT] <оператор> {ALL | SOME | ANY } (<подзапрос>)

ALL указывает, что условие поиска будет истинно только тогда, когда сравниваемое значение находится в нужном отношении со ВСЕМИ значениями, возвращаемыми подзапросом.

WHERE STOLBEZ > ALL (SELECT POLE FROM TABLIZA)

SOME (или ANY) условие истинно, когда сравниваемое значение находится в нужном отношении ХОТЯ БЫ С ОДНИМ значением, возвращаемым подхвпросом.

WHERE STOLBEZ > SOME (SELECT POLE FROM TABLIZA)

Использование ALL, SOME (ANY)

28.Основы sql. Формат оператора select. Внешние соединения

Внешние соединения

Внешнее соединение таблиц определяется в предложении FROM согласно следующей спецификации:

SELECT { * | <значение1> [, <значение2> …]}

FROM <таблица1> <вид_соединения> JOIN <таблица2> ON <условие_поиска>

Внешнее соединение отличается от внутреннего тем, что в результирующий НД включаются также записи ведущей таблицы соединения, которые объединяются с пустым множеством записей другой таблицы. Какая из таблиц будет ведущей, определяет вид соединения:

LEFT – (левое внешнее соединение), когда ведущей являются таблица1

RIGHT – (правое внешнее соединение), когда ведущей являются таблица2.

FULL – (полное внешнее соединение), когда ведущими являются и таблица1, и таблица2.

29.Основы sql. Формат оператора select. Объединение запросов – union. Использование is null. Использование операции сцепления строк.

1.1.1.Оператор SELECT позволяет производить выборки из таблиц БД и преобразовывать к нужному виду полученные результаты.

1.1.1.1.Общий формат оператора SELECT

SELECT [DISTINCT | ALL ] {* | <значение1> [,<значение2> …]}

FROM <таблица1> [ , <таблица2> … ]

[ WHERE <условия_поиска> ]

[ GROUP BY столбец [, столбец1 … ]

[ HAVING < условия_поиска> ]

[ UNION <оператор_select>]

[ PLAN <план_выполнения_запроса>]

[ ORDER BY <список_столбцов>]

Простейший формат:

SELECT { * | <значение1>, <значение1> [,<значение2> …]}

FROM <таблица1> [ , <таблица2 … ]

1.1.1.2.Объединение запросов – UNION

Иногда бывает полезным объединить два или более результирующих наборов данных. Результирующие наборы должны иметь одинаковую структуру (состав столбцов). Если в результирующих наборах имеется одна и та же запись, в сводном наборе она не дублируется.

1.1.1.3.Использование IS NULL

Если требуется выдать записи, в которых некоторый столбец (или результат вычисления выражений) имеет значение NULL, то в условии достаточно указать предложение: <значение> IS [NOT] NULL

1.1.1.4.Использование операции сцепления строк

Операция || соединяет два строковых значения , которые могут быть представлены выражениями:

<строковое_выражение1> || <строковое_выражение2>

Операцию можно использовать как после слова SELECT, так и в предложении WHERE

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]