Vnitřní spojení vs. vnější připojení


V SQL, a připojit se používá k porovnání a kombinaci - doslova spojení - a vrácení konkrétních řádků dat ze dvou nebo více tabulek v databázi. An vnitřní spojení vyhledá a vrátí odpovídající data z tabulek, zatímco vnější spojení vyhledá a vrátí odpovídající data a některé odlišné údaje z tabulek.

nahlásit tuto reklamu

Vnitřní spojení

Vnitřní spojení se zaměřuje na shodnost mezi dvěma tabulkami. Při použití vnitřního spojení musí existovat alespoň některá odpovídající data mezi dvěma (nebo více) tabulkami, které se porovnávají. Vnitřní spojení vyhledává v tabulkách shodu nebo překrývání dat. Po jeho nalezení vnitřní spojení zkombinuje a vrátí informace do jedné nové tabulky.

Příklad vnitřního spojení

Podívejme se na společný scénář dvou tabulek: ceny produktů a množství. Společnou informací v obou tabulkách je název produktu, takže logický sloupec pro připojení k tabulkám na. V těchto dvou tabulkách jsou běžné některé produkty; jiné jsou jedinečné pro jednu z tabulek a v druhé tabulce se neshodují.

Vnitřní spojení produkty vrátí informace o pouze produktech, které jsou běžné v obou tabulkách.

Vnější připojení

Vnější spojení vrátí sadu záznamů (nebo řádků), které obsahují to, co by se vrátilo vnitřní spojení, ale také zahrnuje další řádky, pro které v jiné tabulce není nalezena žádná odpovídající shoda..

Existují tři typy vnějších spojení:

  • Levé vnější připojení (nebo levé připojení)
  • Right Outer Join (nebo Right Join)
  • Úplné vnější připojení (nebo plné připojení)

Každý z těchto vnějších spojení se týká části dat, která je porovnávána, kombinována a vrácena. V tomto procesu se někdy vytvoří nulové hodnoty, protože některá data jsou sdílena, zatímco jiná nejsou.

Levé vnější připojení

Levé vnější spojení vrátí všechna data v tabulce 1 a všechna sdílená data (tedy vnitřní část příkladu Vennova diagramu), ale pouze odpovídající data z tabulky 2, což je správné spojení.

Příklad připojení vlevo

V naší ukázkové databázi jsou na levé straně dva produkty - pomeranče a rajčata (Ceny tabulka), která nemají odpovídající položku v „pravici“ (tabulka veličin). V levém spojení jsou tyto řádky zahrnuty do sady výsledků s NULL ve sloupci Množství. Ostatní řádky ve výsledku jsou stejné jako vnitřní spojení.

Right Outer Join

Pravý vnější spoj vrátí data tabulky 2 a všechna sdílená data, ale pouze odpovídající data z tabulky 1, což je levé spojení.

Příklad připojení vpravo

Podobně jako v případě levého spoje zahrnuje výstup pravého vnějšího spoje všechny řádky vnitřního spoje a dva řádky - brokolici a tykev - z „pravého“ (Množství tabulka), které nemají odpovídající položky vlevo.

Plné vnější připojení

Úplné vnější spojení nebo úplné spojení, což je ne podporovaný populárním systémem správy databází MySQL, kombinuje a vrací Všechno data ze dvou nebo více tabulek, bez ohledu na to, zda existují sdílené informace. Představte si úplné spojení jako jednoduše duplikování všech zadaných informací, ale v jedné tabulce, spíše než ve více tabulkách. Pokud chybí odpovídající data, budou vytvořeny nuly.

To jsou jen základy, ale spoustu věcí lze udělat s připojením. Existují dokonce i spojení, která mohou vyloučit další spojení!

Video vysvětlující vnitřní vs vnější připojení

Toto video vysvětluje rozdíl mezi různými typy spojení. Začne se v okamžiku, kdy začíná diskuse o spojení.

Reference

  • Rozdíl mezi vnitřním a vnějším spojem - Přetečení zásobníku
  • SQL Inner Join - Quackit
  • SQL Outer Join - Quackit
  • Pomocí Inner Joins - Microsoft SQL Server
  • Používání Outer Joins - Microsoft SQL Server
  • Vizuální reprezentace spojení SQL - CodeProject
  • Wikipedia: Připojte se (SQL)