Oracle присоединяется

Введение

Базовое определение соединения означает создание комбинации или группы элементов, поэтому соединение SQL — это способ объединения строк из двух или более таблиц на основе общего столбца между ними. Теперь давайте посмотрим, как работает соединение оракула.

Что такое соединения Oracle

Запрос, который объединяет две или более таблиц, столбцов или представлений вместе на основе значений связанных столбцов в обеих таблицах, называется соединением Oracle. Например, первичный ключ первой таблицы и внешние ключи второй таблицы являются связанными столбцами для извлечения соответствующих данных из базы данных, а соединения могут быть внутренними, внешними, левыми внешними, правыми внешними и самостоятельными. join, в зависимости от требований, и все эти соединения поддерживаются в базе данных Oracle.

Теперь давайте возьмем пример и поймем, как работает соединение с оракулом.

Предположим, есть две таблицы

1) Заказы_Детали

Номер заказа Пользовательский ИД Дата заказа
1089 3 01-12-2012
9802 45 02-12-2012
7845 55 03-12-2012

 

2) Клиенты_Детали

Пользовательский ИД Имя Клиента Контактное лицо Страна
01 Рэйчел Джейн Мария Андерас Германия
02 Моника Геллер Мони Алжир
03 Критика К Курц Индия

 

Запрос на объединение вышеуказанных таблиц

ВЫБЕРИТЕ Orders_Details.Order_Id,Customers_Details.Customer_Name, Orders_Details.Order_Date FROM Orders_Details INNER JOIN Customers_Details ON Orders_Details.Customer_Id=Customers_Details.Customer_Id;

 

Вывод запроса:

Номер заказа Имя Клиента Дата заказа
1089 Рэйчел Джейн 01-12-2012
9802 Моника Геллер 02-12-2012
7845 Критика К 03-12-2012

Типы соединений Oracle

Внутреннее соединение

Ключевое слово INNER JOIN выбирает в обеих таблицах записи с одинаковым значением.

ВНУТРЕННЕЕ СОЕДИНЕНИЕ Синтаксис

ВЫБЕРИТЕ имя_столбца(ов) ИЗ таблицы1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ таблица2 ON таблица1.имя_столбца = таблица2.имя_столбца;

 

Пример

ВЫБЕРИТЕ Orders.OrderID, Customers.CustomerName FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

 

Внешнее соединение

Полное внешнее соединение вернет все строки из обеих таблиц.

Пример

ВЫБЕРИТЕ d.department_id, d.role, d.department_name FROM сотрудников e отделов d ON (e.department_id = d.department_id);

Даже если в поле DEPARTMENT нет совпадения, этот запрос возвращает все элементы в таблице EMPLOYEES. Даже если в таблице EMPLOYEES нет совпадений, он извлекает все записи в таблице DEPARTMENTS.

 

Существует два типа внешних соединений

  1. Левое внешнее соединение:

Это вернет все строки из левой таблицы и те же строки из правой таблицы.

Пример:

ВЫБЕРИТЕ e.employee_name, e.department_id, d.department_name FROM сотрудников e LEFT OUTER JOIN отделы d ON (e.department_id = d.department_id);

Даже если в таблице DEPARTMENTS нет совпадений, этот запрос возвращает все строки в таблице EMPLOYEES, которая является левой таблицей.

 

  1. Правое внешнее соединение:

Это вернет все строки из правой таблицы и те же строки из левой таблицы.

Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.

ВЫБЕРИТЕ e.department_id, d.department_name, d.location_id ОТ сотрудников e ПРАВО ВНЕШНЕЕ СОЕДИНЕНИЕ отделов ds ON (e.department_id = d.department_id);

Даже если в наборе данных EMPLOYEES нет совпадений, этот запрос возвращает все записи из таблицы DEPARTMENTS, которая находится справа.

 

Equi Присоединиться

Oracle Equi Joins извлекает значения столбцов многих совпадающих таблиц. Предложение WHERE оператора select содержит условие соединения или оператор сравнения.

В результате Oracle Equijoin возвращает пересекающиеся записи table1 и table2.

Синтаксис

ВЫБЕРИТЕ столбцы [, столбец] ИЗ таблицы1, таблицы2, где таблица1.столбец = таблица2.столбец;

Пример

ВЫБЕРИТЕ e.employee_name, d.department_name FROM сотрудника e, отдела d, где e.employee _id = d.employee _id;

В этом примере Oracle Equijoin извлекаются все элементы с одинаковым значением _id сотрудника из баз данных сотрудников и отделов.

 

Самостоятельное присоединение

С помощью псевдонимов таблиц таблица используется дважды в предложении FROM при самообъединении. Другими словами, «я» прикрепляется к столу. Oracle Self Join объединяет строки в таблице и возвращает их, если условие соединения истинно.

Пример

ВЫБЕРИТЕ e.employee_name || 'работает для' || e.employee_name ОТ сотрудников e1, сотрудников e2 ГДЕ e1.manager_id = e2.employee_id ORDER BY e1.employee_name;

 

Крестовое соединение

Когда между двумя таблицами нет условия соединения, используется перекрестное соединение. Декартово произведение двух таблиц возвращается перекрестным соединением, которое является декартовым произведением, в котором каждая строка одной таблицы объединяется с каждой строкой другой таблицы. Если в таблице 1 100 строк, а в таблице 2 — 10, результат соединения будет содержать 1000 строк.

Пример

ВЫБЕРИТЕ e.employee_name, d.department_name FROM сотрудника e CROSS JOIN отдел d

Этот пример перекрестного соединения возвращает все строки таблицы сотрудников плюс все строки таблицы отделов.

 

Анти-присоединение

Возвращаемые значения антиобъединения содержат строки из таблицы LEFT, где условие соединения истинно (как указано в условии ON).

Пример

ВЫБЕРИТЕ e.employee_name, d.department_name ОТ сотрудника e ГДЕ id_отдела НЕ В (ВЫБЕРИТЕ id_отдела из отдела d ГДЕ имя_отдела = 'продажи';

Строки из таблицы сотрудников будут возвращены в этом примере Oracle ANTI JOIN, если условие соединения истинно.

 

Полуприсоединиться

Возвращаемые полуобъединения содержат уникальные записи из таблицы LEFT, когда подзапрос EXISTS соответствует (как указано в условии ON).

Пример

ВЫБЕРИТЕ e.employee _id, e.employee_name ОТ сотрудника e ГДЕ СУЩЕСТВУЕТ (ВЫБЕРИТЕdepartment_id ОТ отдела WHEREdepartment_name = 'продажи');

Если параметр EXISTS имеет значение true, предыдущий пример Oracle SEMI JOIN будет извлекать записи из таблицы сотрудников.

Автор


Комментарии

Оставьте комментарий

Ваш электронный адрес не будет опубликован. Обязательные поля помечены * *

Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются ваши данные комментариев.