Преглед на видовете присъединения в SQL Server
Клаузата за присъединяване, ключовата дума JOIN се обединява множество таблици в един набор от резултати. Клаузата FROM ще трябва да включва всички таблици. Разделя всяка таблица с клауза WHERE, обикновено включена клауза.
Можем да вмъкнем булевия израз, който връща вярно или невярно, и тези изрази могат да се отнасят към колони във всички таблици.
Видове присъединения в SQL Server
Има различни видове Съединения
- КРЪСТО ПРИЛОЖЕТЕ
- ВЪТРЕШНО ПРИЛОЖЕТЕ
- ВЪНШНО ПРИЛОЖЕНИЕ
- НАЛЯВО ВЪЗСТАНОВЕТЕ
- ПРАВО ВЪНШЕН ПРИЛОЖЕТЕ
- ПЪЛНО ВЪНШНО ПРИЛОЖЕНИЕ
- САМО ПРИСЪЕДИНЕТЕ
Нека разберем подробно всяка от тези присъединения: -
1) Кръстосана връзка
- Това е най-простият ПРИЛОЖЕНИЕ
- Връща всички редове от двете таблици
- Клауза НЕ КЪДЕ
- Това е и най-малко полезно
- Много е неефективно
- Той създава декартови продукти
- CROSS подразбираща се дума
пример
Така че всички от първата таблица с всякакви данни от втората таблица без никакъв опит за съвпадение, така че това е нещото, което не искате да правите.
Потърсете клауза FROM, където имате няколко таблици и няма клауза WHERE.
2) Вътрешно присъединяване
Изход на заявка:
Първоначалният и последният ви ред имат координиращи стойности, свързани с C2. Централните редове обикновено не се срещат. Последният краен резултат предоставя всички стойности както през първоначалния, така и в последния редове, но не включват този несъвпадащ ред в средната секция.
- Това е най-типичното ПРИЛОЖЕНИЕ
- Това подчерта релационния характер на базата данни
- Позволява ни да съпоставим стойността на колоната в една от таблиците със стойността на колоната в друга една от таблиците.
- Основният ключ в една от таблиците и чужд ключ в една от другите таблици.
пример
Тук p.person_id е основният ни ключ в нашата таблица с хора,
email_address_person_id е нашият чужд ключ в таблицата с имейл адреси.
Нека да разгледаме масата на човека
Имаме тези четири реда. И след това всички съвпадения вътре в таблицата с имейл адреси.
Така че в крайна сметка трябва да получат трима души, защото имаме човек Шанън, който няма имейл адрес
Изход на заявка:
Така получаваме данните само там, където има съвпадение между двете колони във всяка от таблиците
3) Външно присъединяване
- ВЪТРЕШНИЯ ПРИЛОЖЕНИЕ не се занимава с NULL стойности
- OUTER JOIN работи дори когато няма съвпадение във втората таблица.
- NULL колони, ако няма съвпадение във втората таблица
- ПЪЛНО ВЪНШНО ПРИЛОЖЕНИЕ върнете всички присъединени редове
- NULL, когато няма съвпадение в нито една таблица
а) ляво външно присъединяване
Изход на заявка: Вие сте първоначални, както и последните редове имат координиращи стойности, свързани с C2. Централните редове обикновено не се срещат. Последният краен резултат би могъл да запази всички редове от първата таблица, но всъщност ще остави неизпълнения ред през втората таблица.
- Друга, свързана с NULL ПРИЛОЖЕНИЕ
- Всички редове от лявата страна ще бъдат върнати
- NULL за несъответстваща дясна странична маса
пример
Изход на заявка:
Забелязвате, че в таблицата с лица има един ред, който няма стойности в таблицата с имейл адреси. Така че ЛЯВОТО ВЪНШНО ПРИЛОЖЕНИЕ ще ни даде.
б) Правилно външно присъединяване
Изход на заявка:
Вие сте първоначални, както и последните редове имат координиращи стойности, свързани с C2. Централните редове обикновено не се срещат. Последният краен резултат би могъл да запази всички редове от втората таблица, но всъщност ще остави неизпълнения ред през първата таблица.
- Срещу лявото външно съединение
- Всички редове от дясната страна ще бъдат върнати
- NULL за несъответстваща лява странична маса
пример Изход на заявка:
Получаваме три резултата. Ето нашия резултат ПРАВИЛНО ПРИЛОЖЕНИЕ, където имаме реда от таблицата с имейл адреси, който няма съответен ред в дясната таблица.
4) Пълно външно присъединяване
пример
Изход на заявка:
Ние постигаме да комбинираме резултата от НАЛЯВАНЕ НА ВЪНШНОТО ПРИЛОЖЕНИЕ и ПРАВО ВЪНШНО ПРИЛОЖЕНИЕ
5) Самосъединяване
- SELF не е ключова дума. Просто тази идея можете да направите маса върху себе си
- Странно, но понякога полезно
- Няма специален синтаксис
- Същата таблица отляво и отдясно на JOIN
- Полезно, когато таблицата съдържа йерархични данни
пример
ИЗБЕРЕТЕ *
ОТ поръчки
Присъединете се към абонаменти
ON поръчки.subscription_id = subscriptions.subscription_id;
Получаваме таблица с поръчки и таблица за абонаменти и се присъединяваме към таблицата, като използвате SELECT всички колони.
За да получите резултат.
Заключение:
Присъединяването е начинът, по който наистина караме релационния модел да оживее. Релационният модел е свързан с отделяне на данни, нормализиране в множество таблици, но в състояние да ги съберем отново, когато искаме да видим тези взаимоотношения. И различните видове Съединения ни позволяват да правим това по малко различни начини.
Препоръчителни статии
Това е ръководство за Видове съединения в SQL сървъра. Тук обсъждаме прегледа и видовете съединения в SQL с техните примери. Можете да разгледате и другите ни предложени статии, за да научите повече -
- Какво е SQL Server?
- Кариери в SQL Server
- PL SQL обучение
- MySQL Оператори
- Топ 6 вида съединения в MySQL с примери