Основное различие: объединения в SQL выполняются для объединения данных двух разных таблиц. Внутреннее соединение - это условие, результатом которого являются строки, которые удовлетворяют условию «где» во «всех таблицах»; тогда как внешнее соединение - это условие, которое приводит к тем строкам, которые удовлетворяют условию «где» в «хотя бы одной из таблиц».
При реализации объединений создаются временные таблицы, основанные на столбцах. Для условий соединения всегда должно быть две таблицы. Эти условия затем объединяют соответствующие компоненты одной таблицы с другими компонентами и создают совершенно новую таблицу. Целью этих таблиц является извлечение значимых и необходимых данных или информации. В зависимости от условий существует два типа соединений: внутреннее и внешнее.
SQL INNER JOIN Синтаксис:
ВЫБЕРИТЕ имя столбца (ов)
ИЗ таблицы 1
INNER JOIN table2
ON table1.column_name = table2.column_name;
Ключевое слово INNER JOIN выбирает все строки из обеих таблиц, если есть совпадение между столбцами в обеих таблицах.
Внутренние объединения зависят от выбора дизайна и характеристик базы данных. Соответственно, эти внутренние соединения используются в Equi-Joins и Natural Joins. В Equi Join существует определенный тип сравнения, который используется для выравнивания двух данных таблиц. Следовательно, эта таблица использует равный предикат. Естественное соединение - это тип соединения Equi.
Синтаксис для Equi Join выглядит следующим образом:
S ELECT *
ИЗ таблицы 1, таблицы 2
ГДЕ table1.coloumn_name = table2.coloumn_name;
Если столбцы в равном объединении имеют одинаковые имена, то соответствующая версия SQL предоставляет необязательную сокращенную запись, которая может быть выражена конструкцией USING как:
ВЫБРАТЬ *
FROM table1 INNER JOIN table2 USING (столбец_имя);
Синтаксис для Natural Join выглядит следующим образом:
ВЫБРАТЬ *
ИЗ таблицы 1 ЕСТЕСТВЕННОЕ СОЕДИНЕНИЕ table2;
«Внешнее соединение» не требует условий соответствия для записей. Это условие соединения поддерживает все другие записи, кроме несоответствующих записей. Это соединение далее распределяется в условиях левого, правого и полного внешнего соединения, которые реализуются в соответствии с желаемыми условиями и атрибутами таблицы.
Левое внешнее соединение
Ключевое слово LEFT JOIN возвращает все строки из левой таблицы (table1) с соответствующими строками в правой таблице (table2). Это приводит к «NULL» в правой части, когда нет совпадения.
Синтаксис для левого внешнего соединения следующий:
ВЫБЕРИТЕ имя столбца (ов)
ИЗ таблицы 1
ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ table2
ON table1.column_name = table2.column_name;
Правое внешнее соединение
Ключевое слово RIGHT JOIN возвращает все строки из правой таблицы (table2) с совпадающими строками в левой таблице (table1). Результат равен NULL в левой части, когда нет совпадений.
Синтаксис для Right Outer Join выглядит следующим образом:
ВЫБЕРИТЕ имя столбца (ов)
ИЗ таблицы 1
ПРЯМОЕ НАРУЖНОЕ СОЕДИНЕНИЕ table2
ON table1.column_name = table2.column_name;
Полное внешнее соединение
Ключевое слово FULL OUTER JOIN возвращает все строки из левой таблицы (table1) и правой таблицы (table2). Ключевое слово FULL OUTER JOIN объединяет в себе как результат LEFT, так и RIGHT.
Синтаксис для полного внешнего соединения:
ВЫБЕРИТЕ имя столбца (ов)
ИЗ таблицы 1
ПОЛНОЕ НАРУЖНОЕ СОЕДИНЕНИЕ table2
ON table1.column_name = table2.column_name;
Сравнение между Inner Join и Outer Join:
Внутреннее соединение | Внешнее соединение | |
Основная функция | Внутренние объединения в основном используются для поиска совпадающих строк между двумя таблицами. | Внешнее объединение сохраняет строки либо таблицы, либо обеих таблиц. |
Наличие общих переменных | Здесь общая переменная обязательно должна быть в обеих таблицах. | Здесь переменная зависит только от первой таблицы, которая может присутствовать или не присутствовать во второй таблице. |
Возвращает | Внутреннее объединение будет возвращать только те строки, в которых есть совпадение на основе предиката соединения. | Внешнее объединение вернет все строки независимо от того, основаны они на совпадениях или нет на основе предиката соединения. |
Использовал к | Он используется для просмотра записей только тогда, когда записи присутствуют в обеих таблицах. | Он используется для просмотра всех записей только в одной таблице. |
Применимо в | Они применимы в: Equi-Join и Natural Join | Они применимы как: Левое внешнее соединение Правое внешнее соединение Полное внешнее соединение |