В тази статия ще научим за концепцията INNER JOIN и как да я използваме в SQL с клаузата WHERE.
Какво е INNER JOIN в SQL?
Inner Join е вид присъединяване в SQL. Inner Join в SQL е широко използвано присъединяване. Това обединяване връща само онези редове, които са общи и в двете таблици. Вътрешното свързване се използва за свързване на две таблици.
Синтаксис на Inner Join в SQL:
ИЗБЕРЕТЕ table1.columname1, table1.columnname2, table2.columnname1, table2.columnname2 ОТ TABLE1 INNER JOIN TABLE2 ON table1.column =table2.column;
Table1.column =table2.column е общата колона, която поддържа връзката родител между тези две таблици.
Има някои стъпки, които трябва да използваме във вътрешното присъединяване в SQL заявката:
1. Създайте нова база данни или използвайте съществуваща база данни, като изберете базата данни с помощта на ключовата дума USE, последвана от името на базата данни.
2. Създайте нова таблица в избраната база данни или можете да използвате вече създадена таблица.
3. Ако таблицата е новосъздадена, вмъкнете записите в новосъздадената база данни с помощта на заявката INSERT.
4. Прегледайте вмъкнатите данни с помощта на заявката SELECT без заявката Inner Join.
5 Сега сме готови да използваме Inner Join в SQL заявките.
Стъпка 1:Създайте нова база данни или използвайте вече създадена база данни.
Вече създадох база данни. Ще използвам съществуващото си създадено име на база данни, Компания.
ИЗПОЛЗВАЙТЕ компания;
Компанията е името на базата данни.
Тези, които не са създали база данни, следват следната заявка, за да създадат базата данни:
CREATE DATABASE database_name;
След като създадете базата данни, изберете я с помощта на ключовата дума USE, последвана от името на базата данни.
Стъпка 2:Създайте нова таблица или използвайте вече съществуваща таблица:
Вече създадох таблица. Ще използвам съществуващата таблица с име Employees and Manager, докато изпълняваме заявката Inner Join.
За да създадете новата таблица, следвайте следния синтаксис CREATE TABLE:
CREATE TABLE име_на_таблица(
име на колона1 тип данни (размер на колона),
тип на данни на име2 на колона (размер на колона),
тип на данни име на колона3 (размер на колона )
);
Стъпка 3:Вмъкнете записите в новосъздадената таблица с помощта на заявката INSERT
Използвайте следния синтаксис, за да вмъкнете нови записи в таблицата:
INSERT INTO table_name VALUES(стойност1, стойност2, стойност3);
Стъпка 4: Прегледайте записите с помощта на заявката SELECT.
Вижте записите от таблицата, като използвате следния синтаксис:
SELECT * FROM table_name;
Следната заявка ще покаже записите на служителите.
ИЗБЕРЕТЕ * ОТ Служители;
Резултатът от горната заявка SELECT е:
ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ | FIRST_NAME | LAST_NAME | ЗАПЛАТА | ГРАД | ОТДЕЛ | MANAGERID |
1001 | VAIBHAVI | МИШРА | 65500 | ПУНА | ORACLE | 1 |
1002 | VAIBHAV | ШАРМА | 60 000 | NOIDA | C# | 5 |
1003 | НИХИЛ | VANI | 50500 | ДЖАЙПУР | FMW | 2 |
2001 | PRACHI | ШАРМА | 55500 | ЧАНДИГАР | ORACLE | 1 |
2002 | BHAVESH | ДЖЕЙН | 65500 | ПУНА | FMW | 2 |
2003 | РУЧИКА | ДЖЕЙН | 50 000 | МУМБАЙ | C# | 5 |
3001 | PRANOTI | ШЕНДЕ | 55500 | ПУНА | JAVA | 3 |
3002 | ANUJA | WANRE | 50500 | ДЖАЙПУР | FMW | 2 |
3003 | DEEPAM | ДЖАУХАРИ | 58500 | МУМБАЙ | JAVA | 3 |
4001 | РАДЖЕШ | GOUD | 60500 | МУМБАЙ | ТЕСТВАНЕ | 4 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
4003 | РУЧИКА | AGARWAL | 60 000 | ДЕЛХИ | ORACLE | 1 |
5001 | АРХИТ | ШАРМА | 55500 | ДЕЛХИ | ТЕСТВАНЕ | 4 |
5002 | SANKET | ЧАУХАН | 70 000 | ХАЙДЕРАБАД | JAVA | 3 |
5003 | РОШАН | NEHTE | 48500 | ЧАНДИГАР | C# | 5 |
6001 | РАХУЛ | НИКАМ | 54500 | БАНГАЛОР | ТЕСТВАНЕ | 4 |
6002 | АТИС | JADHAV | 60500 | БАНГАЛОР | C# | 5 |
6003 | НИКИТА | ИНГАЛЕ | 65 000 | ХАЙДЕРАБАД | ORACLE | 1 |
Следната заявка ще покаже записите на мениджъра.
ИЗБЕРЕТЕ * ОТ мениджър;
Резултатът от горната заявка SELECT е:
Managerid | име_на_мениджър | мениджърски отдел |
1 | Снехдип Каур | ORACLE |
2 | Кирти Киртане | FMW |
3 | Абхишек Маниш | JAVA |
4 | Анупам Мишра | ТЕСТВАНЕ |
5 | Акаш Кадам | C# |
Следната заявка ще покаже записите на лаптоп.
ИЗБЕРЕТЕ * ОТ лаптоп;
Резултатът от горната заявка SELECT е:
ЛАПТОПИД | ИМЕ | ИД НА СЛУЖИТЕЛ |
101 | DELL | NULL |
102 | HP | 1002 |
103 | LENOVO | NULL |
104 | HP | 3003 |
105 | DELL | 4002 |
106 | LENOVO | 4003 |
107 | DELL | 5001 |
108 | HP | NULL |
109 | DELL | NULL |
110 | HP | NULL |
111 | LENOVO | 2002 |
112 | LENOVO | 6003 |
113 | HP | 1003 |
Стъпка 5:Готови сме да използваме INNER JOIN в заявките
Нека разберем Inner Join с помощта на примери.
Пример 1: Напишете заявка за показване на идентификатор на служител, собствено име, фамилия, заплата, град от таблицата на служителя и идентификатор на мениджър и име на мениджър от таблицата на мениджъра, като използвате вътрешното присъединяване.
ИЗБЕРЕТЕ E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.PALARY, E.CITY, M.MANAGERID, M.MANAGER_NAME ОТ СЛУЖИТЕЛИ E ВЪТРЕШЕН МЕНИДЖЪР НА ПРИСЪЕДИНЯВАНЕ M ON E.MANAGERID =M.MANAGERID;
В горната заявка извлечехме идентификатор на служител, собствено име, фамилия, заплата, град от таблицата на служителя и идентификатора на мениджъра, името на мениджъра от таблицата на мениджъра, където колоната с идентификатор на мениджър на таблицата на служителите е равна на колоната с идентификатор на мениджър на таблицата на мениджъра. Заявката ще върне всички записи за съвпадения от двете таблици. Идентификаторът на мениджъра е обща колона между двете таблици. E е псевдоним за таблицата на служителя, докато M е за таблицата на мениджъра. Колоната с идентификатор на мениджъра работи като външен ключ в таблицата на служителя. Идентификаторът на мениджъра работи като първичен ключ в таблицата на мениджъра, който създава връзка родител-дете между двете таблици.
Резултатът от горната заявка е:
ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ | FIRST_NAME | LAST_NAME | ЗАПЛАТА | ГРАД | ОТДЕЛ | MANAGERID |
1001 | VAIBHAVI | МИШРА | 65500 | ПУНА | ORACLE | 1 |
2001 | PRACHI | ШАРМА | 55500 | ЧАНДИГАР | ORACLE | 1 |
4003 | РУЧИКА | AGARWAL | 60 000 | ДЕЛХИ | ORACLE | 1 |
6003 | НИКИТА | ИНГАЛЕ | 65 000 | ХАЙДЕРАБАД | ORACLE | 1 |
1003 | НИХИЛ | VANI | 50500 | ДЖАЙПУР | FMW | 2 |
2002 | BHAVESH | ДЖЕЙН | 65500 | ПУНА | FMW | 2 |
3002 | ANUJA | WANRE | 50500 | ДЖАЙПУР | FMW | 2 |
3001 | PRANOTI | ШЕНДЕ | 55500 | ПУНА | JAVA | 3 |
3003 | DEEPAM | ДЖАУХАРИ | 58500 | МУМБАЙ | JAVA | 3 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
5002 | SANKET | ЧАУХАН | 70 000 | ХАЙДЕРАБАД | JAVA | 3 |
4001 | РАДЖЕШ | GOUD | 60500 | МУМБАЙ | ТЕСТВАНЕ | 4 |
5001 | АРХИТ | ШАРМА | 55500 | ДЕЛХИ | ТЕСТВАНЕ | 4 |
6001 | РАХУЛ | НИКАМ | 54500 | БАНГАЛОР | ТЕСТВАНЕ | 4 |
1002 | VAIBHAV | ШАРМА | 60 000 | NOIDA | C# | 5 |
2003 | РУЧИКА | ДЖЕЙН | 50 000 | МУМБАЙ | C# | 5 |
5003 | РОШАН | NEHTE | 48500 | ЧАНДИГАР | C# | 5 |
6002 | АТИС | JADHAV | 60500 | БАНГАЛОР | C# | 5 |
Записите се показват във възходящ ред по подразбиране идентификатор на мениджъра.
Пример 2: Напишете заявка за показване на идентификатор на служител, собствено име, фамилия, град и отдел от таблицата на служителя и идентификатор на мениджър и име на мениджър от таблицата на мениджъра, като използвате Inner Join, където отделът на служителя е C#.
ИЗБЕРЕТЕ E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.CITY, E.DEPARTMENT, M.MANAGERID, M.MANAGER_NAME ОТ СЛУЖИТЕЛИ E ВЪТРЕШЕН МЕНИДЖЪР НА ПРИСЪЕДИНЯВАНЕ M ON E.MANAGERID =M.MANAGERID WHERE DEPARTMENT =' C#';
В горната заявка извлечехме идентификатора на служител, собственото име, фамилията, града и отдела от таблицата на служителя, идентификатора на мениджъра и името на мениджъра от таблицата на мениджъра, където идентификаторът на мениджъра от таблицата служители е равен на идентификатора на мениджъра само от таблицата на мениджъра тези записи на служителите, чийто отдел за служители е C#.
Резултатът от горната заявка е:
ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ | FIRST_NAME | LAST_NAME | ЗАПЛАТА | ГРАД | ОТДЕЛ | MANAGERID |
1002 | VAIBHAV | ШАРМА | 60 000 | NOIDA | C# | 5 |
2003 | РУЧИКА | ДЖЕЙН | 50 000 | МУМБАЙ | C# | 5 |
5003 | РОШАН | NEHTE | 48500 | ЧАНДИГАР | C# | 5 |
6002 | АТИС | JADHAV | 60500 | БАНГАЛОР | C# | 5 |
В горния изход можем да видим, че само тези записи са извлечени от служители, чийто отдел е C#. Използваме клаузата WHERE с INNER присъединяването.
Пример 3: Напишете заявка за показване на идентификатора на служителя, собственото име, заплатата, града и отдела от таблицата на служителя и идентификатора на лаптопа и името на лаптопа от таблицата на лаптопа с помощта на Inner Join.
ИЗБЕРЕТЕ E.EMPLOYEEID, E.FIRST_NAME, E.PALARY, E.CITY, E.DEPARTMENT, L.LAPTOPID, L.NAME ОТ СЛУЖИТЕЛИ E ВЪТРЕШНО ПРИСЪЕДИНЕТЕ ЛАПТОП L ON E.EMPLOYEEID =L.EMPLOYEEID;
В горната заявка извлечехме идентификатора на служителя, собственото име, заплатата, града и отдела от таблицата на служителите и идентификатора на лаптопа и името от таблицата на лаптопа, където идентификационният номер на служителя от таблицата на служителите е равен на идентификатора на служителя от таблицата на лаптопа . Идентификаторът на служителите е външен ключ в таблицата на лаптопа, който създава връзка родител-дете между таблицата на служителите и таблицата на лаптопа.
Резултатът от горната заявка е:
ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ | FIRST_NAME | ЗАПЛАТА | ГРАД | ОТДЕЛ | ЛАПТОПИД | NAME |
1002 | VAIBHAV | 60 000 | NOIDA | C# | 102 | HP |
3003 | DEEPAM | 58500 | МУМБАЙ | JAVA | 104 | HP |
4002 | ASHWINI | 54500 | NOIDA | JAVA | 105 | DELL |
4003 | РУЧИКА | 60 000 | ДЕЛХИ | ORACLE | 106 | LENOVO |
5001 | АРХИТ | 55500 | ДЕЛХИ | ТЕСТВАНЕ | 107 | DELL |
2002 | BHAVESH | 65500 | ПУНА | FMW | 111 | LENOVO |
6003 | НИКИТА | 65 000 | ХАЙДЕРАБАД | ORACLE | 112 | LENOVO |
1003 | НИХИЛ | 50500 | ДЖАЙПУР | FMW | 113 | HP |
В дадения изход се показват само онези записи, към които е присвоен лаптопа.
Пример 4: Напишете заявка за показване на идентификатор на служител, собствено име, заплата и отдел от таблицата на служителите и идентификатор на мениджър и име на мениджър от таблицата на мениджъра, като използвате вътрешно присъединяване, където заплата> 57 000 или отдел е Oracle.
ИЗБЕРЕТЕ ИД НА СЛУЖИТЕЛ, FIRST_NAME, ЗАПЛАТА, ОТДЕЛ, M.MANAGERID, M.MANAGER_NAME ОТ СЛУЖИТЕЛИ E ВЪТРЕШЕН МЕНИДЖЪР НА ПРИСЪЕДИНЯВАНЕ M ON E.MANAGERID =M.MANAGERID, КЪДЕ ЗАПЛАТА> 57000 ИЛИ ОТДЕЛ ='preORACLE>В горната заявка извлечехме идентификационния номер на служителя, собственото име, заплатата и отдела от таблицата на служителя и идентификатора на мениджъра и името на мениджъра от таблицата на мениджъра, където идентификаторът на мениджъра от таблицата служители е равен на идентификатора на мениджъра от мениджър само тези служители, чиито заплатата е по-голяма от 57 000 или отделът е Oracle.
Резултатът от горната заявка е:
ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ | FIRST_NAME | LAST_NAME | ЗАПЛАТА | ГРАД | ОТДЕЛ | MANAGERID |
1001 | VAIBHAVI | МИШРА | 65500 | ПУНА | ORACLE | 1 |
2001 | PRACHI | ШАРМА | 55500 | ЧАНДИГАР | ORACLE | 1 |
4003 | РУЧИКА | AGARWAL | 60 000 | ДЕЛХИ | ORACLE | 1 |
6003 | НИКИТА | ИНГАЛЕ | 65 000 | ХАЙДЕРАБАД | ORACLE | 1 |
2002 | BHAVESH | ДЖЕЙН | 65500 | ПУНА | FMW | 2 |
3003 | DEEPAM | ДЖАУХАРИ | 58500 | МУМБАЙ | JAVA | 3 |
5002 | SANKET | ЧАУХАН | 70 000 | ХАЙДЕРАБАД | JAVA | 3 |
4001 | РАДЖЕШ | GOUD | 60500 | МУМБАЙ | ТЕСТВАНЕ | 4 |
1002 | VAIBHAV | ШАРМА | 60 000 | NOIDA | C# | 5 |
6002 | АТИС | JADHAV | 60500 | БАНГАЛОР | C# | 5 |
В горния изход се показват само онези записи на служителите, чиято заплата е по-голяма от 57 000 или отделът за служители е „Oracle“. Операторът OR показва записи, ако едно от дадените условия в заявката е вярно.