Skillnad mellan inre anslutning och yttre anslutning

Anonim

Inner Join vs Outer Join

Inner join och Outer join är två av de SQL-anslutningsmetoder som används vid förfråganbehandling för databaser. De tillhör familjen av medlemsklausuler (andra två är vänster och höger sammanfogning). Det finns dock en självförening som kan användas för specialiserade situationer. Syftet med Join är att kombinera fält med de gemensamma värdena till de två tabellerna. Dessa föreningar kombinerar poster från flera tabeller i en databas. Det skapar resulterande uppsättningar, som kan sparas som ett annat bord.

Vad är Inner Join?

Mest använda SQL Join-operation är Inner Join. Det kan betraktas som standardtyp för anslutning som används i applikationer. Innerföreningen använder användarprotokollet för att kombinera två tabeller. Förutsatt att de två tabellerna är A och B, kommer föreningsprotikaten att jämföra raderna A och B för att ta reda på alla par som uppfyller predikatet. Kolumnvärdena för alla nöjda rader av A- och B-tabeller kombineras för att skapa resultatet. Det kan ses som att man först tar korset (Cartesian-produkt) av alla poster och sedan bara återvänder de poster som uppfyller anslutningsprotokollet. Emellertid beräknas i själva verket inte den kartesiska produkten beräknas eftersom den är mycket ineffektiv. Hash join eller sort-merge join används istället.

Vad är yttre anslutning ?

Till skillnad från, Inner join, håller yttre anslutningen alla poster även om den inte kan hitta en matchande post. Det betyder att yttre anslutningen behöver en post för att hitta en matchande post för att den ska visas i resultatet. Istället kommer det att returnera alla poster, men oöverträffade poster kommer att ha null värden. Yttre föreningar är indelade i tre underkategorier. De lämnas yttre anslutning, höger yttre anslutning och full yttre anslutning. Denna differentiering baseras på vilken tabell (vänster tabell, höger tabell eller båda tabeller) raden behålls när oöverträffade poster hittas. Vänster yttre förbindningar (även känd som helt enkelt vänsterförbindelse) behåller alla poster i det vänstra bordet. Det betyder att även om antalet matchande poster är noll så kommer det fortfarande att ha poster i resultattabellen, men kommer att ha nullvärden för alla kolumner av B. Med andra ord returneras alla värden från vänstra bordet med matchade värden från höger tabell (eller nollvärden när den inte matchas). Om värden från flera rader från vänster bord matchas med en enda rad från höger tabell, upprepas raden från höger tabell efter behov. Höger yttre anslutning är ungefär lika med vänster yttre anslutning, men behandling av bord är äventyrad. Det betyder att resultatet kommer att ha alla rader av rätt tabell minst en gång med matchade vänster tabellvärden (och nullvärden för oöverträffade rättvärden). Full yttre anslutning är mer omfattande än både vänster och höger yttre förbindningar. Det resulterar i att man kombinerar effekten av att applicera både vänster och höger yttre sammanfogade.

Vad är skillnaden mellan Inre Join och Outer Join?

Inner Join behåller inte de oöverträffade raderna i resultatet, men yttre anslutningen kommer att hålla alla poster från minst ett bord (beroende på vilket yttre anslutning som har använts). Således är det inte önskvärt att ha någon information som saknas på oöverträffade rader i resultattavlan. Du måste alltid använda en av de yttre förbindningarna (i stället för innerförbandet). Inre medlemskap får inte ge resultat om inga träffar hittas. Men yttre förbindelse kommer alltid att producera ett resulterande bord, även utan matchande rader. Innerföreningen kommer alltid att returnera tabeller med värden (om de returneras). Men yttre föreningar kan resultera i tabeller med nullvärden.