Маловероятно, что вы будете работать исключительно с данными из одной таблицы, поэтому вам потребуется иметь возможность получать данные из нескольких таблиц. Один из способов сделать это - использовать объединения, а в реляционных базах данных объединения - это то, что делает реляционные базы данных реляционными. В этом посте содержится краткое описание четырех основных типов SQL-соединений и трех их вариантов.

Что такое соединение?

Соединение - это способ связывания данных из двух или более таблиц на основе общего столбца между таблицами. Например, вы можете связать таблицу адресов и таблицу телефонных номеров на основе имени человека (например, «Дайте мне адрес и номер телефона человека по имени Джон Смит»).

Почему так важны объединения?

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

Какие бывают соединения SQL?

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

Внутреннее соединение

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

Образец SQL

SELECT columns
FROM TableA
INNER JOIN TableB
ON A.columnName = B.columnName;

Левое [внешнее] соединение

Левое внешнее соединение (иногда сокращенно left join) возвращает все строки из левой таблицы, указанной в условии ON, и только строки из правой - таблица, удовлетворяющая условию соединения.

Образец SQL

SELECT columns
FROM TableA
LEFT OUTER JOIN TableB
ON A.columnName = B.columnName

Левое [внешнее] соединение без пересечения

Это соединение является вариантом базового левого внешнего соединения, но вместо этого оно возвращает все строки из левой таблицы, указанной в условии ON, которые также удовлетворяют условию соединения и none строк из правой таблицы, удовлетворяющих условию соединения.

Образец SQL

SELECT columns
FROM TableA
LEFT OUTER JOIN TableB
ON A.columnName = B.columnName
WHERE B.columnName IS NULL

Правое [внешнее] соединение

Правое внешнее соединение (иногда сокращенно правое соединение) возвращает все строки из правой таблицы, указанной в условии ON, и только строки из левой - таблица, удовлетворяющая условию соединения.

Образец SQL

SELECT columns
FROM TableA
RIGHT OUTER JOIN TableB
ON A.columnName = B.columnName

Правое [внешнее] соединение без пересечения

Это соединение является вариантом основного правого внешнего соединения, но вместо этого оно возвращает все строки из правой таблицы, указанной в условии ON, которые также удовлетворяют условию соединения и none строк из левой таблицы, удовлетворяющих условию соединения.

Образец SQL

SELECT columns
FROM TableA
RIGHT OUTER JOIN TableB
ON A.columnName = B.columnName
WHERE A.columnName IS NULL

Полное [внешнее] присоединение

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

Образец SQL

SELECT columns
FROM TableA
FULL JOIN TableB
ON A.columnName = B.columnName

Полное [внешнее] соединение без пересечения

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

Образец SQL

SELECT columns
FROM TableA
FULL JOIN TableB
ON A.columnName = B.columnName
WHERE A.columnName IS NULL
OR B.columnName IS NULL

Выводы

В этом посте были рассмотрены четыре основных типа SQL-соединений и три варианта этих базовых типов. Соединения - это то, что делает реляционную базу данных реляционной, поэтому, если вы не освоили различные доступные типы SQL-соединений, вам стоит это сделать. Запустите TeamSQL сегодня и используйте предоставленные фрагменты кода, чтобы увидеть все способы, которыми вы можете вернуть различные подмножества ваших данных.