в SQL

Визуальное представление JOIN’ов в SQL

Давно хотел понять для себя смысл и принцип работы JOIN. Особо с ними не работал, так как весь необходимый функционал работы с БД при создании сайтов на MODx у меня всегда был под рукой в виде API. А в те несколько случаев необходимости использования JOIN я обошолся LEFT JOIN‘ом, а дальше лишнее обрабатывал уже в PHP. Знаю, это совсем неправильно, однако оно работало и мне было этого достаточно.

Сейчас я решил улучшить свои знания MySQL.  Почитал литературу, узнал много о типах БД, о настройке и т.п. Теперь пришло время разобраться с JOIN. Я нашел статью по теме, которая наглядно показывает что из себя представляет результат работы JOIN. Представляю вашему вниманию вольный ее перевод (http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html).

Итак, мы имеем 2 таблицы.

Далее, для этих таблиц мы рассмотрим несколько видов JOIN и увидим представление их результатов в виде диаграмм Эйлера-Венна.

1. INNER JOIN

SQL:

Представление в виде таблиц:

Пояснение результата с помощью диаграмм Эйлера-Венна:

INNER JOIN - диаграмма Эйлера - Венна

INNER JOIN — диаграмма Эйлера — Венна

Пояснение словами:

Результатом объединения таблиц с помощью INNER JOIN являются записи, общие для левой и правой таблиц.

2. FULL OUTER JOIN

SQL:

Представление в виде таблиц:

Пояснение результата с помощью диаграмм Эйлера-Венна:

FULL OUTER JOIN - диаграмма Эйлера - Венна

FULL OUTER JOIN — диаграмма Эйлера — Венна

Пояснение словами:

Результатом объединения таблиц с помощью FULL OUTER JOIN являются все записи, которые присутствуют в каждой из таблиц.

3. LEFT OUTER JOIN

SQL:

Представление в виде таблиц:

Пояснение результата с помощью диаграмм Эйлера-Венна:

LEFT OUTER JOIN - диаграмма Эйлера - Венна

LEFT OUTER JOIN — диаграмма Эйлера — Венна

4. LEFT OUTER JOIN за исключением записей, которые присутствую в правой таблице

SQL:

Представление в виде таблиц:

Пояснение результата с помощью диаграмм Эйлера-Венна:

LEFT OUTER JOIN без записей из правой таблицы - диаграмма Эйлера - Венна

LEFT OUTER JOIN без записей из правой таблицы — диаграмма Эйлера — Венна

5. FULL OUTER JOIN за исключением записей, которые присутствуют в обоих таблицах

SQL:

Представление в виде таблиц:

Пояснение результата с помощью диаграмм Эйлера-Венна:

FULL OUTER JOIN без записей, общих для двух таблиц - диаграмма Эйлера - Венна

FULL OUTER JOIN без записей, общих для двух таблиц — диаграмма Эйлера — Венна

Как мы видим, диаграммы наглядно показывают смысл объединения таблиц различными способами. Надеюсь данный материал будет вам полезен в разработке.


Спонсор поста:
Хотите знать когда ваш сайт был оффлайн? Используйте мониторинг сайтов и будете знать что происходило с вашим сайтом.

  • Pingback: SQL JOIN cheat sheet()

  • zigfridus

    Исходные таблицы и таблицы в примерах отличаются содержимым.

  • Спасибо, подправил

  • TL

    2. FULL OUTER JOIN
    таблица в примере имеет не то значение. таблицав 2 Вася ( у вас Виталий)

  • Спасибо, исправил

  • Марьяна

    спасибо! очень помогло!