
- •Формирование запросов к базе данных.
- •Множественные операции
- •Order by
- •For update of
- •Последовательности
- •Фразы оператора select
- •Фраза from
- •Фразы group by и having
- •Фраза having
- •Фраза where
- •Фраза where (Встроенный sql)
- •Фраза current of
- •Фразы connect by и start with
- •Start with
- •Использование order by
- •Фраза order by
- •Внешнее объединение
- •Подзапросы.
- •Функции агрегирования результатов запроса
- •Курсоры
- •Види курсоров
- •Объявление курсора.
- •Открытие курсора
- •Атрибуты курсора.
- •Чтение данных с использованием курсора.
- •Закрытие курсора
- •Неявные курсоры. Предопределенный курсор sql.
- •Примеры работы с курсорами
- •Изменение и удаление данных в позиции курсора.
- •Переменные-курсоры.
- •Работа с транзакциями в pl/sql.
- •Курсоры и транзакции.
Внешнее объединение
Внешнее объединение отображается в WHEREв одной из двух форм:
[таблица 1.]столбец = [таблица2.]столбец (+)
[таблица 1.]столбец (+) = [таблица1.] столбец
При выполнении операции внешнего объединения отбираются все строки, которые были бы отобраны при выполнении операции простого объединения, и дополнительно отбираются строки из одной таблицы, которым не обнаружено соответствия по используемому критерию отбора ни с одной строкой другой таблицы.
Внутри одного оператора SELECTтаблица может быть объединена максимально с одной таблицей с использованием внешнего объединения.
Стандарт SQL допускает наличие в базе данных неопределенных значений, поэтому вычисление условия отбора должно производиться не в булевой, а в трехзначной логике со значениями true,falseиunknown(неизвестно). Для любого предиката известно, в каких ситуациях он может порождать значениеunknown. Из таблицы 1 видно, как работают булевские операцииAND,ORиNOTв трехзначной логике.
Таблица 1.
Таблица истинности для операций с неопределенное значение
-
Операция
Результат
true AND unknown
Unknown
false AND unknown
False
unknown AND unknown
Unknown
true OR unknown
True
false OR unknown
Unknown
unknown OR unknown
Unknown
NOT unknown
Unknown
Функция NVLпозволяет проверить и заменить пустое значение на значение по умолчанию
NVL(выражение1 , выражение2)
Если «выражение1» представляет собой пустое значение возвращается «выражение2», в противном случае возвращается «выражение1».
Подзапросы.
Фраза WHERE из одной запроса может содержать другой запрос - подзапрос. Уровень вложения подзапросов не ограничивается. Подзапрос при формирования множества значений может использовать таблицы, которые использует и основной запрос.
SELECTсписок имен ----
FROM список таблиц |-- главный запрос
WHEREимя1 = ----
(SELECTимя2 ----
FROMсписок таблицEMP|-- подзапрос
WHEREусловие);
ORACLE обрабатывает подзапросы перед обработкой главного запроса поскольку ему нужны их результаты для определения результата главного запроса.
Поскольку подзапрос используется для формирования условия выборки основного запроса, подзапрос должен возвращать одно значение, либо множество значений одного атрибута, либо множество значений некоторого выражения на основе атрибутов таблиц подзапроса.
Функции агрегирования результатов запроса
Функция вычисления среднего значения AVG возвращает среднее значение числового аргумента выражение, не включая в вычисления значения NULL.
AVG ([DISTINCT I ALL] выражение)
Функция вычисления суммы SUMвозвращает сумму значений числовых атрибутов, не включая в вычисления значенияNULL. Функция использует следующий синтаксис:
SUM([DISTINCTIALL] выражение)
Функция вычисления дисперсии (стандартного уклонения) STDDEV возвращает дисперсию значений числовых атрибутов, не включая в вычисления значения NULL. Функция использует следующий синтаксис:
STDDEV([DISTINCTIALL] выражение)
Функция VARIANCEвычисляет квадрат дисперсии значена, числовых атрибутов, не включая в вычисления значенияNULL. Функция использует следующий синтаксис:
VARIANCE([DISTINCTIALL] выражение)
Функция подсчета числа отобранных строк COUNTвозвращает количество выбранных строк. Особый вариант использования функцииCOUNT( * ) возвращает число строк в таблице, включая дубликаты и атрибуты с неопределенными значениями. Функция использует следующий синтаксис:
COUNT([DISTINCTIALL] выражение 1 * )
Функция выбора наибольшего значения МАХ возвращает максимальное значение параметра. Допускаются аргументы типа числовой, символьный и дата. Функция использует следующий синтаксис:
МАХ ([DISTINCT I ALL] выражение)
Функция выбора наименьшего значения MIN возвращает минимальное значение параметра. Допускаются аргументы типа числовой, символьный и дата. Функция использует следующий синтаксис:
MIN( [DISTINCT I ALL] выражение)