Отражение соединений в конструкторе запросов и представлений
При соединении таблиц конструктор запросов и представлений представляет соединение графически в области схем и как синтаксис языка SQL в области SQL.
Область схемы
В области схем конструктор запросов и представлений отображает строку соединения данных столбцов, включенных в соединение. Конструктор запросов и представлений отображает одну линию соединения для каждого условия соединения. Например, на следующей иллюстрации показана строка соединения для двух соединенных таблиц.
Если таблицы соединены с использованием нескольких условий соединения, в конструкторе запросов и представлений отображается несколько строк соединений, как в следующем примере:
Если соединенные столбцы данных не отображаются (например прямоугольник, представляющий таблицу или объект с табличной структурой, свернут, или в соединении содержится выражение), строка соединения помещается в строку заголовка прямоугольника, представляющего таблицу или объект с табличной структурой.
Форма значка в середине линии соединения показывает, как соединяются таблицы или объекты с табличной структурой. Если в предложении JOIN используется оператор, отличный от оператора сравнения равно (=), то данный оператор отображается в значке строки соединения. В следующей ниже таблице перечислены значки, которые отображаются в строке соединения.
Значок линии соединения |
Описание |
---|---|
Внутреннее соединение (создается с использованием знака равенства) |
|
Внутреннее соединение, основанное на операторе "больше". |
|
Внешнее соединение, в котором участвуют все строки отображаемой слева таблицы, даже если они не имеют соответствий в связанной с ней таблице. |
|
Внешнее соединение, в котором участвуют все строки отображаемой справа таблицы, даже если они не имеют соответствий в связанной с ней таблице. |
|
Полное внешнее соединение, включающее все строки из соединяемых таблиц (даже те строки таблиц, для которых нет соответствующих строк в другой соединяемой таблице).
Примечание
В некоторых базах данных, например Oracle, полные внешние соединения не поддерживаются.
|
Символы в конце строки соединения указывают тип соединения. В следующей ниже таблице перечислены типы соединений и значков, которые появляются в конце строки соединения.
Значок в конце линии соединения |
Тип соединения |
---|---|
Соединение "один к одному" |
|
Соединение "один ко многим" |
|
Конструктор запросов и представлений не может определить тип соединения. Такая ситуация особо часто возникает при создании соединения вручную. |
Область SQL
В инструкции SQL соединение может быть выражено несколькими способами. Точный синтаксис зависит от используемой базы данных и от того, как определено соединение.
Параметры синтаксиса для соединения таблиц включают:
Квалификатор JOIN для предложения FROM. Ключевые слова INNER и OUTER определяют тип соединения. Такой синтаксис относится к стандарту ANSI SQL-92.
Например, при соединении таблиц publishers и pub_info на основе столбца pub_id в каждой таблице результирующая инструкция SQL может выглядеть так:
SELECT * FROM publishers INNER JOIN pub_info ON publishers.pub_id = pub_info.pub_id
При создании внешнего соединения вместо слова INNER появляются слова LEFT OUTER или RIGHT OUTER.
Предложение WHERE сравнивает столбцы обеих таблиц. Предложение WHERE отображается в том случае, если база данных не поддерживает синтаксис JOIN (или если предложение WHERE введено вручную). Если для создания соединения используется предложение WHERE, в предложении FROM отображаются названия обеих таблиц.
Например, следующая инструкция соединяет таблицы publishers и pub_info.
SELECT * FROM publishers, pub_info WHERE publishers.pub_id = pub_info.pub_id