Введение в Joins в Oracle

Объединения в Oracle используются для доступа к данным из нескольких таблиц. Объединение в oracle используется в месте, где нужно объединить более двух таблиц для сбора полезной информации в операторе Oracle SQL. Другими словами, запрос на соединение, используемый для получения строк из более чем двух таблиц или представлений, основывается на условиях соединения. Условие соединения может быть указано в предложении FROM или в предложении where. Условие соединения сравнивает столбцы разных таблиц и извлекает те строки, для которых условие соединения выполняется.

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

В Oracle есть десять различных типов соединений, как указано ниже:

  • Внутренние соединения (также известные как простые соединения)
  • Equi Joins
  • Внешние соединения
  • Левые внешние соединения (также называемые левыми соединениями)
  • Правые внешние соединения (также называемые правыми соединениями)
  • Полные внешние соединения (также называемые полными соединениями)
  • Самостоятельно присоединяется
  • Перекрестные соединения (также называемые декартовыми произведениями)
  • Анти-Джоинс
  • Полу-соединения

Далее, мы понимаем каждое соединение подробно с синтаксисом и примерами.

1. ВНУТРЕННЕЕ СОЕДИНЕНИЕ (также известное как Простое соединение)

Внутренние объединения объединяют несколько таблиц и возвращают те строки, для которых выполняется условие объединения. Внутреннее соединение является наиболее распространенным соединением среди типов объединения.

Синтаксис:

SELECT column (, column ) FROM t1
INNER JOIN t2
ON t1.column = t2.column;

На диаграмме ниже представлено визуальное представление внутреннего соединения, так как на диаграмме заштрихованная область возвращается в результате соединения Oracle INNER JOIN:

Oracle INNER JOIN возвращает в результате записи о пересечении t1 и t2.

Пример:

SELECT employee.employee _id, employee.employee_name, department. department_name
FROM employee
INNER JOIN department
ON employee.employee _id = department.employee _id;

Приведенный выше пример Oracle INNER JOIN вернет все строки из таблиц сотрудников и отделов, в которых значения _id сотрудника в таблицах сотрудников и отделов совпадают.

2. Equi Joins

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

Синтаксис:

SELECT column (, column ) FROM t1, t2
where t1.column = t2.column;

На приведенной ниже диаграмме представлено визуальное представление эквиджоина, поскольку на диаграмме заштрихованная область возвращается в результате соединения Oracle Equi.

Oracle Equijoin возвращает в результате записи о пересечении t1 и t2.

Пример:

SELECT employee.employee _id, employee.employee_name, department. department_name
FROM employee, department
where employee.employee _id = department.employee _id;

Приведенный выше пример Oracle Equijoin вернет все строки из таблиц сотрудников и отделов, в которых значения _id сотрудника в таблицах сотрудников и отделов совпадают.

3. Внешние соединения

Другой тип объединений - это внешнее объединение, которое возвращает результат внутреннего объединения плюс все строки из одной таблицы, для которых условие соединения не выполняется.

Синтаксис:

SELECT column (, column ) FROM t1
LEFT | RIGHT | FULL (OUTER) JOIN t2
ON t1.column = t2.column;

Ниже приведены три типа внешнего соединения:

  • Левые внешние соединения (также называемые левыми соединениями)
  • Правые внешние соединения (также называемые правыми соединениями)
  • Полные внешние соединения (также называемые полными соединениями)

4. Левое внешнее соединение

Возвращения Left Outer Join содержат все строки из таблицы LEFT (согласно указанному в условии ON), а из другой таблицы - только те строки, в которых условие соединения имеет значение true.

Синтаксис:

SELECT column (, column ) FROM t1
LEFT (OUTER) JOIN t2
ON t1.column = t2.column;

Ключевое слово LEFT OUTER JOIN, используйте LEFT JOIN в некоторых других базах данных.

Приведенная ниже диаграмма представляет визуальное представление LEFT OUTER JOIN, так как на диаграмме заштрихованная область возвращается как результат Oracle LEFT OUTER JOIN:

Oracle LEFT OUTER JOIN возвращает все записи из t1 и пересекающиеся записи из t1 и t2 в результате.

Пример:

SELECT employee.employee _id, employee.employee_name, department.department_name
FROM employee
LEFT OUTER JOIN department
ON employee.employee _id = department.employee _id;

Приведенный выше пример Oracle LEFT OUTER JOIN вернет все строки из таблицы сотрудников и из таблицы отделов только те строки, для которых выполняется условие соединения. Таблицы отделов, в которых значения _id сотрудника в таблицах сотрудников и отделов совпадают.

Если значение _id сотрудника в таблице сотрудников совпадает в таблице отделов, то в результате поля таблицы отделов будут нулевыми.

5. Правильное внешнее соединение

