кодесурса
«SQL

SQL Natural Join

script1adsense2code
script1adsense3code

Что такое естественное соединение в SQL?

Мы уже узнали, что EQUI JOIN выполняет JOIN против равенства или сопоставления значений столбцов соответствующих таблиц, а знак равенства (=) используется в качестве оператора сравнения в предложении where для ссылки на равенство.

SQL NATURAL JOIN является типом EQUI JOIN и структурирован таким образом, что столбцы с одинаковыми именами связанных таблиц появятся только один раз.

Natural Join: Руководство

- Связанные таблицы имеют одну или несколько пар столбцов с одинаковыми именами.
- Столбцы должны быть одного типа данных.
- Не используйте предложение ON в естественном соединении.

Синтаксис:

 ВЫБРАТЬ *
ИЗ таблицы 1
ЕСТЕСТВЕННОЕ СОЕДИНЕНИЕ table2; 

Пример:

Вот пример естественного соединения SQL между таблицами буксировки:

Пример таблицы: продукты


Пример таблицы: компания


Чтобы получить все уникальные столбцы из таблиц продуктов и компаний, можно использовать следующий оператор SQL:

Код SQL:

SELECT *
FROM foods 
NATURAL JOIN company;

Выход:

 COMPANY_ID ITEM_ID ITEM_NAME ITEM_UNIT COMPANY_NAME COMPANY_CITY
---------- ---------- ------------------------- ----- ----- ------------------------- --------------
16 1 Chex Mix Pcs Akas Foods Дели
15 6 Cheez-It Pcs Jack Hill Ltd Лондон
15 2 BN Biscuit Pcs Jack Hill Ltd Лондон
17 3 Mighty Munch PC Гурманы. Лондон
15 4 Пот Райс шт Джек Хилл Лтд Лондон
18 5 Jaffa Cakes Pcs Заказать все Бостон

Наглядная презентация вышеперечисленного Natural Join:

«SQL

Разница между естественным соединением и внутренним соединением

Между INNER JOIN и NATURAL JOIN есть одно существенное различие в количестве возвращаемых столбцов. Смотрите следующий пример в таблице компании и таблице продуктов:

Код SQL:

SELECT * 
FROM company;

Выход:

 COMPANY_ID COMPANY_NAME COMPANY_CITY
---------- ------------------------- ---------------
18 Заказать все Бостон
15 Jack Hill Ltd Лондон
16 Akas Foods Delhi
17 гурманов. Лондон
19 глотков Нью-Йорк

Код SQL:

SELECT * 
FROM foods;

Выход:

 ITEM_ID ITEM_NAME ITEM_UNIT COMPANY_ID
---------- ------------------------- ---------- ----- -----
1 Chex Mix шт 16
6 Cheez-It PC 15
2 BN бисквитные шт 15
3 Могучий Мунк ПК 17
4 Горшок с рисом шт 15
5 Яффских пирогов, шт 18
7 соленых коктейлей шт

ВНУТРЕННЕЕ СОЕДИНЕНИЕ компании и продуктов на company_id вернет:

Код SQL:

SELECT * 
FROM company 
INNER JOIN foods 
ON company.company_id = foods.company_id;

Выход:

 COMPANY_ID COMPANY_NAME COMPANY_CITY ITEM_ID ITEM_NAME ITEM_UNIT COMPANY_ID
---------- --------------- --------------- ---------- --------------- ---------- ----------
16 Akas Foods Delhi 1 Chex Mix PC 16
15 Jack Hill Ltd Лондон 6 Cheez-It PC 15
15 Джек Хилл Лтд. Лондон 2 BN Бисквитные шт. 15
17 гурманов. Лондон 3 Могучий Мунк ПК 17
15 Джек Хилл Лтд. Лондон 4 Горшок с рисом шт. 15
18 Заказать All Boston 5 Jaffa Cakes Pcs 18

Код SQL:

SELECT * 
FROM company
NATURAL JOIN foods;

Выход:

 COMPANY_ID COMPANY_NAME COMPANY_CITY ITEM_ID ITEM_NAME ITEM_UNIT
---------- --------------- --------------- ---------- --------------- ----------
16 Akas Foods Delhi 1 шт. Chex Mix
15 Jack Hill Ltd Лондон, 6 шт.
15 Джек Хилл Лтд. Лондон 2 шт.
17 гурманов. Лондон 3 Могучих Мунк ПК
15 Jack Hill Ltd Лондон 4 шт.
18 Заказать все бостонские 5 яффских пирожных шт

ЕСТЕСТВЕННЫЕ СОЕДИНЕНИЯ: реляционные базы данных

Ключевые моменты для запоминания

Нажмите на следующее, чтобы получить презентацию слайдов -

«SQL

Упражнения по SQL

Хотите улучшить вышеуказанную статью? Вносите свои заметки / комментарии / примеры через Disqus.

Предыдущая: SQL INNER JOIN
Далее: SQL CROSS JOIN

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code