Вътрешно присъединяване срещу Външно присъединяване


В SQL, a присъединяване се използва за сравнение и комбиниране - буквално присъединяване - и връщане на конкретни редове данни от две или повече таблици в база данни. Една вътрешно съединение намира и връща съвпадащи данни от таблици, докато an външно съединение намира и връща съвпадащи данни и някои различни данни от таблиците.

подайте сигнал за тази реклама

Вътрешно присъединяване

Вътрешното присъединяване се фокусира върху общото между две таблици. Когато използвате вътрешно присъединяване, трябва да има поне някои съвпадащи данни между две (или повече) таблици, които се сравняват. Вътрешно присъединяване търси таблици за съвпадение или припокриване на данни. След като го намери, вътрешното съединяване комбинира и връща информацията в една нова таблица.

Пример за вътрешно присъединяване

Нека разгледаме общ сценарий на две таблици: цени на продуктите и количества. Общата информация в двете таблици е името на продукта, така че това е логическата колона за присъединяване към таблиците На. Има някои продукти, които са често срещани в двете таблици; други са уникални за една от таблиците и нямат съвпадение в другата таблица.

Вътрешно присъединяване на Продукти връща информация само за тези продукти, които са общи и в двете таблици.

Външно присъединяване

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

Има три вида външни съединения:

  • Ляво външно присъединяване (или ляво присъединяване)
  • Право външно присъединяване (или дясно присъединяване)
  • Пълно външно присъединяване (или пълно присъединяване)

Всяко от тези външни съединения се отнася до частта от данните, която се сравнява, комбинира и връща. Понякога в този процес ще бъдат генерирани нули, тъй като някои данни се споделят, докато други не са.

Ляво външно присъединяване

Лявото външно съединение ще върне всички данни в Таблица 1 и всички споделени данни (така че вътрешната част на примера на диаграмата на Venn), но само съответните данни от Таблица 2, което е дясното съединяване.

Лев пример за присъединяване

В нашата примерна база данни има два продукта - портокали и домати - отляво (Цени таблица), които нямат съответен запис в „правото“ (таблица с количествата). В ляво съединение тези редове са включени в набора от резултати с NULL в колоната Количество. Останалите редове в резултата са същите като вътрешното съединяване.

Право външно присъединяване

Дясната външна връзка връща данните на Таблица 2 и всички споделени данни, но само съответните данни от Таблица 1, която е лявата връзка.

Пример за дясно присъединяване

Подобно на левия пример за присъединяване, изходът на дясното външно съединение включва всички редове от вътрешното съединение и два реда - броколи и скуош - от „дясното“ (Количества таблица), които нямат съответстващи записи отляво.

Пълно външно присъединяване

Пълно външно съединение или пълно присъединяване, което е не поддържана от популярната система за управление на бази данни MySQL, комбинира и връща всичко данни от две или повече таблици, независимо дали има споделена информация. Помислете за пълно присъединяване като просто дублиране на цялата определена информация, но в една таблица, а не на няколко таблици. Когато липсват съвпадащи данни, ще бъдат произведени нули.

Това са само основите, но много неща могат да се правят с присъединявания. Има дори присъединения, които могат да изключат други присъединения!

Видео, обясняващо „Вътрешно срещу външно присъединяване“

Това видео обяснява разликата между различните видове съединения. Препоръчва се да започне от момента, в който започва дискусията за присъединяване.

Препратки

  • Разлика между вътрешно и външно съединение - Препълване на стека
  • SQL Inner Join - Quackit
  • SQL Външно присъединяване - Quackit
  • Използване на Inner Joins - Microsoft SQL Server
  • Използване на външни съединения - Microsoft SQL Server
  • Визуално представяне на SQL съединения - CodeProject
  • Уикипедия: Присъединете се (SQL)