Поделиться через


Как конструктор запросов и представлений представляет соединения (визуальные инструменты для баз данных)

При соединении таблиц конструктор запросов и представлений представляет соединение графически в области схем и в виде синтаксиса языка SQL в области SQL.

Область схем

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

Линия соединения показывает связь между двумя таблицами

Если таблицы соединяются с использованием более чем одного условия соединения, то в конструкторе запросов и представлений отображается несколько строк соединения, как в следующем примере:

Таблицы, соединенные по нескольким условиям

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

Форма значка в середине строки соединения показывает, как соединяются таблицы или объекты с табличной структурой. Если в предложении соединения используется оператор, отличный от оператора сравнения равно (=), то данный оператор отображается в значке строки соединения. В следующей таблице перечислены значки, которые появляются в строке соединения.

Значок строки соединения

Описание

Значок визуальных инструментов для баз данных

Внутреннее соединение (создается с использованием знака равенства)

Значок визуальных инструментов для баз данных

Внутреннее соединение, основанное на операторе «больше».

Значок визуальных инструментов для баз данных

Внешнее соединение, в котором участвуют все строки отображаемой слева таблицы, даже если они не имеют соответствий в связанной с ней таблице.

Значок визуальных инструментов для баз данных

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

Значок визуальных инструментов для баз данных

Полное внешнее соединение, включающее все строки из соединяемых таблиц (даже те строки таблиц, для которых нет соответствующих строк в другой соединяемой таблице).

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

Значок в конце строки соединения

Тип соединения

Значок визуальных инструментов для баз данных

Соединение «один к одному»

Значок визуальных инструментов для баз данных

Соединение «один ко многим»

Значок визуальных инструментов для баз данных

Конструктор запросов и представлений не может определить тип соединения. Такая ситуация часто возникает при создании соединения вручную.

Область 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_infoWHERE publishers.pub_id = pub_info.pub_id