mysql join tutorial inner
Научите о различитим МиСКЛ ЈОИН изразима као што су Иннер, Оутер, Цросс, Лефт, Ригхт и Селф са примерима синтаксе и програмирања:
У овом упутству ћемо научити о МиСКЛ ЈОИН-у и такође ћемо разумети различите типове придруживања који су подржани у МиСКЛ-у. ПРИДРУЖИТЕ се у свом најједноставнијем облику може се сматрати средством за преузимање / ажурирање или брисање података из више табела у односу на један упит.
Дакле, у суштини ЈОИН комбинује 2 или више табела за дохватање података према датом стању.
МиСКЛ такође подржава друге различите начине за упите података из више табела помоћу - подупита и комбиновањем више упита помоћу УНИОН-а итд.
Шта ћете научити:
- Нормализоване табеле
- МиСКЛ ПРИДРУЖИТЕ СЕ
- Типови МиСКЛ ПРИДРУЖИТЕ СЕ
- МиСКЛ ПРИДРУЖИТЕ СЕ АЖУРИРАЊУ И БРИСАЊУ
- Закључак
Нормализоване табеле
У нормализованим МиСКЛ базама података табеле имају везе са уобичајеним колонама помоћу кључних ограничења као што су страни кључеви.
Покушајмо ово да разумемо помоћу примера - Претпоставимо да постоје 2 табеле, ЕМПЛОИЕЕ и ЕМПЛОИЕЕ_ДЕПАРТМЕНТ. Сада у денормализованој бази података - тј. У једној табели која садржи све колоне, мноштво информација, на пример о одељењу, би се дуплирало, јер може бити пуно запослених који су део истог одељења.
Да би се смањиле те дупликације и уштедело на складишту, базе података се одржавају у нормализованом стању.
Дакле, у овом случају, упутили бисмо се одељењу помоћу поља Департмент_ид у табели ЕМПЛОИЕЕ и све релевантне информације повезане са одељењем, попут информација о одељењу, шефа одељења итд., Могле би се чувати као део табеле ЕМПЛОИЕЕ_ДЕПАРТМЕНТ.
Укратко - ЗАПОСЛЕНИ и ЕМПЛОИЕЕ_ДЕПАРТМЕНТ су повезани једни са другима кроз поље Департмент_ид, које делује као СТРАНИ КЉУЧ за табелу ЗАПОСЛЕНИ и ПРИМАРНИ КЉУЧ за табелу ЗАПОСЛЕНИ.
Испод слике је сликовни приказ који има везу између ове две табеле помоћу Ограничење страног кључа
МиСКЛ ПРИДРУЖИТЕ СЕ
МиСКЛ ЈОИН се користи за дохватање, ажурирање или брисање података из 2 или више табела у односу на дато стање. Стога се ЈОИН увек користи заједно са изразима СЕЛЕЦТ, УПДАТЕ или ДЕЛЕТЕ
Синтакса наредбе ЈОИН:
ПРИДРУЖИТЕ СЕ са СЕЛЕЦТ
SELECT {column_list} FROM tableName1 {joinType} tableName2 ON {joinCondition}
ПРИДРУЖИТЕ СЕ УПДАТЕ
DELETE FROM tableName1 {joinType} tableName2 ON {joinCondition} WHERE {condition}
ПРИДРУЖИТЕ СЕ ИЗБРИШИ
UPDATE tableName1 SET targetColumn = targetValue FROM tableName1 {joinType} tableName2 ON {joinCondition} WHERE {condition}
Имајте на уму да се ЈОИН може применити на више табела у једном упиту, али да бисмо ради једноставности прво покушали да разумемо коришћење Јоинс са 2 табеле.
Различити делови синтаксе укључују:
- {цолумн_лист} - Ово представља имена колона које желимо да добијемо као резултат нашег упита.
- {ЈоинТипе} - Ово указује на тип Придруживања који примењујемо. Постоје следеће врсте ПРИДРУЖИВАЊА која могу дохватити податке:
- ИННЕР ЈОИН
- ОУТЕР ЈОИН
- ЛИЈЕВО ВАЊСКО ПРИДРУЖИТЕ
- ПРАВО ВАЊСКО ПРИДРУЖИТЕ
- ЦРОСС ЈОИН
О свим овим различитим врстама МиСКЛ ПРИДРУЖИВАЊА научићемо у наредним одељцима водича.
- {ЈоинЦондитион} - Ово су услови колоне који ће се користити за ПРИДРУЖИВАЊЕ за тражење и преузимање података.
У следећем одељку размотрићемо различите типове придруживања који су доступни у МиСКЛ-у.
Типови МиСКЛ ПРИДРУЖИТЕ СЕ
Припрема података узорка
Да бисмо користили ЈОИНС, користићемо 2 табеле Емплоиее и Емплоиее_Департмент са детаљима у наставку. Можете користити / упутити се на корисну веб локацију овде како би се генерисали лажни подаци за шему.
Уврштавање упита за израду и уметање табела:
CREATE TABLE IF NOT EXISTS Employee_Department ( name varchar(100), id INT NOT NULL auto_increment, PRIMARY KEY (id) ); CREATE TABLE IF NOT EXISTS Employee ( name varchar(100), id int not null auto_increment, address varchar(100), Department_id int, PRIMARY KEY (id), FOREIGN KEY (Department_id) references Employee_Department(id) ); INSERT INTO `Employee_Department` VALUES ('Information Technology','1'), ('HR','2'), ('Finance','3'), ('Accounting','4'), ('Housekeeping','5'), ('Security','6'), ('Support','7'), ('Contract Staff','8'), ('Sales','9'), ('Management','10'); INSERT INTO `Employee` VALUES ('Veniam','1','640 Damon Junction
East Mathew, NY 68818','3'), ('Molestiae','2','6658 Hollis Club
Ernamouth, TX 19743','10'), ('Officiis','3','59965 Mason Neck Apt. 985
Kareemborough, NV 85535','9'), ('Rerum','4','91067 Geovany Fort
Hanefort, WA 92863','6'), ('Et','5','7647 Reva Shores Suite 970
New Audrafort, OH 17846-5397','2'), ('Et','6','9419 Carmela Burg Apt. 687
Aimeebury, SD 32389-4489','8'), ('Laborum','7','6961 Weissnat Drive
Donnellyfort, MT 53947','6'), ('Cupiditate','8','117 Nellie Summit Suite 982
South Heavenfurt, CA 45675','8'), ('Eveniet','9','9086 Mariam Square Suite 698
South Dulce, MT 82861-3079','2'), ('Rerum','10','783 Goodwin Burgs Apt. 429
Willmsfort, UT 42820-1019','9'), ('Quis','11','42928 Ernesto Trail
East Jules, WV 87169-2851','1'), ('Esse','12','161 Kassulke Stravenue Apt. 937
Williamsonton, MS 62622','7'), ('Dolores','13','22811 Liliana Trail Apt. 890
South Ernesto, MT 04134','10'), ('Ut','14','981 Laron Overpass Suite 361
West Olahaven, FL 46982-7801','10'), ('Mollitia','15','411 Louisa Mill
South Maximefort, MA 04903','8'), ('Necessitatibus','16','2853 Jonathon Turnpike
Quitzonville, KY 54776','4'), ('Fugit','17','3647 Rosalinda Corner
Maureenstad, RI 96605','5'), ('Corporis','18','03559 Nicholas Circle Apt. 364
West Zettaberg, ID 58592-3447','8'), ('Neque','19','56111 Alysson Gateway Apt. 212
Leschbury, VT 90605-2306','8'), ('Velit','20','263 O'Keefe Avenue Apt. 884
West Missouri, IL 50303','6'),
ИННЕР ЈОИН
УНУТАРЊЕ ПРИДРУЖИВАЊЕ је најчешћи облик ПРИДРУЖИВАЊА и веома се користи. Готово сви сте ово требали користити у неком тренутку. Погледајмо синтаксу, а затим неколико примера упита.
Синтакса:
SELECT {column_list} FROM tableName1 INNER JOIN tableName2 ON {joinCondition}
Упит за преузимање имена_одсека за све запослене из горе декларисаних табела (Емплоиее анд Емплоиее_Департмент):
SELECT Employee.name as Employee_name, Employee_Department.name as Department_name FROM Employee INNER JOIN Employee_Department ON Employee.Department_id = Employee_Department.id
Ево резултата горњег упита:
Име запосленог | Одељење Име |
---|---|
ствари | Сигурност |
СЗО | Информациона технологија |
И | ХР |
задесити | ХР |
Ја | Финансије |
потребе | Рачуноводство |
Фгит | Одржавање домаћинства |
грицкалице | Сигурност |
Молимо вас | Сигурност |
То | Подршка |
И | Уговорно особље |
жудња | Уговорно особље |
еластичност | Уговорно особље |
тело | Уговорно особље |
Поштено | Уговорно особље |
канцеларије | Продаја |
ствари | Продаја |
досадности | Менаџмент |
Болови | Менаџмент |
Напоље | Менаџмент |
Белешка: Овде смо користили псеудониме имена колона. Пример: Емплоиее.наме као Емплоиее_наме - само да би резултати били читљивији и свеобухватнији.
Изменимо овај упит да бисмо преузели само имена која почињу словом „м“.
SELECT Employee.name as Employee_name, Employee_Department.name as Department_name FROM Employee INNER JOIN Employee_Department ON Employee.Department_id = Employee_Department.id WHERE Employee.name like 'm%'
Испод је излаз:
Име запосленог | Одељење Име | |||||
---|---|---|---|---|---|---|
грицкалице | 7 | 6961 Веисснат Дриве Доннеллифорт, МТ 53947 | 6 | НУЛА | НУЛА | НУЛА |
досадности | Менаџмент | |||||
еластичност | Уговорно особље |
А сада да схватимо УНУТРАШЊО ПРИДРУЖИВАЊЕ уз помоћ Венновог дијаграма као доле. Враћени резултујући редови састоје се од преклапајућих података између обе табеле који се подударају са условом ЈОИН.
ОУТЕР ЈОИН
ОУТЕР ЈОИН се користи за дохваћање података из 2 или више табела, са изузетком укључивања и неусклађених редова (или редова који имају нулл податке за тражене колоне).
Да бисте боље разумели спољно придруживање, додајте нову табелу оффице_лоцатионс са пољима - ид и адресом и додајте нову колону под називом `оффице_ид` у првобитно креирану табелу запослених.
Ево упита за исто:
CREATE TABLE IF NOT EXISTS office_locations ( address varchar(100), id INT NOT NULL auto_increment, PRIMARY KEY (id) ); ALTER TABLE Employee ADD COLUMN office_id int; INSERT INTO `office_locations`(address) VALUES('Bangalore'), ('Mumbai'), ('Seattle'), ('Santa Clara'); UPDATE Employee SET office_id=1 where id % 2 = 0; UPDATE Employee SET office_id=2 where id % 3 = 0;
Погледајте доњи Веннов дијаграм да бисте сликовито разумели ВАЊСКЕ ПРИДРУЖИВАЊА:
Постоје 2 типа ВАЊСКИХ ПРИДРУЖИВАЊА
а) ЛЕВО ВАЊСКО ПРИДРУЖИТЕ
Као што и само име говори, овај тип Придруживања дохватио би све редове (укључујући НУЛЛ вредности) из табеле која се налази на левој страни ЈОИН упита. Једноставним речима, сви резултати / редови који се не подударају са условом ЈОИН биће враћени са резултатом који има НУЛЛ вредности за десну табелу.
На пример, потребни су нам подаци о локацији за све запослене - тј. сазнајте која је канцеларијска адреса свих запослених.
SELECT * from Employee LEFT OUTER JOIN office_locations ON Employee.office_id = office_locations.id
Излаз горњег упита:
Име | Ид | Адреса | Департмент_ид | Оффице_ид | Канцеларија Адреса | Ид |
---|---|---|---|---|---|---|
Ја | један | 640 Дамон Јунцтион Еаст Матхев, НИ 68818 | 3 | НУЛА | НУЛА | НУЛА |
досадности | два | 6658 Холлис Цлуб Ернамоутх, ТКС 19743 | 10 | један | Бангалоре | један |
канцеларије | 3 | 59965 Масон Нецк Апт. 985 Кареембороугх, НВ 85535 | 9 | два | Мумбаи | два |
ствари | 4 | 91067 тврђава Геовани] Ханефорт, ВА 92863 | 6 | један | Бангалоре | један |
И | 5 | 7647 Рева Схорес Суите 970 Нев Аудрафорт, ОХ 17846-5397 | два | НУЛА | НУЛА | НУЛА |
И | 6 | 9419 Цармела Бург Апт. 687 Аимеебури, СД 32389-4489 | 8 | два | Мумбаи | два |
жудња | 8 | 117 Апартман Неллие Суммит 982 Соутх Хеавенфурт, ЦА 45675 | 8 | један | Бангалоре | један |
задесити | 9 | 9086 Апартман Мариам Скуаре 698 Соутх Дулце, МТ 82861-3079 | два | два | Мумбаи | два |
ствари | 10 | 783 Гоодвин Бургс Апт. 429 Виллмсфорт, УТ 42820-1019 | 9 | један | Бангалоре | један |
СЗО | Једанаест | 42928 Ернесто Траил Еаст Јулес, ВВ 87169-2851 | један | НУЛА | НУЛА | НУЛА |
То | 12 | 161 Кассулке Стравенуе Апт. 937 Виллиамсонтон, МС 62622 | 7 | два | Мумбаи | два |
Болови | 13 | 22811 Лилиана Траил Апт. 890 Јужни Ернесто, МТ 04134 | 10 | НУЛА | НУЛА | НУЛА |
Напоље | 14 | 981 Ларон надвожњак Суите 361 Западни Олахавен, ФЛ 46982-7801 | 10 | један | Бангалоре | један |
еластичност | петнаест | 411 Лоуиса Милл Соутх Макимефорт, МА 04903 | 8 | два | Мумбаи | два |
потребе | 16 | 2853 Јонатхон Турнпике Куитзонвилле, КИ 54776 | 4 | један | Бангалоре | један |
ПОБЈЕГАО | 17 | 3647 Росалинда Цорнер Мауреенстад, РИ 96605 | 5 | НУЛА | НУЛА | НУЛА |
тело | 18 | 03559 Ницхолас Цирцле Апт. 364 Западни Зеттаберг, ИД 58592-3447 | 8 | два | Мумбаи | два |
или | 19 | 56111 Алиссон Гатеваи Апт. 212 Лесцхбури, ВТ 90605-2306 | 8 | НУЛА | НУЛА | НУЛА |
Молимо вас | двадесет | 263 О'Кеефе Авенуе Апт. 884 Западни Миссоури, ИЛ 50303 | 6 | један | Бангалоре | један |
б) ПРАВО ВАЊСКО ПРИДРУЖИВАЊЕ
Слично ЛЕВОМ ПРИДРУЖИВАЊУ, и код ове врсте Придруживања сви записи који се не подударају из десне табеле враћају се са НУЛЛ вредностима у колоне леве бочне табеле.
зашто одабирете питање за интервју за тестирање софтвера
На пример, са нашим узорцима табела, ако покренемо ДЕСНО ПРИДРУЖИВАЊЕ према истом упиту који смо користили за ЛЕВО ПРИДРУЖИВАЊЕ, добићемо НУЛЛ вредности за градове „Сијетл“ и „Санта Клара“ јер у табели запослених нема редова који имају постављену локацију овим вредностима.
SELECT * from Employee RIGHT OUTER JOIN office_locations ON Employee.office_id = office_locations.id
Излаз горњег упита:
Име | Ид | Адреса | Департмент_ид | Оффице_ид | Канцеларија Адреса | Ид |
---|---|---|---|---|---|---|
Молимо вас | двадесет | 263 О'Кеефе Авенуе Апт. 884 Западни Миссоури, ИЛ 50303 | 6 | један | Бангалоре | један |
досадности | два | 6658 Холлис Цлуб Ернамоутх, ТКС 19743 | 10 | један | Бангалоре | један |
ствари | 4 | 91067 Тврђава Геовани Ханефорт, ВА 92863 | 6 | један | Бангалоре | један |
жудња | 8 | 117 Апартман Неллие Суммит 982 Соутх Хеавенфурт, ЦА 45675 | 8 | један | Бангалоре | један |
ствари | 10 | 783 Гоодвин Бургс Апт. 429 Виллмсфорт, УТ 42820-1019 | 9 | један | Бангалоре | један |
Напоље | 14 | 981 Ларон надвожњак Суите 361 Западни Олахавен, ФЛ 46982-7801 | 10 | један | Бангалоре | један |
потребе | 16 | 2853 Јонатхон Турнпике Куитзонвилле, КИ 54776 | 4 | један | Бангалоре | један |
канцеларије | 3 | 59965 Масон Нецк Апт. 985 Кареембороугх, НВ 85535 | 9 | два | Мумбаи | два |
И | 6 | 9419 Цармела Бург Апт. 687 Аимеебури, СД 32389-4489 | 8 | два | Мумбаи | два |
задесити | 9 | 9086 Апартман Мариам Скуаре 698 Соутх Дулце, МТ 82861-3079 | два | два | Мумбаи | два |
То | 12 | 161 Кассулке Стравенуе Апт. 937 Виллиамсонтон, МС 62622 | 7 | два | Мумбаи | два |
еластичност | петнаест | 411 Лоуиса Милл Соутх Макимефорт, МА 04903 | 8 | два | Мумбаи | два |
тело | 18 | 03559 Ницхолас Цирцле Апт. 364 Западни Зеттаберг, ИД 58592-3447 | 8 | два | Мумбаи | два |
НУЛА | НУЛА | НУЛА | НУЛА | НУЛА | Сијетл | 3 |
НУЛА | НУЛА | НУЛА | НУЛА | НУЛА | Санта Цлара | 4 |
Напомене / савети:
- У другим релационим базама података, као што је Мицрософт СКЛ - можда ћете пронаћи другу врсту ВАЊСКОГ ПРИДРУЖИВАЊА која се зове ПУНО ВАЊСКО ПРИДРУЖИВАЊЕ. То није ништа друго него комбинација УНУТРАШЊЕГ и ВАЊСКОГ Придруживања - тј. Вратиће НУЛЛ вредности и из ЛЕВЕ и ДЕСНЕ табеле.
- За детаљну дискусију, заједно са објашњењима и примерима око разлика између УНУТАРЊИХ И ВАЊСКИХ ПРИДРУЖИВАЊА, погледајте наш водич овде.
- У упитима ВАЊСКО ПРИДРУЖИВАЊЕ - ДЕСНО ВАЊСКО ПРИДРУЖИВАЊЕ и ЛИЈЕВО ВАЊСКО ПРИДРУЖИВАЊЕ могу бити управо назначене као РИГХТ ЈОИН и ЛЕФТ ЈОИН, ради веће читљивости.
ЦРОСС ЈОИН
ПРЕКО ПРИДРУЖИВАЊА назива се и Декартов производ. Враћа резултат у односу на подударање услова Придруживања са укупно м к н редова где су м и н број подударних редова у табели1 и табели2 у односу на услов ПРИДРУЖИВАЊА.
Погледајмо пример упита за ЦРОСС ЈОИН за добијање резултата из 2 табеле - Емплоиее анд оффице_лоцатионс
SELECT * from Employee CROSS JOIN office_locations
Вратљени излаз ће садржати укупно 80 редова, што није ништа друго до умножак редова у обе табеле - Запослени (20) к оффице_лоцатионс (4) => 80
Имајте на уму да, док радите ЦРОСС ЈОИН не морате да наведете било који услов ЈОИН јер бисте ионако добили м к н резултат.
Напомене / савети:
Нећете наћи пуно пута користећи ЦРОСС ЈОИН, јер нема много повезаних случајева употребе. Ово Придруживање се обично извршава када неко жели да добије све могуће комбинације према подацима из 2 табеле.
На пример: Претпоставимо да сте извозник одеће и да имате 2 табеле - једну са подацима о боји и другу са подацима о величини. Овде, да бисте осигурали инвентар, можете размотрити ПРЕКРАСНО ПРИДРУЖИВАЊЕ оба стола како бисте били сигурни да је сва одећа набављена за све комбинације величине и боје.
САМО ПРИДРУЖИТЕ СЕ
САМО ПРИДРУЖИВАЊЕ је исто као и свако друго УНУТАРЊЕ или ВАЊСКО Придруживање, са јединим изузецима што су обе табеле, тј. Табела Спајање и Придружене, исте.
Генерално користимо САМО Придруживања када желимо да сазнамо везу између редова исте табеле. На пример, ако табела има и ИД запосленог и ИД запосленог надзорника, можемо да се придружимо табели ако желимо да сазнамо име менаџера у односу на име запосленог.
Имајте на уму да за САМО ПРИДРУЖИВАЊЕ треба да користите псеудониме табеле како би се услови Придруживања могли одредити позивајући се на тачну табелу.
Да видимо пример овде:
SELECT e1.name as Employee1, e2.name as Employee2 from Employee e1 inner join Employee e2 on e1.office_id = e2.office_id where e1.Department_id = e2.Department_id
Ево, придружили смо себи табелу запослених како бисмо сазнали имена запослених која имају исту локацију и одељење
Запослени1 | Запослени2 |
---|---|
И | еластичност |
досадности | досадности |
досадности | Напоље |
Официис | канцеларије |
ствари | ствари |
ствари | Молимо вас |
И | И |
И | тело |
жудња | жудња |
задесити | задесити |
ствари | ствари |
То | То |
Напоље | досадности |
Напоље | Напоље |
еластичност | И |
еластичност | еластичност |
еластичност | тело |
потребе | потребе |
тело | И |
тело | еластичност |
тело | тело |
Молимо вас | ствари |
Молимо вас | Молимо вас |
Као што смо разговарали, СЕЛФ ЈОИН само има придруживање и придружене табеле као исте, можемо користити СЕЛФ ЈОИН са ИННЕР или ОУТЕР Јоинс.
МиСКЛ ПРИДРУЖИТЕ СЕ АЖУРИРАЊУ И БРИСАЊУ
До сада смо разговарали о придруживању са СЕЛЕЦТ наредбама. Међутим, Јоинс се такође могу користити са МиСКЛ ДЕЛЕТЕ и УПДАТЕ изразима.
Синтакса овде остаје иста. Погледајмо неколико примера за боље разумевање концепта.
АЖУРИРАЊЕ СА УНУТАРЊИМ ПРИДРУЖИВАЊЕМ
Претпоставимо да желимо да променимо адресу у табели Емплоиее у име локације канцеларије која је присутна у табели оффице_лоцатионс. Овде можемо да користимо ИННЕР ЈОИН да дохватимо име града из оффице_лоцатионс и ажурирамо исти упит.
Пример упита:
UPDATE Employee emp inner join office_locations off_loc on emp.office_id = off_loc.id set emp.address = off_loc.address;
Слично овоме, УПДАТЕ се може користити и са другим врстама придруживања, у зависности од захтева за одређене случајеве употребе.
ИЗБРИШИ СА УНУТАРЊИМ ПРИДРУЖИВАЊЕМ
Као пример ћемо користити табеле, Емплоиее и Емплоиее_Департментс. Претпоставимо да желимо да избришемо све евиденције запослених који припадају одељењу продаје, а такође желимо да избришемо и унос за одељење продаје.
Будући да смо користили Департмент_ид као ограничење ФОРЕИГН КЕИ, стога бисмо прво требали ОТПУСТИТИ то ограничење пре него што користимо ДЕЛЕТЕ витх ЈОИН за више табела.
Прво сазнајмо име ограничења које је креирано за Департмент_ид у табели Емплоиее. Једноставно покрените команду да бисте добили наредбу ЦРЕАТЕ ТАБЛЕ.
show create table Employee
Резултат ћете добити као:
CREATE TABLE `Employee` ( `name` varchar(100) DEFAULT NULL, `id` int NOT NULL AUTO_INCREMENT, `address` varchar(100) DEFAULT NULL, `Department_id` int DEFAULT NULL, `office_id` int DEFAULT NULL, PRIMARY KEY (`id`), KEY `Department_id` (`Department_id`), CONSTRAINT `Employee_ibfk_1` FOREIGN KEY (`Department_id`) REFERENCES `Employee_Department` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
Сада можете упутити име ограничења ФОРЕИГН_КЕИ из горње команде која је ‘Емплоиее_ибфк_1’ и можемо користити ово име да испустимо ово ограничење из табеле Емплоиее покретањем доње наредбе:
alter table Employee drop constraint Employee_ibfk_1
Сада покренимо наредбу ДЕЛЕТЕ са ИННЕР ЈОИН
delete emp_dept, emp from Employee emp inner join Employee_Department emp_dept on emp.Department_id = emp_dept.id where emp.Department_id = 9
Резултат ове наредбе био би бр. обрисаних редова (и ово би требало УСПИСНО ИЗБРИСАТИ редове из обе табеле на које је наведен горњи ЈОИН упит)
Често постављана питања
П # 1) Колико врста придруживања постоји у МиСКЛ-у?
Одговор: МиСКЛ подржава првенствено 3 типа придруживања. Су:
- Иннер Јоин
- Спољни спој - Леви спољашњи спој и Десни спољашњи спој
- Цросс Јоин
П # 2) Може ли се Јоин придружити само за 2 табеле?
Одговор: Удруживања се могу применити на 2 или више од 2 табеле. Већина времена Придруживања се користе за 2 табеле.
Испод је пример УНУТРАШЊЕГ ПРИДРУЖИВАЊА помоћу 3 табеле:
select Employee.name as emp_name, Employee_Department.name as dept_name, office_locations.address as office_location from Employee inner join Employee_Department on Employee.Department_id = Employee_Department.id inner join office_locations on Employee.office_id = office_locations.id
Излаз горњег упита:
емп_наме | име_депт | оффице_лоцатион |
---|---|---|
Напоље | Менаџмент | Бангалоре |
досадности | Менаџмент | Бангалоре |
ствари | Сигурност | Бангалоре |
И | Уговорно особље | Мумбаи |
жудња | Уговорно особље | Бангалоре |
задесити | ХР | Мумбаи |
То | Подршка | Мумбаи |
еластичност | Уговорно особље | Мумбаи |
потребе | Рачуноводство | Бангалоре |
тело | Уговорно особље | Мумбаи |
Молимо вас | Сигурност | Бангалоре |
П # 3) Како користити псеудониме табеле са Јоинс?
Одговор: Псеудоними су начин да се привремено именује табела на коју се упућује у упиту. Будући да су ЈОИН упити понекад сложени и да би упити били читљиви и избегавали позивање на називе табела за сваку референцу колоне, имена можемо скратити псеудонимима.
Напишимо ИННЕР ЈОИН упит како бисмо преузели податке за сва имена запослених и имена одељења из табела Емплоиее и Емплоиее_Департментс.
select emp.name as emp_name, Department.name as dept_name from Employee emp inner join Employee_Department as Department on emp.Department_id = Department.id
У претходном упиту можете видети да смо псеудоним Емплоиее табле додали као емп и Емплоиее_Департмент табле као Департмент и користили псеудониме за референцирање имена колона и услова Придруживања.
П # 4) Шта је ЦРОСС ЈОИН?
Одговор: ЦРОСС ЈОИН је врста Придруживања где корисник жели да преузме картезијански производ табела које се спајају.
Резултат ЦРОСС ЈОИН је м к н где је м број подударних редова у првој табели, а н је број подударних редова у другој табели.
свф датотека се неће отворити у хрому
П # 5) Како добити ПУНО ВАЊСКО ПРИДРУЖИВАЊЕ у МиСКЛ-у
Одговор: МиСКЛ не пружа ПУНО ВАЊСКО ПРИДРУЖИВАЊЕ као засебан тип Придруживања за разлику од других база података попут Мицрософт СКЛ-а. Међутим, да бисмо добили резултате онако како би то могао бити ФУЛЛ ОУТЕР ЈОИН, можемо комбинирати резултате ЛЕФТ ОУТЕР ЈОИН и ДЕСНО ОУТЕР ЈОИН.
На пример, можемо потражити детаље о запосленима и одељењима и применити синдикат на леве и десне спољашње спојеве.
Препоручена литература = >> МиСКЛ Унион Оператор
Закључак
У овом упутству смо сазнали о различитим типовима придруживања који су доступни у МиСКЛ-у.
Разговарали смо о ИННЕР, ОУТЕР, ЦРОСС и СЕЛФ Јоинс, а такође смо видели и како се ЈОИН упити могу користити са УПДАТЕ и ДЕЛЕТЕ изразима како би се добили ефикасни и оптимизовани упити за Спојене податке између 2 или више од 2 табеле.
ЈОИНС су један од најосновнијих коришћених упита и свако ко користи или учи базе података засноване на СКЛ-у треба да има темељно разумевање СКЛ Јоинс-а.
Препоручено читање
- Унутрашње спајање против спољашњег спајања: Тачна разлика са примерима
- МиСКЛ Водич за креирање погледа са примерима кода
- Изјава о брисању МиСКЛ - Избришите синтаксу наредбе и примере
- МиСКЛ Убаци у табелу - Убаци синтаксу и примере изјаве
- Водич за изјаву о ажурирању МиСКЛ - Синтакса упита и ажурирање примера
- Разлика између СКЛ Вс МиСКЛ Вс СКЛ Сервер (са примерима)
- Шта је МиСКЛ и зашто се користи?
- 20+ МонгоДБ лекција за почетнике: бесплатан курс МонгоДБ