КампутарыПраграмнае забеспячэнне

MySQL JOIN: апісанне, прыклад выкарыстання каманды і рэкамендацыі

Распрацоўка баз дадзеных інтэрнэт-рэсурсаў практычна нічым не адрозніваецца ад стандартных баз дадзеных, распрацаваных у сістэме MS SQL SERVER. Як правіла, для такога роду рэсурсаў выкарыстоўваецца мова MY SQL, хоць яго можна ўжываць і да распрацоўкі стандартных праграмных прадуктаў, для лакальнага выкарыстання. Але гаворка ў артыкуле пойдзе не пра гэта.

Часта пры працы з базамі дадзеных у кожным з моў стаіць задача зрабіць выбарку даных для вывядзення ў разнастайныя справаздачы, графікі і гэтак далей. Як правіла, пры рэалізацыі такога роду задач даводзіцца выкарыстоўваць не адну, а некалькі табліц, аб'ядноўваючы іх у адзін запыт, значна ўскладняючы яго канструкцыю. Пры гэтым неабходна ўлічваць тое, як павінны будуць выводзіцца дадзеныя, як будуць «падцягвацца» табліцы і які вынік будзе максімальна прымальным для праграміста. Для вырашэння такіх задач выкарыстоўваецца адна з стандартных канструкцыя мовы MySQL - Join.

Паняцце словы Join

Мовы распрацоўкі баз дадзеных, усё роўна, што менавіта гэта за мова, за аснову бяруць стандартныя словы з англамоўных слоўнікаў (менавіта таму пры ўмове, што вы ведаеце англійская мова, вам буде нашмат прасцей працаваць з табліцамі). Для рэалізацыі падлучэння табліц у выбарку ўзята такое ж слова - Join. У мове праграмавання баз дадзеных Выкарыстоўваецца My SQL. Пераклад гэтага службовага слова ў дакладнасці такі ж, як і ў самым мове - «аб'яднанне».

Інтэрпрэтацыя канструкцыі MySQL - Join, прычым любой з іх, будзе дакладна такі ж. Калі расшыфраваць прызначэнне канструкцыі, а менавіта схему яе працы, то атрымаем наступныя значэнне: канструкцыі дазволяць сабраць патрэбныя палі з розных табліц або ўкладзеных запытаў у адну выбарку.

Віды канструкцый для аб'яднання

Калі праграмісту неабходна сабраць выбарку з некалькіх табліц і ён ведае, якія ключавыя поля ў іх і якія менавіта дадзеныя неабходныя для справаздачы, то можна скарыстацца адной з асноўных канструкцый аб'яднання, для дасягнення жаданага выніку. Асноўных канструкцый (для аб'яднання табліц) чатыры:

  1. Inner join.
  2. Cross Join.
  3. Left join.
  4. Right Join.

У залежнасці ад пастаўленай задачы, кожная з стандартных канструкцый будзе даваць розныя вынікі, што дазволіць атрымліваць справаздачы па розных параметрах у кароткі тэрміны.

Стварэнне і запаўненне табліц для далейшага выкарыстання

Перад тым як пачаць, напрыклад, разглядаць механізмы працы з канструкцыямі аб'яднання дадзеных, варта падрыхтаваць некалькі табліц, з якімі мы будзем у далейшым працаваць. Гэта дапаможа наглядна паказаць усе прынцыпы працы аператараў, акрамя таго, такім чынам пачаткоўцы лягчэй засвояць ўсе асновы праграмавання табліц.

У першай табліцы будуць апісаны некаторыя прадметы, з якімі чалавек пастаянна сустракаецца на працягу свайго жыцця.

У другой табліцы апішам некаторыя ўласцівасці аб'ектаў з першай табліцы, каб можна было ў далейшым з імі працаваць.

У цэлым двух табліц будзе дастаткова, каб на прыкладзе паказаць іх працу. Вось зараз можна прыступаць да практычнага разгляду нашых канструкцый.

Выкарыстанне Inner Join

Пры выкарыстанні канструкцыі MySQL - Join Ineer варта ўлічваць некаторыя яе асаблівасці. Дадзеная канструкцыя дазволіць выбраць з абедзвюх табліц толькі тыя запісы, якія ёсць і ў першай і ў другой табліцы. Як гэта працуе? У першай табліцы ў нас ёсць галоўны ключ - ID, які паказвае на парадкавы нумар запісаў у табліцы.

Пры стварэнні другой табліцы, гэты ж ключ выкарыстоўваецца як парадкавы нумар, прыклад можна паглядзець на малюнках. Пры выбары дадзеных аператар Select вызначыць ў выніку толькі тыя запісы, парадкавыя нумары якіх супадаюць - значыць, яны ёсць і ў першай і ў другой табліцы.

Пры выкарыстанні канструкцыі трэба разумець, якія менавіта дадзеныя неабходна атрымаць. Самая распаўсюджаная памылка, асабліва ў пачаткоўца праграміста баз дадзеных, гэта нерацыянальнае і няправільнае выкарыстанне канструкцыі Inner Join. Як прыклад, MySQL Inner Join, можна разгледзець скрыпт, які верне нам з раней апісаных і запоўненых табліц інфармацыю аб прадметах і іх уласцівасцях. Але і тут можа быць некалькі спосабаў выкарыстання канструкцыі. У гэтым плане My SQL вельмі гнуткі мову. Такім чынам, можна разгледзець прыклады выкарыстання MySQL Inner Join.

Аб'яднанне табліц без ўказанні, якіх-небудзь параметраў. У гэтым выпадку мы атрымаем вынік такога кшталту:

Калі пакажам праз службовае слова Using, што абавязкова трэба ўлічваць галоўныя ключы запісаў у табліцах, то вынік выбаркі кардынальна зменіцца. У гэтым выпадку мы атрымаем выбарку, якая верне толькі тыя радкі, якія маюць аднолькавыя галоўныя ключы.

Магчымы яшчэ і трэці варыянт выкарыстання канструкцыі, калі ў запыце праз слова «on» паказваюцца поля, па якіх павінна адбывацца аб'яднанне табліц. У такім выпадку выбарка верне наступныя дадзеныя:

Асаблівасці выкарыстання Left Join

Калі разглядаць яшчэ адзін спосаб аб'яднання табліц з дапамогай канструкцыі MySQL - Join, можна заўважыць розніцу ў дадзеных, якія выводзяцца. Такім механізмам з'яўляецца канструкцыя Left.

Выкарыстанне канструкцыі Left Join MySQL мае некаторыя асаблівасці і, як і Inner, патрабуе дакладнага разумення выніку, які неабходна атрымаць.

У дадзеным выпадку спачатку будуць абраныя усе запісы з першай табліцы, а ў далейшым да іх будуць далучаны запісы з другой табліцы уласцівасцяў. Пры гэтым, калі ў першай табліцы ёсць запіс, напрыклад, "зэдлік", а ў другой табліцы няма ніводнага ўласцівасці для яе, то аператар Left выведзе насупраць гэтай запісы значэнне null, што кажа праграмісту аб тым, што прыкмет па гэтаму віду прадмета няма .

Выкарыстанне гэтай канструкцыі дазволяць вызначаць, па якіх палях або, напрыклад, таварах у краме не выстаўлена цана, гарантыйны тэрмін і так далей.

Прыклад выкарыстання Left

Для разгляду на практыцы аператара канструкцыі Left Join MySQL выкарыстоўваем раней апісаныя табліцы. Скажам, неабходна выбраць ўвесь спіс тавараў, якія ёсць у краме, і праверыць па якіх з іх не прастаўленыя прыкметы або ўласцівасці. У такім выпадку выбарка выведзе на экран ўсе тавары, а па тых, у якіх няма ўласцівасці, будуць прастаўленыя пустыя значэння.

Выкарыстанне Where ў канструкцыі Join

Як параметр, аб'яднанне можа ўключаць не толькі ўказанні палёў, па якіх неабходна вырабіць падлучэнне табліц, але можа і ўключаць аператар ўмовы Where.

Для прыкладу разгледзім скрыпт, які павінен вярнуць нам толькі тыя запісы, па якіх не прастаўлены прыкмета. У такім выпадку ў канструкцыю Join неабходна дадаць аператар ўмовы і паказаць, што менавіта трэба вярнуць як вынік.

Пры выкарыстанні ў MySQL Join - Where трэба дакладна разумець, што будуць паказаны толькі тыя запісы, да якіх адносіцца азначанае ўмова, і выбарка тады будзе выглядаць наступным чынам:

