КампутарыПраграмаванне

Аператар SQL INNER JOIN: прыклады, сінтаксіс і асаблівасці

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

Выбаркі дадзеных з табліц

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

Select * from Person

дзе Person - імя табліцы, з якой неабходна зрабіць выбарку даных.

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

Спосабы падлучэння дадатковых табліц

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

  1. Аператар Inner Join.
  2. Left Join або, гэта другі спосаб запісу, Left Outer Join.
  3. Cross Join.
  4. 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

 

 

 

 

Newest

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