Обзор типов соединений в SQL Server
Предложение Join, ключевое слово JOIN объединяет несколько таблиц в один набор результатов. Предложение FROM должно включать все таблицы. Разделяет каждую таблицу запятым предложением WHERE.
Мы можем вставить логическое выражение, которое возвращает true или false, и эти выражения могут ссылаться на столбцы во всех таблицах.
Типы объединений в SQL Server
Существуют разные типы соединений
- CROSS JOIN
- ВНУТРЕННЕЕ СОЕДИНЕНИЕ
- НАРУЖНОЕ СОЕДИНЕНИЕ
- ЛЕВОЕ НАРУЖНОЕ СОЕДИНЕНИЕ
- ПРАВО НАРУЖНОЕ
- ПОЛНОЕ НАРУЖНОЕ СОЕДИНЕНИЕ
- SELF JOIN
Давайте разберемся с каждым из этих соединений подробнее:
1) Перекрестное соединение
- Это самое простое ПРИСОЕДИНЕНИЕ
- Возвращает все строки из обеих таблиц
- Нет предложения ГДЕ
- Это также наименее полезно
- Это очень неэффективно
- Это создает декартово произведение
- Подразумевается ключевое слово CROSS
пример
Таким образом, все из первой таблицы с каждым фрагментом данных из второй таблицы без каких-либо попыток сопоставления, поэтому вы не хотите этого делать.
Найдите предложение FROM, где у вас есть несколько таблиц, а предложение WHERE отсутствует.
2) Внутреннее соединение
Вывод запроса:
Ваша начальная и последняя строки имеют координирующие значения, связанные с C2. Центральные ряды обычно не встречаются. Последний конечный результат предоставляет все значения как в начальной, так и в последней строках, но не включает эту несоответствующую строку средней секции.
- Это наиболее типичное JOIN
- Это подчеркнуло реляционный характер базы данных
- Это позволяет сопоставить значение столбца в одной из таблиц со значением столбца в другой из таблиц.
- Первичный ключ в одной из таблиц и внешний ключ в одной из других таблиц.
пример
Здесь p.person_id является нашим первичным ключом в нашей таблице персон,
email_address_person_id - это наш внешний ключ в таблице адресов электронной почты.
Давайте посмотрим на стол человека
У нас есть эти четыре ряда. А затем все совпадения внутри таблицы адресов электронной почты.
Итак, в конце концов, должны получить три человека, потому что у нас есть человек Шеннон, у которого нет адреса электронной почты
Вывод запроса:
Таким образом, мы получаем данные только там, где есть совпадение между двумя столбцами в каждой из таблиц
3) Внешнее соединение
- INNER JOIN не работает со значениями NULL
- OUTER JOIN работает, даже если во второй таблице нет совпадений.
- NULL столбцы, если нет совпадения во второй таблице
- FULL OUTER JOIN вернуть все соединенные строки
- NULL, если нет совпадений ни в одной таблице
а) левое внешнее соединение
Вывод запроса: Вы начальные и последние строки имеют координирующие значения, связанные с C2. Центральные ряды обычно не встречаются. Последний конечный результат может сохранить все строки первой таблицы, но фактически пропустит несопоставленную строку через вторую таблицу.
- Еще одно связанное с NULL JOIN
- Все строки с левой стороны будут возвращены
- NULL для несоответствующей правой таблицы
пример
Вывод запроса:
Вы заметили, что есть одна строка в таблице Person, которая не имеет значений в таблице адресов электронной почты. Так что левое внешнее соединение даст нам.
б) Правое внешнее соединение
Вывод запроса:
Вы начальные и последние строки имеют координирующие значения, связанные с C2. Центральные ряды обычно не встречаются. Последний конечный результат может сохранить все строки второй таблицы, но фактически пропустит несопоставленную строку через первую таблицу.
- Напротив LEFT OUTER JOIN
- Все строки с правой стороны будут возвращены
- NULL для несоответствующей левой таблицы
пример Вывод запроса:
Мы получаем три результата. Вот наш результат RIGHT OUTER JOIN, где у нас есть строка из таблицы адресов электронной почты, у которой нет соответствующей строки в правой таблице.
4) Полное внешнее соединение
пример
Вывод запроса:
Мы получим объединение результата LEFT OUTER JOIN и RIGHT OUTER JOIN
5) Self Join
- SELF не является ключевым словом. Именно эта идея, что вы можете создать таблицу на себя
- Странно, но иногда полезно
- Нет специального синтаксиса
- Одна и та же таблица слева и справа от JOIN
- Полезно, когда таблица содержит иерархические данные
пример
ВЫБРАТЬ *
ОТ заказов
ПРИСОЕДИНЯЙТЕСЬ подписки
ON orders.subscription_id = subscription.subscription_id;
Мы получаем таблицу заказов и таблицу подписок и присоединяемся к таблице, используя SELECT все столбцы.
Чтобы получить результат.
Вывод:
Объединения - это способ, которым мы действительно воплощаем реляционную модель в жизнь. Реляционная модель предполагает разделение данных, их нормализацию по нескольким таблицам, но возможность снова объединить их, когда мы хотим увидеть эти отношения. И различные виды соединений позволяют нам делать это немного по-разному.
Рекомендуемые статьи
Это руководство по типам соединений на сервере SQL. Здесь мы обсудим обзор и типы объединений в SQL с их примерами. Вы также можете просмотреть наши другие предлагаемые статьи, чтобы узнать больше -
- Что такое SQL Server?
- Карьера в SQL Server
- PL SQL Training
- Операторы MySQL
- 6 лучших типов соединений в MySQL с примерами