JOIN-ulanish - gorizontal ma'lumotlarni ulash operatsiyalari
Bu erda ma'lumotlar bazasi strukturasini bilish biz uchun juda foydalidir, ya'ni.unda jadvallar mavjud, bu jadvallarda qanday ma'lumotlar saqlanadi va jadvalning qaysi sohalari bir-biri bilan bog'liq. Avvalo, ma'lumotlar bazasining tuzilishini har doim yaxshilab o'rganing, chunki oddiy so'rov faqat qaerdan kelganini bilganingizda yozilishi mumkin. Bizda 3 ta Employees, Departments va Positions jadvallari mavjud. Men bu erda birinchi qismning diagrammasini beraman:
agar RDB mohiyati bo'linsa va hukmron bo'lsa, unda birlashma operatsiyalarining mohiyati jadvallar bo'yicha buzilgan ma'lumotlarni, ya'ni ularni inson qiyofasiga qaytarish uchun yana bir marta yopishtiriladi.
Oddiy qilib aytganda, jadvalning gorizontal aloqasi boshqa jadvallar bilan ulardan etishmayotgan ma'lumotlarni olish uchun ishlatiladi. Direktor uchun haftalik hisobot bilan misolni eslang, Agar siz employees jadvalidan so'ralsangiz, yakuniy natijaga erishish uchun bo'lim jadvalidagi "bo'lim nomi" maydoni yo'q edi.
Nazariyadan boshlaylik. Ulanishning beshta turi mavjud:
JOIN - CHAP_TABLITSA JOIN o'ng_tablitsa on shart_sho " basi
Left JOIN - CHAP_TABLITSA chap JOIN o'ng_tablitsa on shartlari_sho " basi
Right JOIN - chap_tablitsa right join o'ng_tablitsa on shartlari_sho " basi
FULL JOIN-chap_tablitsa Full join o'ng_tablitsa on shartlari_sho " basi
CROSS JOIN - CHAP_TABLITSA o'tish JOIN o'ng_tablitsa
Qisqa sintaksis
|
To'liq sintaksis
|
Tavsif (bu har doim ham hamma uchun aniq emas. Shunday qilib, agar aniq bo'lmasa, misollarni ko'rib chiqqandan keyin bu erga qaytib boring.)
|
JOIN
|
INNER JOIN
|
Chap_tablitsy va o'ng_tablitsy satrlaridan birlashtirilgan va faqat shartlar bajariladigan satrlarni qaytaradi.
|
LEFT JOIN
|
LEFT OUTER JOIN
|
Chap_tablitsy (kalit so'z chap) ning barcha satrlari qaytariladi. Ma'lumotlar o'ng_tablitsy faqat chap_tablitsy satrlari bilan to'ldiriladi, ular uchun shartlar bajariladi_sho " rish. Yo'qotilgan ma'lumotlar uchun o'ng_tablitsy satrlari o'rniga NULL qiymatlari kiritiladi.
|
RIGHT JOIN
|
RIGHT OUTER JOIN
|
Barcha satrlar o'ng_tablitsy (o'ng kalit so'z) ga qaytariladi. Ma'lumotlar chap_tablitsy faqat ushbu satrlar bilan to'ldiriladi o'ng_tablitsy, ular uchun shartlar bajariladi_sho " rish. Yo'qotilgan ma'lumotlar uchun chap_tablitsy satrlari o'rniga NULL qiymatlari kiritiladi.
|
FULL JOIN
|
FULL OUTER JOIN
|
Chap_tablitsy va o'ng_tablitsy barcha satrlari qaytib keladi. Agar chiziqlar uchun chap_tablitsy va o'ng_tablitsy shartlar bajarilsa_shooking, ular bir qatorda birlashtiriladi. Shartlar bajarilmaydigan satrlar uchun, null-qiymatlar chap_tablitsy o'rniga yoki o'ng_tablitsy o'rniga kiritiladi, satrda qaysi jadval mavjud emasligiga qarab.
|
CROSS JOIN
|
-
|
Har bir satrni chap_tablitsa-ni o'ng_tablitsa-ning barcha satrlari bilan birlashtirish. Ushbu turdagi birikma ba'zan dekartik ish deb ataladi.
|
Jadvalda ko'rinib turganidek, qisqacha to'liq sintaksisi faqat ichki yoki tashqi so'zlarning mavjudligi bilan farq qiladi.
Shaxsan men har doim so'rovlarni yozishda faqat qisqa sintaksisni ishlataman, shuning uchun:
Bu qisqa va so'rovni ortiqcha so'zlar bilan yopishmaydi;
LEFT, o'ng, to'liq va xochga ko'ra, bu qanday bog'liqlik haqida aniq, shuning uchun faqat JOIN;
Men bu holatda INNER va OUTER so'zlarini yangi boshlanuvchilarni ko'proq aralashtiradigan keraksiz rudimentlar deb hisoblayman.
Lekin, albatta, bu mening shaxsiy imtiyozim, ehtimol kimdir uzoq vaqt yozishni yaxshi ko'radi va u bu erda uning jozibalarini ko'radi.
Ulanishning har bir turini tushunish juda muhimdir, chunki bu yoki boshqa turdagi foydalanishdan so'rov natijalari farq qilishi mumkin. Xuddi shu so'rov natijalarini turli xil ulanish turlarini qo'llash bilan Solishtiring, farqni ko'rishga harakat qiling va davom eting (biz yana qaytib kelamiz)
-- JOIN вернет 5 строк
Do'stlaringiz bilan baham: |