Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Операторы union, intersect, minus (назначение, объяснить разницу).Содержание книги
Поиск на нашем сайте
Операции соединения подзапросов языка SQL – это реализация операторов реляционной алгебры объединения, пересечения и вычитания. Для выполнения этих операторов требуется, чтобы элементы обоих множеств были взаимно однородными, то есть содержали элементы одинаковой природы, или, если выражаться в терминах баз данных, строки, состоящие из атрибутов одинаковых типов. Сами множества строк создаются при помощи подзапросов. Существует четыре операции соединения подзапросов: UNION – объединение строк из обоих подзапросов; в результате остаются строки из обоих подзапросов, причем полностью повторяющиеся строки удаляются; UNION ALL – объединение строк из обоих подзапросов; в результате остаются строки из обоих подзапросов, причем полностью повторяющиеся строки остаются; INTERSECT – пересечение строк из обоих подзапросов; в результате остаются строки, присутствующие в обоих подзапросах; MINUS – вычитание результатов одного подзапроса из результатов второго подзапроса. Примеры использования операций соединения подзапросов: -- получение списка наименования хотя бы раз -- проданных или купленных товаров, исключая повторы SELECT DISTINCT Name FROM Products, Outgoing WHERE Products.Prod_id=Outgoing.Prod_id UNION SELECT DISTINCT Name FROM Products, Incoming WHERE Products.Prod_id=Incoming.Prod_id; -- получение списка менеджеров, осуществивших -- хотя бы по одной сделке продажи и закупки товаров SELECT Name FROM Managers, Outgoing WHERE Managers.Man_id=Outgoing.Man_id INTERSECT SELECT Name FROM Managers, Incoming WHERE Managers.Man_id=Incoming.Man_id; -- получение списка менеджеров, -- не заключивших ни одного контракта SELECT Name FROM Managers MINUS SELECT Name FROM Managers, Contracts WHERE Managers.Man_id=Contracts.Man_id; 19.Представление (VIEW), обновляемые/необновляемые представления. Идея представления (View) состоит в следующем: определить запрос, который предполагается использовать достаточно часто, сохранить его в базе данных в виде объекта ORACLE и разрешить пользователям обращаться к нему по имени, как к обычной таблице. Когда пользователь выбирает данные из представления, СУБД выполняет соответствующий запрос, организует результаты так, как определено в представлении, и выдает их пользователю. Для пользователя представление выглядит как таблица, из которой поступают данные. Однако на самом деле данные поступают через представление, из одного или нескольких других источников – исходных таблиц или других представлений. Запрос, непосредственное выполнение которого можно заменить использованием представлений, может быть какой угодно сложности. В сущности, это и есть одно из назначений использования представлений – скрытие сложности запросов и структуры данных от пользователей. Для создания представлений используется следующий синтаксис: CREATE [OR REPLACE] VIEW имя_представления AS Оператор SELECT [WITH CHECK OPTION] Обновляемые представления Если к представлению можно применить операторы обновления (INSERT, UPDATE или DELETE), то представление является обновляемым (updateble), иначе оно является читаемым (read-only). Ниже приведены критерии того, является ли представление обновляемым в SQL: · оно базируется на одной таблице; · оно должно включать первичный ключ таблицы; · оно не должно включать полей, полученных в результате применения функций агрегирования; · оно не может содержать спецификации DISTINCT; · оно не должно использовать GROUP BY или HAVING; · оно не должно использовать подзапросы; · оно может быть определено на другом представлении, но это представление должно быть обновляемым; · оно не может содержать константы, строки или выражения в списке выбираемых выходных полей; · для INSERT оно должно включать поля из таблицы, которые имеют ограничения NOT NULL. Например, приведенное представление Contragents_Lite является обновляемым, поскольку оно удовлетворяет всем перечисленным критериям, а представление WareHouse – нет. Для обновляемых представлений применимы любые операторы обновления, которые при выполнении по отношению к представлению транслируются на исходную таблицу, на основе которой было создано представление. Однако это правило на первый взгляд не согласуется с функцией представлений по защите данных, описанной ранее. Действительно, если представить, что при помощи представления были скрыты столбцы или строки, но пользователь знает об их существовании, он может выполнить операции обновления данных, затрагивающие скрытую в представлении информацию. Для предотвращения описанной ситуации применяется параметр WITH CHECK OPTION, который может указываться при создании обновляемых представлений после оператора SELECT. При наличии этого параметра СУБД предотвращает операции обновления данных, если они нарушают условия горизонтальной или вертикальной фильтрации, определенные в предложении в операторе SELECT: -- создание обновляемого представления с защитой от -- изменений скрытого столбца Address CREATE OR REPLACE VIEW Contragents_Lite AS SELECT Contr_id, Name, Phone, Comments FROM Contragents WITH CHECK OPTION;
|
||||
Последнее изменение этой страницы: 2017-01-25; просмотров: 959; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.141.47.139 (0.007 с.) |