Ieteicams, 2024

Redaktora Izvēle

Atšķirība starp kreiso, labo un pilnu ārējo savienojumu

Agrāk mēs esam apsprieduši atšķirības starp iekšējo pievienošanos un ārējo pievienošanos, kur mēs esam pārskatījuši Outer Join veidus. Outer Join ir tas, kurš saglabā rezultātus, kas būtu zaudēti, pievienojoties darbībai. Šajā rakstā; mēs apspriedīsim atšķirības starp Outer Join veidiem. Ir trīs veidu savienojumi; Kreisais ārējais savienojums, labais ārējais savienojums un pilna ārējā savienība. Kreisais, labais un pilnais ārējais savienojums atšķiras to izpildes plānā un iegūtajos rezultātos. Mēs varam izlaist ārējo vārdu no kreisās, labās un pilnās ārējās pievienošanās. Apskatīsim atšķirības starp kreiso, labo un pilno ārējo savienojumu, izmantojot zemāk redzamo salīdzinājumu tabulu.

Salīdzinājuma diagramma

Salīdzinājuma pamatsKreisais ārējais savienojumsLabais ārējais savienojumsPilna ārējā pievienošanās
PamataVisi kreisās tabulas ieraksti paliek rezultātā.Visi labās tabulas burti paliek rezultātā.Rezultātā paliek visas labās un kreisās tabulas.
NULL paplašinājumsKreisās tabulas, kurām nav atbilstošas ​​tabulas labajā tabulā, kopas tiek paplašinātas ar NULL vērtību labās tabulas atribūtiem.Labās tabulas kopas, kurām kreisajā tabulā nav atbilstošas ​​tuples, tiek paplašinātas ar NULL vērtību kreisās tabulas atribūtiem.
Kreisās, kā arī labās tabulas, kurām nav atbilstošās kopas labajā un kreisajā tabulā, tiek paplašinātas ar NULL vērtību labās un kreisās tabulas atribūtiem.

Kreisā ārējā savienojuma definīcija

Pieņemsim, ka mums ir “ Table_A Left Outer Join Table_B ”. Tātad Table_A ir mūsu kreisā galds, kā tas parādās kreisajā pusē no kreisā savienojuma, un Table_B ir mūsu labais galds.

Sākotnēji iekšējais savienojums tiktu piemērots tabulā_A un tabulā_B, kas atgriezīs visus atbilstošos numurus no A un B tabulas.

Pēc tam tas atgriezīs visas tabulas_Atlas, kurām nav atbilstošas ​​kopas tabulā_B. Tādā veidā iegūtās kopas būtu polsterētas ar NULL vērtībām labās tabulas atribūtiem.

Līdz ar to rezultāts, kas iegūts no kreisās ārējās savienības, saglabā visas korekcijas no kreisās tabulas un tikai atbilstošās tuples no labās tabulas.

Apspriedīsim ar kreiso ārējo savienojumu ar piemēru; mums ir divas tabulas, studentu galda un nodaļas tabula.

Tagad mēs piemērosim kreiso ārējo savienojumu, studentu un nodaļu tabulā.

SELECT * NO studenta LEFT OUTER JOIN nodaļas
ON Student. Student_ID = departaments.Student_ID

Iepriekš minētajā vaicājumā tabula Students ir kreisā galds un tabula. Tātad, saskaņā ar kreiso ārējo savienojumu, rezultātam ir jābūt visām vērtībām no Studentu galda, un tikai atbilstošajām sekvencēm no nodaļas tabulas.

Ievērojiet rezultātu, kas iegūts no kreisā ārējā savienojuma; tai ir visas rakstzīmes no Studentu galda kopā ar atbilstošajām korekcijām gan no studentu, gan departamenta tabulas. Studentu galda skolēnu galdiņš Jimmy, Džozefs Harijs, nebija skolēnu. Līdz ar to Jimmy, Joseph Harry nodaļas tabulas atribūtu vērtības tiek paplašinātas līdz NULL.

Labās ārējās savienības definīcija

Pieņemsim, ka mums ir “ Table_A Right Outer Join Table_B ”. Tātad Table_A ir mūsu kreisā galda, kā tas parādās kreisajā pusē no labās ārējās savienošanas, un Table_B ir mūsu labā galds.

Tāpat kā kreisajā ārējā savienojumā, sākotnēji iekšējais savienojums tiks piemērots tabulā_A un tabulā_B, kas atgriezīs visus atbilstošos numurus no A un B tabulas.

Pēc tam tas atgriež visas tabulas_B tabulas, kurām nav atbilstošās kopas tabulā A. Tādā veidā iegūtās kopas būtu polsterētas ar NULL vērtībām kreisās tabulas atribūtiem.

Līdz ar to rezultāts, kas iegūts no labās ārējās savienības, saglabā visas labās tabulas un tikai atbilstošās vienības no kreisās tabulas.

Apspriedīsim labo ārējo savienojumu ar piemēru; iepriekš ir divas tabulas, Studentu galda un nodaļas tabula.

Tagad mēs pielietosim labo ārējo savienojumu ar studentu galdu un nodaļas tabulu.

SELECT * NO studenta labās puses nodaļas
ON Student. Student_ID = departaments.Student_ID

Iepriekš minētajā vaicājumā studentu galds ir mūsu kreisās tabulas un departamenta tabula ir mūsu labākā galda. Saskaņā ar labās puses savienojuma darbību rezultātam jāietver visas sadaļas no nodaļas tabulas un tikai atbilstošas ​​korekcijas no studentu tabulas.

Ievērojiet rezultātu, kas iegūts no labās ārējās pievienošanās; tai ir visas sadaļas no departamenta tabulas kopā ar atbilstošajām korekcijām gan no studentu, gan departamenta tabulas. Studentu tabulā nav atrodama nodaļas tabulas Student_ID 10536 un 00954. Līdz ar to Name for Student_ID 10536 un 00954 atribūtu vērtība tiek paplašināta līdz NULL.

Pilna ārējā savienojuma definīcija

Pieņemsim, ka mums ir “ Table_A Full Outer Join Table_B ”. Tātad Table_A ir mūsu kreisā galds, jo tā parādās pa kreisi no Full Outer Join operācijas, un Table_B ir mūsu labā galda.

Pilns ārējais savienojums ir abu kombinācija - kreisais ārējais savienojums un labais ārējais savienojums . Sākotnēji tas attiecas uz iekšējo pievienošanos tabulā_A un Table_B, lai no abām tabulām ielādētu atbilstošas kopas . Tad tas paplašina tabulas_A tabulas ar NULL, kurām nav tabulas_B atbilstības. Turklāt tas paplašina šīs tabulas no tabulas_B ar NULL, kurām nav tabulas A atbilstības.

Līdz ar to pilna ārējā savienība saglabā visas vienības no kreisās, kā arī labās tabulas, kā arī abu tabulu atbilstošās kopas.

Apspriedīsim FULL Outer Join ar piemēru; mums ir divas tabulas iepriekš, studentu galda un nodaļas tabula.

Tagad mēs pielietosim pilna ārējā pievienošanās studentu galdu un nodaļas tabulu.

IZVĒLĒTIES * no studentu pilna OUTER JOIN departamenta
ON Student. Student_ID = departaments.Student_ID

Iepriekšminētajā vaicājumā studentu galds ir mūsu kreisā galda un departamenta tabula ir mūsu labākā galda. Saskaņā ar Full Outer Join, rezultātam ir jāietver visas tabulas abās grupās.

Ievērojiet rezultātu, kas iegūts no pilnas ārējās pievienošanās; tai ir visas studentu un nodaļas tabulas kopas kopā ar atbilstošajām korekcijām gan no studentu, gan departamenta tabulas. Departamenta tabulā nebija Jimmy studentu , Joseph Harry, ti, attiecīgi 10026, 02256, 56362 studentu galda. Līdz ar to departamenta tabulas atribūtu vērtības Jimmy, Joseph Harry tiek paplašinātas līdz NULL . Studentu tabulas Student_ID kolonnā nav Student_ID 10536 un 00954 . Tādējādi, atribūta vērtība Name atribūtam Student_ID 10536 un 00954 ir paplašināta līdz NULL .

Galvenās atšķirības starp kreiso, labo un pilnu ārējo savienojumu

  1. Kreisā ārējā savienojuma rezultātam ir visas kreisās tabulas kopas. Līdzīgi, labās ārējās savienības rezultātam ir visas labās tabulas sekvences. Un pilna ārējā savienojuma rezultātam ir visas tabulas gan no kreisās, gan labās tabulas.
  2. Kreisajā ārējā savienojumā kreisās tabulas kopas, kurām nav atbilstošas ​​tabulas labajā tabulā, tiek paplašinātas ar Null vērtībām labās tabulas atribūtiem. Pretī ir taisnā ārējā savienība. Un pilna ārējā savienojumā labās un kreisās tabulas labajā un kreisajā tabulā esošās tabulas no kreisās un labās tabulas tiek attiecīgi paplašinātas ar labo un kreiso tabulu atribūtiem.

Secinājums:

Uzmanieties par galda nosaukumu pozīcijām vaicājumā. Tā kā galda nosaukuma vaicājumā pozīcija nosaka, vai tabula tiks uzskatīta par kreiso tabulu vai labo tabulu.

Top