Кампутары, Праграмаванне
Аператар SQL INNER JOIN: прыклады, сінтаксіс і асаблівасці
Распрацоўка любой базы дадзеных мае на ўвазе не толькі стварэнне і напаўненне табліц разнастайнай інфармацыяй, але і далейшую працу з дадзенымі. Для карэктнага выканання разнастайных задач па выбары дадзеных з табліц і фарміраванні справаздач, выкарыстоўваецца стандартная канструкцыя Select.
Выбаркі дадзеных з табліц
Калі разглядаць задачу выбару дадзеных або пабудовы некаторага справаздачы, можна вызначыць узровень складанасці дадзенай аперацыі. Як правіла, пры працы з сур'ёзнымі (па аб'ёме інфармацыі) базамі дадзеных, якія фармуюцца, напрыклад, у інтэрнэт-крамах або буйных кампаніях, выбарка дадзеных не будзе абмяжоўвацца толькі адной табліцай. Як правіла, выбаркі могуць быць з даволі вялікай колькасці не толькі звязаных паміж сабой табліц, але і ўкладзеных запытаў / подзапросов, якія складае сам праграміст, у залежнасці ад пастаўленай перад ім задачы. Для выбаркі з адной табліцы можна выкарыстоўваць найпростую канструкцыю:
Select * from Person |
дзе Person - імя табліцы, з якой неабходна зрабіць выбарку даных.
Калі ж будзе неабходнасць выбраць дадзеныя з некалькіх табліц, можна выкарыстоўваць адну з стандартных канструкцый для аб'яднання некалькіх табліц.
Спосабы падлучэння дадатковых табліц
Калі разглядаць выкарыстанне такога роду канструкцый на пачатковым узроўні, то можна вылучыць наступныя механізмы падлучэння неабходнай колькасці табліц для выбаркі, а менавіта:
- Аператар Inner Join.
- Left Join або, гэта другі спосаб запісу, Left Outer Join.
- Cross Join.
- Full Join.
Выкарыстанне аператараў аб'яднання табліц на практыцы можна засвоіць, разгледзеўшы прымяненне аператара SQL - Inner Join. Прыклад яго выкарыстання будзе выглядаць наступным чынам:
Select * from Person Inner join Subdivision on Su_Person = Pe_ID |
Мова SQL і аператар Join Inner Join можна выкарыстоўваць не толькі для аб'яднання двух і больш табліц, але і для падлучэння іншых подзапросов, што значна палягчае працу адміністратараў базы дадзеных і, як правіла, можа значна паскорыць выкананне пэўных, складаных па структуры запытаў.
Аб'яднанне дадзеных у табліцах парадкова
Калі разглядаць падключэнне вялікай колькасці подзапросов і зборку дадзеных у адзіную табліцу радок за радком, то можна выкарыстаць таксама аператары Union, і Union All.
Прымяненне гэтых канструкцый будзе залежаць ад пастаўленай перад распрацоўшчыкам задачы і выніку, якога ён хоча дасягнуць у выніку.
Апісанне аператара Inner Join
У большасці выпадкаў для аб'яднання некалькіх табліц у мове SQL выкарыстоўваецца аператар Inner Join. Апісанне Inner Join ў SQL даволі простае для разумення сярэднестатыстычнага праграміста, які толькі пачынае разбірацца ў базах дадзеных. Калі разгледзець апісанне механізму працы гэтай канструкцыі, то атрымаем наступную карціну. Логіка аператара ў цэлым пабудавана на магчымасці перасячэння і выбаркі толькі тых дадзеных, якія ёсць у кожнай з якія ўваходзяць у запыт табліц.
Калі разгледзець такую працу з пункту гледжання графічнай інтэрпрэтацыі, то атрымаем структуру аператара SQL Inner Join, прыклад якой можна паказаць з дапамогай наступнай схемы:
Да прыкладу, мы маем дзве табліцы, схема якіх паказана на малюнку. Яны ў сваю чаргу, маюць розную колькасць запісаў. У кожнай з табліц ёсць палі, якія звязаныя паміж сабой. Калі паспрабаваць патлумачыць працу аператара зыходзячы з малюнка, то вяртаецца вынік будзе ў выглядзе набору запісаў з двух табліц, дзе нумары звязаных паміж сабой палёў супадаюць. Прасцей кажучы, запыт верне толькі тыя запісу (з табліцы нумар два), дадзеныя аб якіх ёсць ў табліцы нумар адзін.
Сінтаксіс аператара Inner Join
Як ужо гаварылася раней, аператар Inner Join, а менавіта яго сінтаксіс, незвычайна просты. Для арганізацыі сувязяў паміж табліцамі ў межах адной выбаркі дастаткова будзе запомніць і выкарыстоўваць наступную прынцыповую схему пабудовы аператара, якая прапісваецца ў адзін радок праграмнага SQL-кода, а менавіта:
- Inner Join [Імя табліцы] on [ключавое поле з табліцы, да якой падлучальны] = [ключавую полі падлучальнай табліцы].
Для сувязі ў дадзеным аператары выкарыстоўваюцца галоўныя ключы табліц. Як правіла, у групе табліц, якія захоўваюць інфармацыю пра супрацоўнікаў, апісаныя раней Person і Subdivision маюць хаця б па адной падобнай запісу. Такім чынам, разгледзім больш падрабязна аператар SQL Inner Join, прыклад якога быў паказаны некалькі раней.
Прыклад і апісанне падлучэння да выбарцы асобнай табліцы
У нас ёсць табліца Person, дзе захоўваецца інфармацыя аб усіх супрацоўніках, якія працуюць у кампаніі. Адразу адзначым, што галоўным ключем дадзенай табліцы з'яўляецца поле - Pe_ID. Як раз па ім і будзе ісці звязак.
Другая табліца Subdivision будзе захоўваць інфармацыю аб падраздзяленнях, у якіх працуюць супрацоўнікі. Яна, у сваю чаргу, звязана з дапамогай поля Su_Person з табліцай Person. Пра што гэта кажа? Зыходзячы з схемы дадзеных можна сказаць, што ў табліцы падраздзяленняў для кожнага запісу з табліцы «Супрацоўнікі» будзе інфармацыя пра аддзел, у якім яны працуюць. Менавіта па гэтай сувязі і будзе працаваць аператар Inner Join.
Для больш зразумелага выкарыстання разгледзім аператар SQL Inner Join (прыклады яго выкарыстання для адной і дзвюх табліц). Калі разглядаць прыклад для адной табліцы, то тут усё даволі проста:
Select * from Person Inner join Subdivision on Su_Person = Pe_ID |
Прыклад падлучэння двух табліц і подзапросов
Аператар SQL Inner Join, прыклады выкарыстання якога для выбаркі дадзеных з некалькіх табліц можна арганізаваць як зазначана вышэй, працуе па ледзь ўскладнення прынцыпе. Для двух табліц ўскладнілі задачу. Скажам, у нас ёсць табліца Depart, у якой захоўваецца інфармацыя аб усіх аддзелах у кожным з падраздзяленняў. Ва ў гэтую табліцу запісаны нумар падраздзяленні і нумар супрацоўніка і трэба дапоўніць выбарку даных назвай кожнага аддзела. Забягаючы наперад, варта сказаць, што для вырашэння гэтай задачы можна скарыстацца двума метадамі.
Першы спосаб складаецца ў падлучэнні табліцы аддзелаў да выбарцы. Арганізаваць запыт у гэтым выпадку можна такім чынам:
Select Pe_ID, Pe_Name, Su_Id, Su_Name, Dep_ID, Dep_Name from Person Inner join Subdivision on Su_Person = Pe_ID Inner join Depart on Su_Depart = Dep_ID and Pe_Depart = Dep_ID |
Другі метад рашэння задачы - гэта выкарыстанне подзапросов, у якім з табліцы аддзелаў будзе выбраны не ўсе дадзеныя, а толькі неабходныя. Гэта, у адрозненне ад першага спосабу, дазволіць паменшыць час працы запыту.
Select Pe_ID, Pe_Name, Su_Id, Su_Name, Dep_ID, Dep_Name from Person Inner join Subdivision on Su_Person = Pe_ID Inner join (Select Dep_ID, Dep_Name, Pe_Depart from Depart) as T on Su_Depart = Dep_ID and Pe_Depart = Dep_ID |
Варта адзначыць, што такая канструкцыя не заўсёды можа паскорыць працу запыту. Часам бываюць выпадкі, калі прыходзіцца выкарыстоўваць дадаткова выбарку даных ў часовую табліцу (калі іх аб'ём занадта вялікі), а потым яе аб'ядноўваць з асноўнай выбаркай.
Прыклад выкарыстання аператара Inner Join для выбарак з вялікай колькасці табліц
Пабудова складаных запытаў на ўвазе выкарыстанне для выбаркі дадзеных значнай колькасці табліц і подзапросов, звязаных паміж сабой. Гэтым патрабаванням можа задаволіць SQL Inner Join сінтаксіс. Прыклады выкарыстання аператара ў дадзеным выпадкам могуць ўскладняцца не толькі выбаркамі з многіх месцаў захоўвання дадзеных, але і з вялікай колькасці ўкладзеных подзапросов. Для канкрэтнага прыкладу можна ўзяць выбарку даных з сістэмных табліц (аператар Inner Join SQL). Прыклад - 3 табліцы - у гэтым выпадку будзе мець даволі складаную структуру.
У дадзеным выпадку падключана (да асноўнай табліцы) яшчэ тры дадаткова і ўведзена некалькі ўмоў выбару дадзеных.
Пры выкарыстанні аператара Inner Join варта памятаць пра тое, што чым складаней запыт, тым даўжэй ён будзе рэалізоўвацца, таму варта шукаць шляхі больш хуткага выканання і вырашэння пастаўленай задачы.
заключэнне
У выніку хацелася б сказаць адно: праца з базамі дадзеных - гэта не самае складанае, што ёсць у праграмаванні, таму пры жаданні абсалютна кожны чалавек зможа авалодаць ведамі па пабудове баз дадзеных, а з часам, набраўшыся досведу, атрымаецца працаваць з імі на прафесійным узроўні .
Similar articles
Trending Now