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

Внешнее соединение (outer join)

Внешнее соединение может применяться для возврата всех строк из одной таблицы и данных из строк второй таблицы, имеющих соответствие строкам первой, или для возврата всех строк из всех таблиц, заданных в предложении JOIN. Слово OUTER может быть пропущено в синтаксической записи, но обязательно следует указать LEFT, RIGHT или FULL [1]. Следует помнить, что использование внешних соединений определяет однозначный порядок соединения таблиц. Если аналогичный результат может быть получен с использованием внутренних соединений, рекомендуется отказаться от использования внешних.

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

SELECT B.BillID,

B.Date,

BU.Name

FROM Bill AS B LEFT JOIN Buyer AS BU ON B.BuyerID = BU.BuyerID

SELECT B.BillID,

B.Date,

BU.Name

FROM Buyer AS BU RIGHT JOIN Bill AS B ON BU.BuyerID = B.BuyerID

Оператор FULL OUTER JOIN отображает каждую строку обеих таблиц из предложения JOIN. Это может быть полезно для поиска не имеющихся соответствия строк, если в таблицах не реализована реляционная (ссылочная) целостность. Если в столбце соединения есть ограничения в виде внешнего ключа, оператор FULL OUTER JOIN обеспечивает тот же результат, что и оператор LEFT OUTER JOIN с таблицей, в которой внешний ключ определен слева от ключевого слова JOIN. Это объясняется тем, что для соблюдения ограничения у столбца внешнего ключа должна быть соответствующая строка для столбца первичного ключа. Кроме того, когда заданы ограничения внешнего ключа, оператор OUTER JOIN, определенный для таблицы с первичным ключом, заданной как внешняя таблица, обеспечивает те же результаты, что и оператор INNER JOIN.

Перекрестные соединения (cross join)

Перекрестное соединение формирует результат, называемый декартовым произведение двух таблиц. В предложении JOIN каждая строка из первой таблицы соединяется с каждой строкой из второй таблицы. Этот тип соединения применяется лишь в исключительных ситуациях. Синтаксическая запись оператора CROSS JOIN такая же, как у других типов соединений за исключением того, что при этом соединении не требуется указывать условия соединения. Для того, чтобы получить выборку всех возможных комбинаций покупателей и продавцов, необходимо выполнить следующий запрос: [2]

SELECT B.Name AS BuyerName,

E.Name AS EmployeeName

FROM Buyer AS B CROSS JOIN Employee AS E

Представления

Некоторые из создаваемых вами инструкций SELECT используются для решения конкретной одноразовой задачи, а другие инструкции SELECT применяются в вашей рабочей среде снова и снова. Некоторые запросы, многократно используемые в вашей рабочей среде, содержат сложную бизнес-логику и сложный программный код на языке T-SQL, которые вы не хотите воспроизводить каждый раз, когда понадобится запрос. SQL сервер позволяет сохранять инструкцию SELECT в базе данных с помощью объекта, называемого представлением[1].

Представление – это простая инструкция SELECT с заданным именем, хранящаяся в базе данных. Главное преимущество представления состоит в том, что после создания оно действует как таблица в отношении всех остальных инструкций SELECT, которые вы захотите написать [1].

Синтаксис создания представления имеет следующий вид:

CREATE VIEW [schema_name.] view_name [ ( column [, ... n] )]

[ WITH <view_attribute> [, ... n]]

AS select_statement

[ WITH CHECK OPTION] [;]

Определяемая для представления инструкция SELECT может ссылаться на таблицы, другие представления и функции, но не может делать следующего:

  • содержать предложение COMPUTE или COMPUTE BY;

  • создавать постоянную или временную таблицу с помощью ключевого слова INTO;

  • применять предложение OPTION;

  • ссылаться на временную таблицу;

  • ссылаться на переменную любого типа;

  • содержать переложение ORDER BY, если не задан параметр TOP.

Представление может содержать множественные инструкции SELECT, пока вы применяете операторы UNION или UNION ALL. [3]

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