Возвращения RIGHT OUTER JOIN содержат все строки из таблицы RIGHT (согласно указанному в условии ON), а из другой таблицы - только те строки, для которых условие соединения является истинным.

Синтаксис:

SELECT column (, column ) FROM t1
RIGHT (OUTER) JOIN t2
ON t1.column = t2.column;

Ключевое слово RIGHT OUTER JOIN, используется как RIGHT JOIN в некоторых других базах данных.

На приведенной ниже диаграмме представлено визуальное представление правого внешнего соединения, так как на диаграмме заштрихованная область возвращается в результате Oracle RIGHT OUTER JOIN.

Oracle RIGHT OUTER JOIN возвращает все записи из t2 и пересекающиеся записи из t1 и t2 в результате.

Пример:

SELECT employee.employee _id, employee.employee_name, department.department_name
FROM employee
RIGHT OUTER JOIN department
ON employee.employee _id = department.employee _id;

Приведенный выше пример Oracle LEFT OUTER JOIN вернет все строки из таблицы отдела, а из таблицы сотрудника - только те строки, для которых условие соединения выполнено. Таблицы сотрудников, в которых значения _id сотрудника в таблицах сотрудников и отделов совпадают.

Если значение _id сотрудника в таблице сотрудников совпадает в таблице отделов, то в результате поля таблицы сотрудников будут нулевыми.

6. Полное внешнее соединение

Возвраты Full Outer Join содержат все строки из таблицы LEFT и RIGHT с нулевым значением в полях, где условие соединения не соответствует действительности.

Синтаксис:

SELECT column (, column ) FROM t1
FULL (OUTER) JOIN t2
ON t1.column = t2.column;

Ключевое слово FULL OUTER JOIN, используется как FULL JOIN в некоторых других базах данных.

На приведенной ниже диаграмме представлено визуальное представление FULL OUTER JOIN, так как на диаграмме заштрихованная область возвращается в результате Oracle FULL OUTER JOIN.

Oracle FULL OUTER JOIN возвращает в результате все записи из таблиц t1 и t2.

Пример:

SELECT employee.employee _id, employee.employee_name, department.department_name
FROM employee
FULL OUTER JOIN department
ON employee.employee _id = department.employee _id;

Приведенный выше пример Oracle FULL OUTER JOIN вернет все строки из таблицы сотрудников и таблицы отделов со значениями NULL, если условие соединения не соответствует действительности.

7. Oracle Self Joins

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

Пример:

SELECT emp1.employee_name || 'works for' || emp2.employee_name
FROM employees emp1, employees emp2
WHERE emp1.manager_id = emp2.employee_id
ORDER BY emp1.employee_name;

Этот приведенный выше пример Oracle self JOIN вернет все строки из таблицы employee, где условие соединения имеет значение true.

8. Кросс-соединения Oracle (также называемые декартовыми произведениями)

Перекрестное объединение применяется, когда две таблицы не имеют условия соединения. Перекрестное объединение возвращает декартово произведение двух таблиц, декартово произведение, где каждая строка одной таблицы объединяется с каждой строкой другой таблицы. Предположим, что table1 содержит 100 строк, а table2 содержит 10 строк, тогда результат объединения будет содержать 1000 строк.

Пример;

SELECT employee.employee _id, employee.employee_name, department.department_name
FROM employee
CROSS JOIN department

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

9. Oracle Anti Joins

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

Пример:

SELECT employee.employee _id, employee.employee_name, department.department_name
FROM employee
WHERE department_id NOT IN (SELECT department_id from department
WHERE department_name = 'sales';

Приведенный выше пример Oracle ANTI JOIN вернет строки из таблицы employee, где условие соединения имеет значение true.

10. Полу-соединения Oracle

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

Пример:

SELECT employee.employee _id, employee.employee_name
FROM employee
WHERE EXISTS (SELECT department_id FROM department
WHERE department_name = 'sales');

Этот пример Oracle SEMI JOIN вернет строки из таблицы employee, если EXISTS вернет true.

Вывод

Он используется для доступа к данным из нескольких таблиц. В Oracle существует семь различных типов соединений.

Рекомендуемые статьи

Это руководство по соединениям в Oracle. Здесь мы обсуждаем введение в соединения в Oracle и его 10 различных типов в соединениях в Oracle. Вы также можете просмотреть другие наши статьи, чтобы узнать больше -

  1. Типы объединений в SQL
  2. Tableau Joins
  3. Oracle Warehouse Builder
  4. Строковые функции Oracle
  5. Что такое запрос и типы запросов Oracle
  6. 6 лучших типов соединений в MySQL с примерами
  7. Руководство по первым девяти пунктам Oracle (пример)
  8. SELECT в MySQL | Примеры для выбора в MySQL