Диаграммы Венна не очень полезны для понимания естественного соединения или внутреннего соединения.Большинство диаграмм Венна, связанных с объединениями при переполнении стека, представляют собой бесполезные искажения - даже в тех случаях, когда диаграмма Венна может быть полезна.
Вот некоторые допустимые варианты использования диаграмм Венна для естественного объединения SQL:
Если вы игнорируете порядок столбцов, мы можем иметь область, представляющую собой набор, элементами которого являются имена столбцов ассоциированной таблицы.Тогда элементы левого и правого кругов - это имена столбцов левой и правой таблиц, а объединенные элементы - имена столбцов результата.
Если столбцы входной таблицы с одинаковым именем имеют одинаковый тип, то мы можем получитьобласть будет набором, элементы которого являются значениями subrow, которые появляются где-то в таблице для общих столбцов.Тогда элементы левого и правого кругов - это такие значения подстроки левой и правой таблиц, а элементы пересечения - такие значения подстроки результата.
Но ни диаграмма, ни пара не сообщают нам, каковы выходные строки.
Из моего ответа на CROSS JOIN vs INNER JOIN в SQL Server 2008 :
Диаграммы Венна Диаграмма Венна с двумя пересекающимися кругамиможет проиллюстрировать разницу между выходными строками для INNER, LEFT, RIGHT & FULL JOIN для одного и того же входа.И когда ВКЛЮЧЕНО, безусловно, ИСТИНА, результат ВНУТРЕННЕГО СОЕДИНЕНИЯ такой же, как ВРЕМЕННОЕ СОЕДИНЕНИЕ.Также он может иллюстрировать строки ввода и вывода для INTERSECT, UNION и EXCEPT.И когда оба входа имеют одинаковые столбцы, результат INTERSECT такой же, как для стандартного SQL NATURAL JOIN, а результат EXCEPT такой же, как для некоторых идиом, включающих LEFT & RIGHT JOIN.Но это не иллюстрирует, как (INNER) JOIN работает в целом.Это просто кажется правдоподобным на первый взгляд .Он может идентифицировать части ввода и / или вывода для особых случаев ON, PK (первичные ключи), FK (внешние ключи) и / или SELECT.Все, что вам нужно сделать, чтобы увидеть это, это определить , что именно являются элементами наборов, представленных кружками .(Какие запутанные представления никогда не проясняются.) (Помните, что обычно для объединений выходные строки имеют разные заголовки от входных строк .)
Я повторяю с акцентом:
Но это не иллюстрирует, как (INNER) JOIN работает в целом.
Все, что вам нужно сделать, чтобы увидеть это, это определить что именно являются элементами наборов, представленных кружками .
Из моих комментариевв ответе о его расширенной диаграмме Эйлера «Рисунок 2» для перекрестного соединения (которую я ошибочно называю Венном) и его диаграмме Венна «Рисунок 1» для внутреннего соединения (используя «ключ» в смысле «легенды»):
Ключ рисунка 2 является сложным: он окружает (нерелевантные по цвету) элементы аргумента CROSS JOIN & число (значение не имеет значения) является его строкой, а строка (не имеет значения цвет) являетсястрока результатов.Для таблиц в виде сумок это , а не диаграмма Венна: для строк в качестве значений это неправильно;для строк как элементов они не могут быть общими.Для таблиц в виде наборов вам не нужна диаграмма Венна.Рисунок 1 - это обычная ужасная попытка объяснить JOIN.Его ключ также сложен: он предназначен только для таблиц в виде наборов и только для сравнения и только для одного [столбца];он также представляет входные данные иначе, чем выходные данные.Напишите it ['s legend ] для JOIN в целом.
Из моих комментариев к В чем разница между «INNER JOIN» и«НАРУЖНОЕ СОЕДИНЕНИЕ»? :
Диаграммы Венна показывают элементы в наборах. Просто попробуйте точно определить, что это за наборы и каковы элементы этих диаграмм. Наборы не являются таблицами, а элементы не являются их строками. Также можно объединить любые две таблицы, поэтому PK и FK не имеют значения. Все фальшивая . Ты делаешь то же, что и тысячи других - у тебя смутное впечатление ты (ошибочно) предполагаешь имеет смысл.
Из ответов и комментариев и их ссылок ниже только одна фактически объясняет, как диаграммы Венна представляют операторы: Область пересечения окружности представляет собой набор строк в A JOIN B. Область, уникальная для каждой окружности, представляет набор строк, который вы получите, взяв строки его таблицы, которые не участвуют в A JOIN B, и добавив столбцы, уникальные для другой таблицы, которые все имеют значение NULL. (И большинство дают смутное поддельное соответствие кругов А и В.)
Таким образом, диаграммы Венна актуальны для определенных случаев , где можно разумно считать, что таблицы содержат наборы рядовых элементов . Но в общем случае таблицы SQL не содержат наборов элементов со строковыми значениями, а диаграммы Венна обозначают наборы.
Перечень внутренних и внешних объединений с помощью диаграмм Венна:
С мой комментарий о левом соединении и левом внешнем соединении в SQL Server
Диаграммы Венна: если не введены нулевые или повторяющиеся строки, поэтому мы можем взять таблицу как набор значений со значениями строк и использовать нормальную математику =, тогда диаграммы Венна в порядке - с кружками для удержания левого и правого соединения выходных таблиц / наборов . Но если вводятся нулевые или повторяющиеся строки, то так сложно объяснить, что представляют собой наборы окружностей и как эти наборы связаны с таблицами / пакетами ввода и вывода, что диаграммы Венна не помогают.
Из моего комментария к моему ответу в чем разница между «INNER JOIN» и «OUTER JOIN»?
Я должен признать, что, несмотря на мою быструю формулировку в комментариях, поскольку в SQL используются мешки и нули, а культура SQL не имеет общей терминологии для обозначения и различия между соответствующими понятиями, нетривиально даже ясно объяснить, как элементы диаграмма Венна - 1: 1 с выходными «строками», не говоря уже о «строках». Или то, что делают внутренние или внешние соединения, не говоря уже об их разнице. «value» может включать или не включать NULL, «row» может быть списком значений против слота в табличном значении или переменной, а «=» может быть SQL »=« vs равенство.
PS Часто диаграммы называются диаграммами Венна , когда они действительно диаграммы Эйлера .