Маловероятно, что вы будете работать исключительно с данными из одной таблицы, поэтому вам потребуется иметь возможность получать данные из нескольких таблиц. Один из способов сделать это - использовать объединения, а в реляционных базах данных объединения - это то, что делает реляционные базы данных реляционными. В этом посте содержится краткое описание четырех основных типов 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 сегодня и используйте предоставленные фрагменты кода, чтобы увидеть все способы, которыми вы можете вернуть различные подмножества ваших данных.