ساندانكى جەدۋەللەر ئارا ئۇلىنىش مۇناسىۋەتلىرى ھەققىدە جۆيلۈمىلەر

ئاۋۋال ساندان ئۇقىمىغا ئېنىقلىما بەرسەك: چايدان-چاي ساقلايدىغان يەر، كۈلدان-كۈل ساقلايدىغان يەر، مۇشۇ بويىچە سۈزلىسەك ساندان شۇ سانلىق-مەلۇماتلارنى ساقلايدىغان يەر. خەنچىدە 数据库 ئىنگىلىزچىدە database ديمىز.


سانداندىكى جەدۋەللەر ئارا ئۇلىنىش مۇناسىۋەتلىرى ھەققىدە 

سانلىق مەلۇماتلار ئارا ئۆزئارا مۇناسىۋەت بولمىسا بۇ سانلىق مەلۇماتنىڭ مەۋجۇت بولىشىنىڭ ئەھمىيىتى قالمايدۇ. مەسلەن ئاددىي مىسالدىن بىرنى ئالساق. بىر ئوقۇغۇچى بار، بۇ ئوقۇغۇچى مەلۇم بىر سىنىپ (مەكتەپ)قا تەۋە، بۇ ئوقۇغۇچى بىر كۈندە 8سائەتتە 8خىل دەرىس ئوقۇيدۇ. ھەپتىنىڭ ھەر بىر كۈنىدە ئوقۇيدىغان دەرىس سېتكىسى ئوخشىمايدۇ دىگەندەك. مانا بۇلار سانلىق مەلۇماتلار ئارىسىدىكى مۇناسىۋەت.


سانلىق-مەلۇماتلار ئارىسىدىكى مۇناسىۋەتنىڭ تۈزۈلىشى.

سانلىق-مەلۇماتلار ئوتتۇرىسىدىكى مۇناسىۋەت ئادەتتە ئالاقە مودىلى ئارقىلىق ئەمەلگە ئاشىدۇ. ئەمدى بۇ يەردىكى ئالاقە مودىلى دىگىنىمىز ھەقىيقى ئوبىكىت (entity) ۋە مۇناسىۋەت (relationship) دىن ئىبارەت ئىككى نۇقتا ئارقىلىق ئەمەلگە ئاشىدۇ. ئوبىكىتلارنىڭ ئ‍ۆزىنىڭ خاسلىقلىرى بولىدۇ.مۇناسىۋەت دەل ئوبىكىتلار ئارىسىدىكى ئالاقىنى بەلگىلەيدۇ.

مەسىلەن يۇقاردىكى مىسالنى تېخىمۇ ئىنچىكىرەك ئوپراتسىيە قىلساق. مەلۇم بىر ئوقۇغۇچى پەقەت ۋە پەقەت بىرلا سىنىپ(مەكتەپ) كە تەۋە، بۇ ئوقۇغۇچى كۈندە ئوخشىمىغان دەرىس ئوقۇيدۇ. ئۇ ئوقۇغۇچى كۈندە كۆپلىگەن ئوقۇتقۇچىلارنىڭ دەرىسىنى ئاڭلايدۇ. ئوقۇتقۇچىلارمۇ كۆپلىگەن سىنىپلارغا دەرىس بېرىدۇ.


بۇلار ئارىسىدىكى مۇناسىۋەت

ئوقۇغۇچى-سىنىپ(مەكتەپ) : بىرمۇ-بىر مۇناسىۋەت.

ئوقۇغۇچى- دەرىس تۈرى: بىرنىڭ كۆپكە بولغان مۇناسىۋەت.

ئوقۇتقۇچى-ئ‍وقۇغۇچى: كۆپنىڭ كۆپكە بولغان مۇناسىۋەت.


MySQL دىكى joinجۈملىسى

كۆپىنچىمىز mysqlساندانى ئىشلىتىمىز. joinجۈملىسىمۇ كۆپ ئۇچرايدۇ. mysqlدىكى joinجۈملىسى دەل سانداندىكى جەدۋەللەر ئارا مۇناسىۋەتنى بىر تەرەپ قىلىدىغان ھالقىلىق مىخانىزىمدىن ئىبارەت.

 

