Inner aansluiting vs Outer aansluiting
Binne aansluiting en Buitenste aansluiting is twee van die SQL-verbindingsmetodes wat in navraagverwerking vir databasisse gebruik word. Hulle behoort aan die familie van aansluitingsklousules (ander twee is Links en Regs aansluitings). Daar is egter 'n Self-aansluiting wat vir gespesialiseerde situasies gebruik kan word. Die doel van Join is om velde met behulp van die gemeenskaplike waardes te kombineer met die twee tabelle. Hierdie verbindings kombineer rekords van verskeie tabelle in 'n databasis. Dit skep resulterende stelle wat as 'n ander tabel gestoor kan word.
Wat is Innerlike aansluiting?
Sql-aansluiting wat die meeste gebruik word, is die Inner Join. Dit kan beskou word as die verstek tipe aansluiting wat in toepassings gebruik word. Inner join gebruik die join-predikaat om twee tabelle te kombineer. Gestel die twee tabelle is A en B, dan sal die samevoeging-predikaat rye van A en B vergelyk om al die pare uit te vind wat aan die predikaat voldoen. Kolomwaardes van alle bevredigde rye van A- en B-tabelle word gekombineer om die resultaat te skep. Dit kan beskou word as om eers die kruiskoppeling (Cartesiese produk) van alle rekords te neem en dan net die rekords terug te gee wat aan die aansluitingspredikaat voldoen. In werklikheid word Cartesiese produk egter nie bereken nie, want dit is baie ondoeltreffend. Hash-verbinding of sorteer-samevoeging word eerder gebruik.
Wat is Outer Join?
Anders as, Inner join, outer join hou al die rekords, selfs al kan dit nie 'n ooreenstemmende rekord vind nie. Dit beteken buitenste aansluiting het wel 'n rekord nodig om 'n ooreenstemmende rekord te vind sodat dit in die resultaat kan verskyn. In plaas daarvan sal dit al die rekords terugstuur, maar ongeëwenaarde rekords sal nulwaardes hê. Buiteverbindings word in drie subkategorieë verdeel. Hulle is links buitenste verbinding, regter buitenste verbinding en volle buitenste verbinding. Hierdie differensiasie is gebaseer op watter tabel (linkertabel, regtertabel of albei tabelle) se ry behou word wanneer ongeëwenaarde rekords gevind word. Linker buitenste aansluitings (ook bekend as eenvoudig links aansluiting) behou alle rekords van die linker tabel. Dit beteken, selfs al is die getal wat ooreenstem met rekords nul, sal dit steeds rekords in die resultaattabel hê, maar nulwaardes vir alle kolomme van B hê. Met ander woorde, alle waardes van die linkertabel word teruggestuur met ooreenstemmende waardes van regs tabel (of nulwaardes wanneer dit nie ooreenstem nie). As waardes van verskeie rye van die linkertabel met 'n enkele ry van die regtertabel ooreenstem, sal die ry van die regtertabel herhaal word soos vereis. Regs buitenste aansluiting is redelik soortgelyk aan linker buitenste aansluiting, maar behandeling van tafels word vereer. Dit beteken dat die resultaat al die rye van die regtertabel ten minste een keer sal hê met ooreenstemmende linkertabelwaardes (en nulwaardes vir ongepassende regterwaardes). Volle buitenste aansluiting is meer omvattend as beide linker- en regterbuiteverbindings. Dit lei tot die kombinasie van die effek van die toepassing van beide linker- en regterbuitenste saamgevoeg.
Wat is die verskil tussen Inner Join en Outer Join?
Inner aansluiting hou nie die ongeëwenaarde rye in die resultaat nie, maar buitenste aansluiting sal al die rekords van ten minste een tabel hou (afhangende van watter buitenste aansluiting gebruik is). Dus, die gedrag dat daar geen inligting op ongeëwenaarde rye in die resultaattabel teenwoordig is nie, is ongewens; jy moet altyd een van die buitenste verbindings gebruik (in plaas van binneste verbinding). Innerlike aansluiting sal dalk nie 'n resultaat lewer as geen passings gevind word nie. Maar buitenste aansluiting sal altyd 'n resulterende tabel produseer, selfs met geen ooreenstemmende rye nie. Innerlike aansluiting sal altyd tabelle met waardes terugstuur (indien teruggestuur). Maar buitenste aansluitings kan lei tot tabelle met nulwaardes.