Такія запыты дазваляюць рабіць выбаркі па канкрэтных дадзеных, якія адносяцца да абранага праграмістам умове. Такіх умоў можна паказваць некалькі, максімальна пры гэтым ўдакладняючы параметры выбару дадзеных з аб'яднаных табліц.

Выкарыстанне Join для змены дадзеных у табліцах

Канструкцыя Join, па сутнасці, універсальная. Яна дазваляе не толькі рабіць разнастайныя выбаркі, але і падлучаць у запыты ад адной да некалькіх табліц, ўводзіць дадатковыя ўмовы ў выбарку. Канструкцыю можна таксама выкарыстоўваць і для іншых аперацый з дадзенымі. Так, Join можна выкарыстоўваць для змены дадзеных у табліцы. Дакладней сказаць, для удакладнення ўмоў ў табліцы або жа ў тых выпадках, калі трэба абнавіць дадзеныя ў некалькіх табліцах па адных і тых жа ўмовах.

Для прыкладу разгледзім такую задачу. Дадзена тры табліцы, у якіх маюцца некаторыя дадзеныя. Трэба правесці змена дадзеных у абедзвюх табліцах, выкарыстоўваючы адзін запыт. Як раз для вырашэння такога роду заданняў можна ўжываць у камандзе Update канструкцыю Join. Сам тып канструкцыі Join залежыць, гэтак жа, як і ў выпадку з выбаркай дадзеных, ад выніку, які хоча атрымаць праграміст.

Разгледзім самы просты прыклад. Трэба абнавіць адным запытам дадзеныя па адным і тым жа умовам. Такога роду запыты будуюцца для аптымізацыі працы з базай дадзеных. Навошта пісаць розныя запыты для кожнай з табліц, калі можна правесці ўсе маніпуляцыі з дадзенымі адным запытам? Прыклад MySQL Update Join ў нашым выпадку будзе такім:

Пабудова складаных запытаў

Даволі часта пры працы з базай дадзеных неабходна будаваць запыты не толькі з аб'яднаннем некалькіх табліц, але і з выкарыстаннем подзапросов. Такія задачы даволі складаныя для разумення пачаткоўца праграміста баз дадзеных. Складанасць складаецца ў тым, што даводзіцца прадумваць кожны крок, вызначаць, якія дадзеныя з якой табліцы або запыту неабходна атрымаць і як у далейшым з імі трэба будзе працаваць.

Для больш канкрэтнага разумення можна разгледзець (у MySQL Join) прыклады складаных запытаў. Калі вы пачатковец і толькі пачынаеце працаваць з базамі дадзеных, то такі трэнінг пойдзе толькі на карысць. Ідэальным варыянтам, будуць MySQL Left Join прыклады.

Дадзены запыт верне нам 58 запісаў аб дагаворах продажу, па якіх запоўнены ці існуе баланс грашовых сродкаў на выбраную дату. У дадзеным выпадку гэта бягучая дата. Таксама ў выбарку дададзена ўмова, што ў назве дагавора павінны быць сымбалі - «123». Якая выводзіцца на экран інфармацыя (дадзеныя), будзе мець сартаванне - ўпарадкаванасць па нумары дагавора.

Наступны прыклад выведзе на экран дадзеныя аб усіх плацяжах, у якіх будзе паказаны нумар дамовы.

выкарыстанне подзапросов

Як ужо гаварылася раней, пры працы з базамі дадзеных можна аб'яднаць не толькі табліцы, але і табліцу з запытам. Такая канструкцыя выкарыстоўваецца ў асноўным для паскарэння працы запыту і яго аптымізацыі.

Да прыкладу, калі неабходна з табліцы, якая мае некалькі соцень палёў і, скажам, тысячу запісаў, выбраць усяго два полі, то варта выкарыстоўваць запыт, які верне толькі неабходныя палі, і аб'яднаць яго з асноўнай выбаркай дадзеных. Як прыклад MySQL Join Select можна разгледзець запыт такога кшталту:

Гэта не ўсе спосабы выкарыстання стандартных канструкцый MySQL, а толькі стандартныя. Як выкарыстоўваць канструкцыю Join і ў якіх яе відах, вырашае сам праграміст, але варта памятаць і ўлічваць тое, які вынік трэба атрымаць пры выкананні запыту.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 be.birmiss.com. Theme powered by WordPress.