ئاۋۋال ساندان ئۇقىمىغا ئېنىقلىما بەرسەك: چايدان-چاي ساقلايدىغان يەر، كۈلدان-كۈل ساقلايدىغان يەر، مۇشۇ بويىچە سۈزلىسەك ساندان شۇ سانلىق-مەلۇماتلارنى ساقلايدىغان يەر. خەنچىدە 数据库 ئىنگىلىزچىدە database ديمىز.
سانلىق مەلۇماتلار ئارا ئۆزئارا مۇناسىۋەت بولمىسا بۇ سانلىق مەلۇماتنىڭ مەۋجۇت بولىشىنىڭ ئەھمىيىتى قالمايدۇ. مەسلەن ئاددىي مىسالدىن بىرنى ئالساق. بىر ئوقۇغۇچى بار، بۇ ئوقۇغۇچى مەلۇم بىر سىنىپ (مەكتەپ)قا تەۋە، بۇ ئوقۇغۇچى بىر كۈندە 8سائەتتە 8خىل دەرىس ئوقۇيدۇ. ھەپتىنىڭ ھەر بىر كۈنىدە ئوقۇيدىغان دەرىس سېتكىسى ئوخشىمايدۇ دىگەندەك. مانا بۇلار سانلىق مەلۇماتلار ئارىسىدىكى مۇناسىۋەت.
سانلىق-مەلۇماتلار ئوتتۇرىسىدىكى مۇناسىۋەت ئادەتتە ئالاقە مودىلى ئارقىلىق ئەمەلگە ئاشىدۇ. ئەمدى بۇ يەردىكى ئالاقە مودىلى دىگىنىمىز ھەقىيقى ئوبىكىت (entity) ۋە مۇناسىۋەت (relationship) دىن ئىبارەت ئىككى نۇقتا ئارقىلىق ئەمەلگە ئاشىدۇ. ئوبىكىتلارنىڭ ئۆزىنىڭ خاسلىقلىرى بولىدۇ.مۇناسىۋەت دەل ئوبىكىتلار ئارىسىدىكى ئالاقىنى بەلگىلەيدۇ.
مەسىلەن يۇقاردىكى مىسالنى تېخىمۇ ئىنچىكىرەك ئوپراتسىيە قىلساق. مەلۇم بىر ئوقۇغۇچى پەقەت ۋە پەقەت بىرلا سىنىپ(مەكتەپ) كە تەۋە، بۇ ئوقۇغۇچى كۈندە ئوخشىمىغان دەرىس ئوقۇيدۇ. ئۇ ئوقۇغۇچى كۈندە كۆپلىگەن ئوقۇتقۇچىلارنىڭ دەرىسىنى ئاڭلايدۇ. ئوقۇتقۇچىلارمۇ كۆپلىگەن سىنىپلارغا دەرىس بېرىدۇ.
ئوقۇغۇچى-سىنىپ(مەكتەپ) : بىرمۇ-بىر مۇناسىۋەت.
ئوقۇغۇچى- دەرىس تۈرى: بىرنىڭ كۆپكە بولغان مۇناسىۋەت.
ئوقۇتقۇچى-ئوقۇغۇچى: كۆپنىڭ كۆپكە بولغان مۇناسىۋەت.
كۆپىنچىمىز mysqlساندانى ئىشلىتىمىز. joinجۈملىسىمۇ كۆپ ئۇچرايدۇ. mysqlدىكى joinجۈملىسى دەل سانداندىكى جەدۋەللەر ئارا مۇناسىۋەتنى بىر تەرەپ قىلىدىغان ھالقىلىق مىخانىزىمدىن ئىبارەت.
ساندىكى جەدۋەللەرنىڭ ئۇلىنىشى ئادەتتە تۆۋەندىكىدەك بىر قانچە تۈرلۈك بولىدۇ.
ئىچكى ئۇلىنىش- 内连接 inner join
سىرتقى ئۇلىنىش- 外连接 outer join
سول ئۇلىنىش- 左连接 left join
ئوڭ ئۇلىنىش- 右连接 right join
تولۇق ئۇلىنىش- 全连接 full join
ئەمەلىيەتتە بۇ يەردىكى ئاتالمىش جەدۋەللەر ئارا ئۇلىنىش نەق ئىككى جەدۋەلدىكى ئۆز ئارا باغلىنىشى بار ئىككى كالمۇن ئارقىلىق ئورتاقلىققا ئىگە بولغان سانلىق مەلۇمات توپلىمىغا ئېرىشىش دىگەنلىكتۈر. خۇددى بىز تولۇقسىز ماتىماتىكىسىدا ئۆگەنگەن كېسىشمە توپلام، بېرىكمە توپلام، بالا توپلام، ئانا توپلام دىگەندەكلەرگە ئوخشاش ئۇقۇم.
بۇ يەردە مەن 3 تال جەدىۋەل تەييارلىدىم. ئوقۇغۇچى ئۇچۇرى جەدۋىلى(students)، سىنىپ ئۇچۇرى جەدۋىلى(classroom) ۋە ئوقۇغۇچىلارنىڭ سىنىپقا بۆلۈنۈش ئەھۋالى جەدۋىلى(student_classroom). بۇ جەدۋەلدىكى ئۇچۇرلارنىڭ ئەھۋالى تۆۋەندىكىدەك.
يەنى inner joinپەقەت A ۋە B دىن ئىبارەت ئىككى جەدۋەلنىڭ ئورتاق قىسمىنى تەكشۈرۈپ چىقىدۇ. مەسىلەن mysqlدا inner join جۈملىسىدىن بىرنى مىسال ئالايلى.
يەنى right joinبولسا A ۋە B دىن ئىبارەت ئىككى جەدۋەلنىڭ ئورتاق قىسمى ۋە A جەدۋەلدىكى بارلىق ئۇچۇرنى تەكشۈرۈپ چىقىدۇ. مەسىلەن mysqlدا right join جۈملىسىدىن بىرنى مىسال ئالايلى.
يەنى left joinبولسا ئوڭ ئۇلىنىش يەنى right joinنىڭ دەل ئەكسى. ئوڭ ئۇلىنىش A ۋە B دىن ئىبارەت ئىككى جەدۋەلنىڭ ئورتاق قىسمى ۋە B جەدۋەلدىكى بارلىق ئۇچۇرنى تەكشۈرۈپ چىقىدۇ. مەسىلەن mysqlدا left join جۈملىسىدىن بىرنى مىسال ئالايلى.
يەنى full join بۇ ئەڭ ئاددىيىسى. تولۇق ئۇلىنىش A ۋە B دىن ئىبارەت ئىككى جەدۋەلدىكى بارلىق ئۇچۇرنى تەكشۈرۈپ چىقىدۇ. مەسىلەن mysqlدا full join جۈملىسىدىن بىرنى مىسال ئالايلى.
يەنە بىر ئالاھىدىرەك ئۇلىنىش شەكلى- گېرەلەشمە ئۇلىنىش (cross join)مۇ بار بولۇپ، A جەدۋەلدە nدانە سانلىق-مەلۇمات، Bجەدۋەلدە mدانە سانلىق مەلۇمات بار دىسەك، ئىككى جەدۋەلنى گېرەلەشمە ئۇلىنىش (cross join) بويىچە بىر تەرەپ قىلغاندىن كىيىن n*m يەنى (n ۋە m نىڭ كۆپەيتىلمىسى) دانە نەتىجە چىقىدۇ.
يېزىپ يېزىپ ئۆزەمنىڭ كاللامۇ قېيىپ كەتتى ھىي، يازمامدا يىتەرسىزلىكلەر بولسا سىلەرمۇ جۆيلۈپ باقمامسىلەر.