Unió interna vs unió externa
Inner join i Outer join són dos dels mètodes d'unió SQL utilitzats en el processament de consultes per a bases de dades. Pertanyen a la família de les clàusules d'unió (les altres dues són les unions esquerra i dreta). No obstant això, hi ha un Self Join que es pot utilitzar per a situacions especialitzades. El propòsit de Unir és combinar camps utilitzant els valors comuns a les dues taules. Aquestes unions combinen registres de diverses taules en una base de dades. Crea conjunts resultants, que es poden desar com una altra taula.
Què és Inner Join?
L'operació d'unió SQL més utilitzada és la unió interna. Es pot considerar com el tipus d'unió predeterminat utilitzat a les aplicacions. La unió interna utilitza el predicat d'unió per combinar dues taules. Suposant que les dues taules són A i B, aleshores la unió-predicat compararà les files de A i B per esbrinar tots els parells que satisfan el predicat. Els valors de les columnes de totes les files satisfetes de les taules A i B es combinen per crear el resultat. Es pot considerar que primer es pren la combinació creuada (producte cartesià) de tots els registres i després només retorna els registres que compleixen el predicat d'unió. Tanmateix, en realitat, el producte cartesià no es calcula perquè és molt ineficient. En lloc d'això, s'utilitza la unió hash o la combinació ordenada.
Què és Outer Join?
A diferència de la unió interna, la unió externa conserva tots els registres encara que no trobi cap registre coincident. Això vol dir que la unió externa necessita un registre per trobar un registre coincident perquè aparegui al resultat. En canvi, retornarà tots els registres, però els registres no coincidents tindran valors nuls. Les unions externes es divideixen en tres subcategories. Són unió exterior esquerra, unió exterior dreta i unió exterior completa. Aquesta diferenciació es basa en quina fila de la taula (taula esquerra, taula dreta o ambdues taules) es conserva quan es troben registres no coincidents. Les unions externes esquerra (també conegudes com simplement unió a l'esquerra) conserven tots els registres de la taula esquerra. Això vol dir, fins i tot si el nombre de registres coincidents és zero, encara tindrà registres a la taula de resultats, però tindrà valors nuls per a totes les columnes de B. En altres paraules, tots els valors de la taula de l'esquerra es retornen amb els valors coincidents de la dreta. taula (o valors nuls quan no coincideixen). Si els valors de diverses files de la taula de l'esquerra coincideixen amb una única fila de la taula de la dreta, la fila de la taula de la dreta es repetirà segons sigui necessari. La unió externa dreta és molt semblant a la unió externa esquerra, però el tractament de les taules és venerat. Això vol dir que el resultat tindrà totes les files de la taula de la dreta almenys una vegada amb valors coincidents de la taula de l'esquerra (i valors nuls per als valors de la dreta no coincidents). La unió externa completa és més completa que les unions exteriors esquerra i dreta. Resulta en combinar l'efecte d'aplicar l'exterior esquerre i dret junts.
Quina diferència hi ha entre Inner Join i Outer Join?
Inner Join no manté les files no coincidents al resultat, però outer join conservarà tots els registres d'almenys una taula (segons quina unió externa s'hagi utilitzat). Per tant, el comportament de no tenir informació present a les files no coincidents a la taula de resultats no és desitjable, cal utilitzar sempre una de les unions externes (en lloc de la unió interna). És possible que la unió interna no produeixi cap resultat si no es troben coincidències. Però la unió externa sempre produirà una taula resultant, fins i tot sense files coincidents. La unió interna sempre retornarà taules amb valors (si es retorna). Però les unions externes poden donar lloc a taules amb valors nuls.