ساندىكى جەدۋەللەرنىڭ ئۇلىنىشى ئادەتتە تۆۋەندىكىدەك بىر قانچە تۈرلۈك بولىدۇ.

ئىچكى ئۇلىنىش- 内连接 inner join 

سىرتقى ئۇلىنىش- 外连接 outer join

سول ئۇلىنىش- 左连接 left join

ئوڭ ئۇلىنىش- 右连接 right join

تولۇق ئۇلىنىش- 全连接 full join


رەسىملىك كۆرسەتمە

215c2a1f3f06f1894cb914da5d5b734c.png


9fae56e3076ae65ef284b4e97ee9a103.png


aa62d4c23864b6dc3b83e2e746e413d4.png


0f0e48e8e621e83eb022f258e75333af.png


ئەمەلىيەتتە بۇ يەردىكى ئاتالمىش جەدۋەللەر ئارا ئۇلىنىش نەق ئىككى جەدۋەلدىكى ئۆز ئارا باغلىنىشى بار ئىككى كالمۇن ئارقىلىق ئورتاقلىققا ئىگە بولغان سانلىق مەلۇمات توپلىمىغا ئېرىشىش دىگەنلىكتۈر. خۇددى بىز تولۇقسىز ماتىماتىكىسىدا ئۆگەنگەن كېسىشمە توپلام، بېرىكمە توپلام، بالا توپلام، ئانا توپلام دىگەندەكلەرگە ئوخشاش ئۇقۇم.


تەييارلىق

بۇ يەردە مەن 3 تال جەدىۋەل تەييارلىدىم. ئوقۇغۇچى ئۇچۇرى جەدۋىلى(students)، سىنىپ ئۇچۇرى جەدۋىلى(classroom) ۋە ئوقۇغۇچىلارنىڭ سىنىپقا بۆلۈنۈش ئەھۋالى جەدۋىلى(student_classroom). بۇ جەدۋەلدىكى ئۇچۇرلارنىڭ ئەھۋالى تۆۋەندىكىدەك.


a4216558a383a0f68d141d3415b6b484.png

6e2fda6d3bcf83fd8c35b4d36c64312c.png

a32be98f30573d8e3bb8f196a5d743b1.png


تەجرىبە

ئىچكى ئۇلىنىش

 يەنى inner joinپەقەت A ۋە B دىن ئىبارەت ئىككى جەدۋەلنىڭ ئورتاق قىسمىنى تەكشۈرۈپ چىقىدۇ. مەسىلەن mysqlدا inner join جۈملىسىدىن بىرنى مىسال ئالايلى.


76c766a36db56607ad344c2f16f1d430.png


ئوڭ ئۇلىنىش

 يەنى right joinبولسا A ۋە B دىن ئىبارەت ئىككى جەدۋەلنىڭ ئورتاق قىسمى ۋە A جەدۋەلدىكى بارلىق ئۇچۇرنى تەكشۈرۈپ چىقىدۇ. مەسىلەن mysqlدا right join جۈملىسىدىن بىرنى مىسال ئالايلى.

f2460b76b8f3425f6cbb6c55cdcd2d42.png


سول ئۇلىنىش

 يەنى left joinبولسا ئوڭ ئۇلىنىش يەنى right joinنىڭ دەل ئەكسى. ئوڭ ئۇلىنىش  A ۋە B دىن ئىبارەت ئىككى جەدۋەلنىڭ ئورتاق قىسمى ۋە B جەدۋەلدىكى بارلىق ئۇچۇرنى تەكشۈرۈپ چىقىدۇ. مەسىلەن mysqlدا left join جۈملىسىدىن بىرنى مىسال ئالايلى.

a51e7bf6bb903d6ac286f2341f0d1517.png


تولۇق ئۇلىنىش 

يەنى full join بۇ ئەڭ ئاددىيىسى. تولۇق ئۇلىنىش A ۋە B دىن ئىبارەت ئىككى جەدۋەلدىكى بارلىق ئۇچۇرنى تەكشۈرۈپ چىقىدۇ. مەسىلەن mysqlدا full join جۈملىسىدىن بىرنى مىسال ئالايلى.

