Базы данных

Простые запросы соединения


На 7.2 показаны операторы select, каждый из которых представляет единственную операцию соединения. Соединение определяется предложениями from, в котором перечислены два исходных отношения, и where, где содержится условие соединения. В п. а) на 7.2 показана стандартная форма SQL-операции соединения, результатом которой является 6,7. В результирующее отношение должны войти все столбцы (select ), двумя исходными таблицами являются Employee и TimeCard, а условие соединения Employee, ssn = TimeCard, ssn.

а) select  from Employee, TimeCard

where Employee.ssn = TimeCard.ssn

б) select  from Employee join TimeCard

on Employee.ssn = TimeCard, ssri

Puc. 7.2. SQL-запросы для простой операции соединения, результатом выполнения которой является 6.7

В некоторых версиях языка SQL, включая версию, используемую в СУБД Microsoft Access, существует явный оператор соединения. В этих версиях запрос, представленный в п. а) на 7.2 может быть написан так, как в п. б), с использованием ключевого слова join. В этом случае условие соединения перемешается из предложения where в предложение on.

В некоторых SQL-системах поддерживаются четыре различные версии оператора соединения: inner join (внутреннее соединение), outer join (открытое соединение), left join (левое соединение) и right join (правое соединение). Без модификаций оператор соединения представляет собой внутреннее соединение, когда для каждого соответствия между двумя исходными кортежами создается кортеж результирующего отношения. Это и есть оператор соединения реляционной алгебры. В результате левого соединения создаются все кортежи внутреннего соединения и добавляются кортежи для всех строк левого операнда, для которых нет соответствующих строк в правом операнде. Полям кортежей результата, которые соответствуют атрибутам правого операнда, присваиваются нулевые значения. Например, результатом выполнения следующего оператора будет 7.1. select  from Employee left join TimeCard on Employee.ssn = TimeCard.ssn

Комментарии закрыты