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

47. Использование операторов some, all, exists.

Оператор ANY | SOME сравнивает значение со всеми значениями из подзапроса. При этом в зависимости от знака равенства смысл оператора изменяется. Таким образом, если использовать знак равенства вместе с ANY у нас получиться эквивалент оператору IN. При этом если будет применяться знак < и ANY то будет иметь смысл меньше максимального значения из списка. Если же > и ANY то будет иметь смысл больше минимального значения из списка. Операторы ANY и SOME эквивалентны.  Оператор ALL сравнивает значение со всеми значениями из подзапроса. При этом в зависимости от знака равенства смысл оператора изменяется. При этом если будет применяться знак < и ALL то будет иметь смысл меньше минимального значения из списка. Если же > и ALL то будет иметь смысл больше максимального значения из списка.  Выведем сотрудников, чьи зарплаты больше зарплат ВСЕХ сотрудников отдела ANALYST.  Также в обоих типов подзапросов вы можете использовать оператор NOT. Естественно при этом условия выборки будут сильно изменятся.  Оператор EXISTS берет подзапрос, как аргумент, и оценивает его как верный, если подзапрос возвращает какие-либо записи и неверный, если тот не делает этого. То есть если наш подзапрос возвращает хотя бы одну строку то - это выражение принимается за истину.  Читателю может показаться что это функция редко используемая - но такое мнение может сложится только при небольшом опыте общения с коллегами из департамента маркетинга. Иногда маркетологи придумывают ужасные условия и хотят тут же получить результат. EXIST поможет вам справиться как и с ужасными условиями так и с быстротой получение результата. Так как использование оператора EXIST увеличивает производительность выполнения отчета.  Рассмотрим более подробно оператор EXISTS. EXISTS как мы поняли это оператор, который возвращает всего лишь два значения: TRUE | FALSE. В случае если результат подзапроса возвращает хотя бы одну строку, то TRUE, иначе FALSE. 48. Последовательности как объекты баз данных.

Очень часто перед разработчиками базы данных встает задача генерирования уникальной последовательности значений. Для решения таких целей используется такой объект базы данных как последовательность (sequence).  SEQUENCE используется для следующих целей:  - Автоматической генерации случайного числа.  - Этот объект можно сделать общедоступным, что обычно и делают.  - Часто специально используется для генерации PRIMARY KEY.  - Используется в коде приложений, является часто используемым объектом разработчиков.  - Ускоряет доступ данным при использовании столбцов основанных на последовательности при кешировании данных.  Рассмотрим синтаксис создания sequence:  CREATE SEQUENCE sequence_name [INCREMENT BY n] [START WITH n] [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}] [{CACHE n | NOCASHE}]  где  INCREMENT BY - определяет шаг между двумя уникальными числами генерируемого последовательностью. Наиболее часто используемым значением, которое также является значение по умолчанию является - шаг равный единице. При этом вы также можете использовать и отрицательные значения для убывающей последовательности.  START WITH - указывает первое значении последовательности, по умолчанию это значение равно единице.  MAXVALUE n - указывает на максимальное значение, которое может быть сгенрировано последовательностью  NOMAXVALUE - в качестве максимального значение принимается 10 в 27 степени для возрастающий последовательности и значение равной -1 для убывающей последовательности  MINVALUE n - указывает на минамальное значение последовательности  NOMINVALUE - в качестве минимального значение принимается 1 для возрастающий последовательности и значение равное 10 в 26 степени для убывающей последовательности  CYCLE - так как последовательность у нас ограниченная и имеет определенные пределы, поэтому в случаи когда последовательность дойдет до максимально положенного значение и значение CYCLE - будет включена, та последовательость, как хронаметраж в машине начнет свой подсчет самого начало. Конечно в этом случаи есть риск, что у вас в таблице начнут появлятся дублирующие значения в столбце, где была последовательность и приводит ошибкам нарушение целостности базы.  NOCYCLE - это опция нужна как раз для того, чтобы в случаи если значение последовательности дойдет до максимально положенного значения - последовательность не начнет свой путь сначала, а выдаст ошибку ORA-08004: sequence exceeds MAXVALUE and cannot be instantiated.  CACHE n - указывает сколько значений последовательности заранее ОRACLE будет держать в памяти. По умолчанию это значение равно 20.  NOCACHE - указывает, что значений последовательности в памяти ORACLE не должны содержатся.  Хотелось бы отметить значимость параметров CACHE и NOCACHE. Параметр CACHE указывает ORACLE серверу сколько значений из последовательности взять, конечно это ускоряет работу с последовательностью ведь не приходиться каждый раз вызывать генератор. При этом если к этой последовательности обратятся из другой сессии, то последовательность сгенирирует другие значения начиная с последнего не использованного, а записанного в память. При этом если произойдет сбой и ваша сессия разрушится то вы потеряете все значения последовательности из памяти. При этом не использованные значения последовательности исчезнут. Правда в этом ничего такого плохого нет, если не считать, что у вас между двумя значениями одного столбца, где используется последовательность, будет небольшой разрыв.