69a1577dd337fbee27c06a12827842ef.png


گېرەلەشمە ئۇلىنىش


06.png

يەنە بىر ئالاھىدىرەك ئۇلىنىش شەكلى- گېرەلەشمە ئۇلىنىش (cross join)مۇ بار بولۇپ، A جەدۋەلدە nدانە سانلىق-مەلۇمات، Bجەدۋەلدە mدانە سانلىق مەلۇمات بار دىسەك، ئىككى جەدۋەلنى گېرەلەشمە ئۇلىنىش (cross join) بويىچە بىر تەرەپ قىلغاندىن كىيىن n*m يەنى (n ۋە m نىڭ كۆپەيتىلمىسى) دانە نەتىجە چىقىدۇ. 


خۇلاسە


05.jpg


ئاخىرىدا

يېزىپ يېزىپ ئۆزەمنىڭ كاللامۇ قېيىپ كەتتى ھىي، يازمامدا يىتەرسىزلىكلەر بولسا سىلەرمۇ جۆيلۈپ باقمامسىلەر.


Stilly
1 ئەزا بۇ يازمىنى ياقتۇردى
جەمئىي 3 ئىنكاس يېزىلدى
  • TARQAT 3 يىل بۇرۇن
    ئەينى چاغلاردا يۈزتۇرانە ئىمتھاندا مەندىن SQL تۇغۇرلۇق مۇنداق بىر سۇئالنى سورىغانتى، 20000 دانە ئۇچۇر بار جەدۋەلدىن بىر ئۇچۇر ئىزدەيمىز، بۇ ئۇچۇر يەتتىنچى قۇردىلا بار، بۇ ئۇچۇرنى قانداق قىلىپ ئەڭ تىزسۈرەتتە ئىرىشكىلى بولىدۇ دەپ سورىغانتى.قانداق جاۋاپ بەرگىنىم ئىسىمدە يوق لىكىن توغرا جاۋاپ بىرىپتىكەنمەنتۇق[لول لول لول]
    Stilly 3 يىل بۇرۇن
    قانداق تاپىمىزكەنتۇق؟ ئورتاقلاشمامدۇق مىيەدە
  • &&akesa 3 يىل بۇرۇن
    ئۇنداق قىمماي JavaScript نىمۇ باشلاپ قويساڭلار بولىتى دەيمەن [ھىڭگايغان چىراي ئىپادىسى]
    Stilly 3 يىل بۇرۇن
    قايسى يېرىنى باشلايمىز JavaScript نىڭ؟ vuejs مۇ يا [ھىڭگايغان چىراي ئىپادىسى]
  • TARQAT 3 يىل بۇرۇن
    ھە ئەمدى ئىسىمغا كەلدى،mysql نىڭ 索引 دەپ بىر نەرسىنى بار ،مەسلەن ئادەتتە بىز mysql جۈملىلىسى ئارقىلىق بىر مەزمۇن ئىزدىىدۇق،بىز ئىزدىگەن ئۇچۇر 20000 قۇرلۇق جەدۋەلنىڭ 7-چى قۇردىلا بار،ئادەتتە ئەھۋالدا مۇشۇ 20000 قۇر ئۈچۈن بىرمۇ بىر سىىلىشتۇرۇپ چىقىدۇ،دىمەك 20000 مىڭ قىتىم سىلىشتۇرۇش ئىلىپ بارىدۇ،ئەگەر 索引 بولسا 7 قىتم سىلىشتۇرۇپلا ئاخىرنى سىلىشتۇرمايدۇ،for جۈملىسىنىڭ ئىچىگە break نى قوشقانغا ئوخشىشىپ كىتىدۇ
    Stilly 3 يىل بۇرۇن
    نادىر ئىنكاس قىلاي دىسەم نادىرلايدىغان ئىقتىدار يوقكەن 🤗
جۇغلانما ئەگەشكۈچى ئەگەشكىنى
622 58 2
Follow Learnfans

Github Weibo