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

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

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

Видео: Разница между внутренним и внешним соединением
Видео: Курс по SQL. Урок 8. Соединения таблиц. JOIN. Внутренние и внешние соединения. 2024, Июль
Anonim

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

Внутреннее соединение и внешнее соединение - это два метода соединения SQL, используемые при обработке запросов для баз данных. Они принадлежат к семейству предложений соединения (два других - левое и правое соединения). Однако существует функция Self Join, которую можно использовать в особых случаях. Целью объединения является объединение полей с использованием общих значений в две таблицы. Эти соединения объединяют записи из нескольких таблиц в базе данных. Он создает результирующие наборы, которые можно сохранить как другую таблицу.

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

Наиболее часто используемой операцией SQL Join является внутреннее соединение. Его можно рассматривать как тип соединения по умолчанию, используемый в приложениях. Внутреннее соединение использует предикат соединения для объединения двух таблиц. Предполагая, что две таблицы - это A и B, тогда предикат соединения будет сравнивать строки A и B, чтобы найти все пары, которые удовлетворяют предикату. Значения столбцов всех удовлетворенных строк таблиц A и B объединяются для создания результата. Его можно рассматривать как сначала перекрестное соединение (декартово произведение) всех записей, а затем возврат только тех записей, которые удовлетворяют предикату объединения. Однако на самом деле декартово произведение не вычисляется, потому что оно очень неэффективно. Вместо этого используется хеш-соединение или соединение с сортировкой-слиянием.

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

В отличие от внутреннего соединения, внешнее соединение сохраняет все записи, даже если не может найти совпадающую запись. Это означает, что внешнему соединению нужна запись, чтобы найти совпадающую запись, чтобы она появилась в результате. Вместо этого он вернет все записи, но несопоставленные записи будут иметь нулевые значения. Внешние соединения делятся на три подкатегории. Это левое внешнее соединение, правое внешнее соединение и полное внешнее соединение. Это различие основано на том, какая строка таблицы (левая таблица, правая таблица или обе таблицы) сохраняется при обнаружении несовпадающих записей. Левое внешнее соединение (также известное как просто левое соединение) сохраняет все записи левой таблицы. Это означает, что даже если число совпадающих записей равно нулю, то в таблице результатов все равно будут записи, но будут нулевые значения для всех столбцов B. Другими словами, все значения из левой таблицы возвращаются с совпадающими значениями из правой. table (или нулевые значения, если они не совпадают). Если значения из нескольких строк из левой таблицы совпадают с одной строкой из правой таблицы, строка из правой таблицы будет повторяться по мере необходимости. Правое внешнее соединение очень похоже на левое внешнее соединение, но обращение с таблицами приветствуется. Это означает, что результат будет иметь все строки правой таблицы хотя бы один раз с совпадающими значениями левой таблицы (и нулевыми значениями для несовпадающих правых значений). Полное внешнее соединение является более всеобъемлющим, чем левое и правое внешние соединения. Это приводит к объединению эффекта применения левого и правого внешних соединенных вместе.

В чем разница между внутренним соединением и внешним соединением?

Внутреннее соединение не сохраняет несовпадающие строки в результате, но внешнее соединение сохраняет все записи по крайней мере из одной таблицы (в зависимости от того, какое внешнее соединение использовалось). Таким образом, поведение отсутствия информации о несовпадающих строках в таблице результатов нежелательно, вам нужно всегда использовать одно из внешних соединений (вместо внутреннего соединения). Внутреннее соединение может не дать результата, если совпадений не найдено. Но внешнее соединение всегда будет создавать результирующую таблицу, даже если нет совпадающих строк. Внутреннее соединение всегда будет возвращать таблицы со значениями (если они возвращаются). Но внешние соединения могут привести к таблицам с нулевыми значениями.

Рекомендуемые: