Дотоод холболт ба гадна холболтын ялгаа

Дотоод холболт ба гадна холболтын ялгаа
Дотоод холболт ба гадна холболтын ялгаа

Видео: Дотоод холболт ба гадна холболтын ялгаа

Видео: Дотоод холболт ба гадна холболтын ялгаа
Видео: Ремонт на балконе Ошибки монтажа теплого пола. #37 2024, Долдугаар сарын
Anonim

Дотоод нэгдэл ба гаднах нэгдэл

Дотоод нэгдэл ба Гадаад нэгдэл нь мэдээллийн сангийн асуулга боловсруулахад хэрэглэгддэг SQL холболтын хоёр арга юм. Эдгээр нь нэгдэх өгүүлбэрийн гэр бүлд хамаардаг (нөгөө хоёр нь Зүүн ба Баруун нэгдлүүд). Гэсэн хэдий ч, тусгай нөхцөл байдалд ашиглаж болох Self Join байдаг. Join-ийн зорилго нь нийтлэг утгуудыг ашиглан хоёр хүснэгтэд талбаруудыг нэгтгэх явдал юм. Эдгээр нэгдлүүд нь мэдээллийн сан дахь олон хүснэгтийн бичлэгүүдийг нэгтгэдэг. Энэ нь үр дүнгийн багц үүсгэдэг бөгөөд тэдгээрийг өөр хүснэгт болгон хадгалах боломжтой.

Inner Join гэж юу вэ?

Хамгийн өргөн хэрэглэгддэг SQL Join үйлдэл нь Inner Join юм. Үүнийг программуудад ашигладаг анхдагч холболтын төрөл гэж үзэж болно. Дотоод нэгдэл нь хоёр хүснэгтийг нэгтгэхийн тулд join-predicate-г ашиглана. Хоёр хүснэгтийг А ба В гэж үзвэл нэгдэх-предикат нь A ба B мөрүүдийг харьцуулж, предикатад тохирох бүх хосыг олох болно. Үр дүнг үүсгэхийн тулд A ба B хүснэгтийн бүх ханасан мөрүүдийн баганын утгыг нэгтгэнэ. Үүнийг эхлээд бүх бичлэгийн хөндлөн холболтыг (декарт үржвэр) аваад дараа нь зөвхөн нэгдэх-пдикатыг хангасан бичлэгүүдийг буцаана гэж үзэж болно. Гэсэн хэдий ч бодит байдал дээр декартын бүтээгдэхүүнийг тооцоолдоггүй, учир нь энэ нь маш үр ашиггүй юм. Оронд нь хэш нэгдэх эсвэл эрэмбэлэх нэгтгэх нэгдлийг ашигладаг.

Outer Join гэж юу вэ?

Дотоод нэгдэлээс ялгаатай нь гаднах холболт нь тохирох бичлэг олдохгүй байсан ч бүх бүртгэлийг хадгалдаг. Энэ нь үр дүнд харагдахын тулд гадаад холболтод тохирох бичлэгийг олохын тулд бичлэг хэрэгтэй гэсэн үг юм. Үүний оронд энэ нь бүх бичлэгийг буцаана, гэхдээ тохирохгүй бичлэгүүд нь хоосон утгатай байна. Гаднах холболтыг гурван дэд ангилалд хуваадаг. Тэдгээр нь зүүн гадна талын нэгдэл, баруун гадна талын нэгдэл, бүрэн гаднах холболт юм. Энэ ялгаа нь тохирохгүй бичлэг олдох үед аль хүснэгтийн мөрийг (зүүн хүснэгт, баруун хүснэгт эсвэл хоёр хүснэгт) хадгалахад суурилдаг. Зүүн гадна талын холболтууд (мөн зүүн талын нэгдэл гэж нэрлэдэг) зүүн хүснэгтийн бүх бүртгэлийг хадгалдаг. Энэ нь тоо таарч байгаа бичлэгүүд нь тэг байсан ч гэсэн үр дүнгийн хүснэгтэд бичлэгүүд байх боловч В-ийн бүх баганад тэг утгууд байх болно. Өөрөөр хэлбэл зүүн хүснэгтийн бүх утгыг баруун талаас таарсан утгуудаар буцаана гэсэн үг. хүснэгт (эсвэл тохирохгүй бол хоосон утгууд). Хэрэв зүүн талын хүснэгтийн олон мөрийн утгууд нь баруун талын хүснэгтийн нэг мөртэй таарч байвал баруун талын хүснэгтийн мөр шаардлагатай бол давтагдана. Баруун гадна талын холболт нь зүүн гадна талын холболттой бараг төстэй боловч хүснэгтийг боловсруулахад хүндэтгэлтэй ханддаг. Энэ нь үр дүн нь баруун хүснэгтийн бүх мөрүүдийг дор хаяж нэг удаа таарч байгаа зүүн хүснэгтийн утгуудтай (мөн тохирохгүй баруун утгуудын хувьд null утгууд) гэсэн үг юм. Бүрэн гадна холболт нь зүүн болон баруун гадна талын холболтоос илүү өргөн хүрээтэй байдаг. Үүний үр дүнд зүүн болон баруун гадна талыг хослуулан хэрэглэснээр үр нөлөөг нэгтгэнэ.

Дотоод холболт болон гаднах холболтын ялгаа нь юу вэ?

Дотоод нэгдэл нь үр дүнд нь тохирохгүй мөрүүдийг хадгалахгүй, харин гаднах нэгдэл нь дор хаяж нэг хүснэгтийн бүх бүртгэлийг хадгалах болно (ямар гадна холболтыг ашигласанаас хамаарна). Тиймээс, үр дүнгийн хүснэгтэд тохирохгүй мөрүүдэд мэдээлэл байхгүй байх нь зохимжгүй тул та үргэлж гаднах холболтын аль нэгийг (дотоод холболтын оронд) ашиглах хэрэгтэй. Хэрэв тохирох зүйл олдохгүй бол дотоод холболт үр дүнг гаргахгүй байж магадгүй. Гэхдээ гаднах холболт нь тохирох мөргүй байсан ч үргэлж үр дүнгийн хүснэгтийг үүсгэдэг. Дотоод нэгдэл нь үргэлж утгууд бүхий хүснэгтүүдийг буцаана (хэрэв буцаж ирвэл). Гэхдээ гаднах нэгдэл нь тэг утгатай хүснэгтүүдийг үүсгэж болзошгүй.

Зөвлөмж болгож буй: