Предыдущие разделы этой главы демонстрировали использование оператора select для выборки данных из одной таблицы базы данных. Если бы язык Transact-SQL поддерживал только такие простые операторы select, то подключение двух и более таблиц для выборки данных было бы невозможным. Следовательно, все данные базы данных должны были бы храниться в одной таблице. Хотя хранение всех данных базы данных внутри одной таблицы в принципе возможно, оно имеет один главный недостаток - хранимые данные будут весьма избыточны.
Transact-SQL предоставляет оператор соединения, который выбирает данные более чем из одной таблицы. Этот оператор, возможно, является одним из наиболее важных операторов для систем реляционных баз данных, потому что позволяет распределять данные среди множества таблиц и таким образом обеспечивать жизненно важное свойство систем баз данных - отсутствие избыточности данных.
Оператор join применим к базовым таблицам и представлениям. В этом разделе рассматриваются соединения, выполняемые между базовыми таблицами, а соединения, связанные с представлениями, будут обсуждаться.
Существует несколько различных форм оператора join. В этом разделе рассматриваются следующие фундаментальные типы:
♦ естественное соединение;
♦ декартово произведение (перекрестное соединение);
♦ внешнее соединение;
♦ тета-соединение, рефлексивное соединение (само-соединение) и полу-соединение.
Прежде чем рассматривать различные формы соединений, в этом разделе описываются различные синтаксические формы оператора join.