Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
бИЛЕТЫ_GOSam.doc
Скачиваний:
0
Добавлен:
28.12.2019
Размер:
1.46 Mб
Скачать

3) Операции над данными (включить, удалить, обновить, объединение, пересечение, вычитание, декартово произведение, выборка, проекция, соединение, деление).

  1. Специальные реляционные операторы

Четыре типа операторов: ограничение (restriction), проекция (projection), соединение (join) и деление (divide).

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

Выборка (ограничение, селекция)

Группа 170

Выполняется над одним отношением. Результатом является новое отношение, в которое входит подмножество кортежей, удовлетворяющих некоторому условию.

Выборкой (ограничением, селекцией) на отношении с условием называется отношение с тем же заголовком, что и у отношения , и телом, состоящем из кортежей, значения атрибутов которых при подстановке в условие дают значение ИСТИНА. представляет собой логическое выражение, в которое могут входить атрибуты отношения и (или) скалярные выражения.

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

Пример.

SELECT *

FROM Сотрудники

WHERE Фамилия=”Иванов";

Группа 156 Проекция

Выполняется над одним отношением. Результатом является новое отношение, в которое входит указанное подмножество атрибутов. Число кортежей при этом не обязательно сохраняется, т.к. при удалении некоторых столбцов в таблице могут возникать строки-дубликаты, совпадающие по всем значениям оставшихся атрибутов. Такие дубликаты из результата исключаются.

Проекцией отношения A по атрибутам X, Y,…,Z, где каждый из атрибутов принадлежит отношению A, называется отношение с заголовком (X, Y,…,Z) и телом, содержащим множество кортежей вида (x, y,…,z), таких, для которых в отношении A найдутся кортежи со значением атрибута X равным x, значением атрибута Y равным y, …, значением атрибута Z равным z.

Синтаксис операции проекции: A[X, Y,…, Z]

Проекция делает вертикальный разрез – возвращает подмножество полей оригинального набора данных.

Эта операция выполняется в SQL простым перечислением полей в <списке_полей> оператора SELECT. В результирующий набор записей включаются только те поля, которые есть в списке.

Пример. Например, чтобы получить список сотрудников компании, можно использовать, следующий оператор:

SELECT Номер_поставщика, Наименование_поставщика, Город_поставщика

FROM Поставщики

ORDER BY Наименование_поставщика, Город_поставщика;

Оператор ORDER BY сортирует данные. В нашем примере полученный список будет отсортирован в алфавитном порядке: сначала по полю Наименование_поставщика, затем по полю Город_поставщика.

Группа 138 Соединение

Выполняется над двумя отношениями по некоторому условию, связывающему соответствующие атрибуты в каждом из них, (например, при равенстве этих атрибутов). Результатом является новое отношение, в которое входят все кортежи, для которых эти условия удовлетворяются, со всеми своими атрибутами из первого и второго отношений.

Оператор соединения объединяет наборы записей, основываясь на сравнении значений одного или нескольких их полей.

Соединения реализуются при помощи оператора JOIN в операторе SELECT. В зависимости от типа сравнения полей, указываемых в операторе, а также от того, каким образом обрабатываются результаты сравнения, соединения можно разделить на несколько видов. Рассмотрим каждый из них.

Общая операция соединения; -соединение (тэта-соединение); Эквисоединение; Естественное соединение

Общая операция соединения

Соединением отношений А и В по условию с назыв отношение

с представляет собой логическое выражение, в которое могут входить атрибуты отношений А и В и (или) скалярные выражения.

Все разновидности соединения являются частными случаями общей операции соединения.

Наиболее важным частным случаем -соединения (equi-join) является случай, когда есть просто равенство. Синтаксис экви-соединения:

SELECT Orders. OrderID, Orders.CustonerID, [Order Details].Products

FROM Orders INNER JOIN [Order Details]

ON Orders.OrderID=[Order Details].OrderID WHERE Orders.OrderID=10248;

Формально все соединения являются тета-соединениями. Однако если соединение основано на операторе равенства, его обычно называют эквисоедияением или просто соединением. Соединение, основанное на любом другом операторе сравнения, кроме равенства (<>, >, >=, <, <=) называется тета-соединением.

Для операции -соединения применяют следующий синтаксис:

Оператор SELECT, основанный на операторе сравнения «>», позволяет получить список продуктов, лидирующих по продажам в каждой категории:

SELECT DISTINCTROW ProductCategoryAverages.CategoryName,

ProductTotals.ProductName

FROM ProductCategoryAverages INNER JOIN ProductTotals

ON ProductCategoryAverages.CategoryID = ProductTotals.CategoryID AND ProductTotals.TotalSold > [ProductCategoryAverages].[AverageSold];

В реляционной алгебре поддерживается также внешние соединения (outer joins). Внешнее соединение возвращает все записи, которые возвращает внутреннее соединение, плюс все записи из одного или обоих наборов данных, участвующих в соединении. Отсутствующие значения будут замещаться значениями Null.

Внешние соединения, в зависимости от того, какие именно доп-ые записи включены в них, можно разделить на несколько групп: левые, правые, полные.

Левое внешнее соединение (left outer join) возвращает все записи из отношения, находящегося на стороне «один» связи «один ко многим».

SELECT FROM X LEFT OUTER JOIN Y ON <условие>

Правое внешнее соединение (right outer join) – все записи из отношения, находящегося на стороне «многие» такой связи.

SELECT FROM Y RIGHT OUTER JOIN X ON <условие>

Полное внешнее соединение (full outer join) возвращает все записи из обоих наборов, комбинируя те, для которых выполняется условие данного соединения.

SELECT*

FROM X FULL OUTEP JOIN Y ON <условие>

Группа 128 Деление

Выполняется над двумя отношениями, если набор атрибутов второго отношения (делителя) является подмножеством набора атрибутов первого (делимого). Результат содержит только те атрибуты делимого, которые, во-первых, имеют заданные значения в атрибутах, принадлежащих делителю, и во-вторых, совпадают друг с другом по уникальным атрибутам делимого.

Реляционное деление возвращает те записи из первого набора, которые совпадают с записями из другого набора.

Отношение выступает в роли делимого, отношение выступает в роли делителя. Деление отношений аналогично делению чисел с остатком.

Синтаксис операции деления:

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