Oracle Natural Join
Что такое естественное соединение в Oracle?
- Объединение основано на всех столбцах в двух таблицах с одинаковыми именами и типами данных.
- Объединение создается с использованием ключевых слов NATURAL JOIN.
- Он выбирает строки из двух таблиц, которые имеют одинаковые значения во всех сопоставляемых столбцах.
- При указании столбцов, участвующих в естественном объединении, не указывайте имя столбца с именем таблицы или псевдонимом таблицы.
SQL: 1999 синтаксис
ВЫБЕРИТЕ table1.column, table2.column ИЗ таблицы 1 ЕСТЕСТВЕННОЕ СОЕДИНЕНИЕ table2;
Где table1, table2 - это имена таблиц, участвующих в объединении.
Пример: Oracle Natural Joins
В этом примере таблица LOCATIONS присоединяется к таблице COUNTRY с помощью столбца country_id, который является единственным столбцом с одинаковым именем в обеих таблицах. Если бы присутствовали другие общие столбцы, объединение использовало бы их все.
Пример таблицы: расположение
Пример таблицы: страны
Код SQL:
SQL> SELECT postal_code, city,
2 region_id, country_name
3 FROM locations
4 NATURAL JOIN countries;
Пример вывода:
POSTAL_CODE CITY REGION_ID COUNTRY_NAME ------------ ------------------------------ -------- - ------------------------- 00989 Рома 1 Италия 10934 Венеция 1 Италия 1689 Токио 3 Япония 6823 Хиросима 3 Япония 26192 Саутлейк 2 Соединенные Штаты Америки 99236 Южный Сан-Франциско 2 Соединенные Штаты Америки 50090 Южный Брансуик 2 Соединенные Штаты Америки 98199 Сиэтл 2 Соединенные Штаты Америки M5V 2L7 Торонто 2 Канада YSW 9T2 Whitehorse 2, Канада 190518 Пекин 3 Китай 490231 Бомбей 3 Индия 2901 Сидней 3 Австралия 540198 Сингапур 3 Сингапур Лондон 1 Великобритания OX9 9ZB Оксфорд 1 Великобритания 09629850293 Стретфорд 1 Великобритания 80925 Мюнхен 1 Германия 01307-002 Сан-Паулу 2 Бразилия 1730 Женева 1 Швейцария 3095 Берн 1 Швейцария 3029SK Утрехт 1 Нидерланды 11932 Мехико 2 Мексика 23 строки выбраны.
Natural объединяет с предложением WHERE
Вы можете реализовать дополнительные ограничения для естественного объединения, используя предложение WHERE. В предыдущем примере таблица LOCATIONS была присоединена к таблице DEPARTMENT с помощью столбца COUNTRY_ID, теперь вы можете ограничить строки вывода теми, чей location_id превышает 2000.
Код SQL:
SQL> SELECT postal_code, city,
2 region_id, country_name
3 FROM locations
4 NATURAL JOIN countries
5 WHERE location_id>2000;
Пример вывода:
POSTAL_CODE CITY REGION_ID COUNTRY_NAME ------------ ------------------------------ -------- - ------------------- 490231 Бомбей 3 Индия 2901 Сидней 3 Австралия 540198 Сингапур 3 Сингапур Лондон 1 Великобритания OX9 9ZB Оксфорд 1 Великобритания 09629850293 Стретфорд 1 Великобритания 80925 Мюнхен 1 Германия 01307-002 Сан-Паулу 2 Бразилия 1730 Женева 1 Швейцария 3095 Берн 1 Швейцария 3029SK Утрехт 1 Нидерланды 11932 Мехико 2 Мексика 12 выбранных рядов.
Выводы указанного оператора SQL, показанного здесь, взяты с использованием Oracle Database 11g Express Edition.
ЕСТЕСТВЕННЫЕ СОЕДИНЕНИЯ: SQL и другие реляционные базы данных
Предыдущий: НЕ EQUIJOINS
Далее: СОЕДИНЯЕТСЯ с предложением ON
Новый контент: Composer: менеджер зависимостей для PHP , R программирования