SQL: различия и использование LEFT JOIN и FROM
Быстрый ответ
Для вывода всех записей из первой таблицы с возможностью увидеть NULL
в случае отсутствия соответствий, используйте LEFT JOIN:
SELECT * FROM table1
LEFT JOIN table2 ON table1.id = table2.fk_id;
Если вам нужны только записи, присутствующие в обеих таблицах, тогда используйте список таблиц в предложении FROM (это эквивалент неявного INNER JOIN):
SELECT * FROM table1, table2
WHERE table1.id = table2.fk_id;
В общем, выбирайте LEFT JOIN, чтобы сохранить всю информацию из основной таблицы, и FROM со списком таблиц для точного совпадения записей.
Освоение операторов JOIN для эффективной работы
Улучшение читабельности кода
Использование явных JOIN-условий облегчает понимание сложных SQL-запросов. Это позволяет четко определить связи между таблицами, минимизируя риск ошибочного создания кросс-джойнов и позволяя администраторам баз данных дольше оставаться в рабочем режиме.
Код для будущих поколений
Не беспокойтесь, что со временем ваши навыки SQL станут устаревшими. JOIN
— это международный стандарт, удовлетворяющий спецификации ANSI SQL-92. Да пребудет с вами актуальность.
Универсальное управление NULL
NULL
может стать причиной проблем, но LEFT JOIN
позволяет без труда включать все записи из первой таблицы и автоматически подставлять NULL
для отсутствующих во второй таблице соответствий, облегчая взаимодействие с SQL.
Устранение двусмысленности
Использование JOIN
помогает составлять запросы на уровне профессионала. Явные объединения исключают неоднозначность при дальнейшей поддержке кода.
Визуализация
Представьте, что у вас проводится вечеринка (🍽️) с двумя списками гостей: друзьями (🧑🤝🧑) и роботами (🤖):
🧑🤝🧑: [Алиса, Боб, Чарли]
🤖: [Бендер, Чарли, Долорес]
LEFT JOIN
работает следующим образом...
🧑🤝🧑🔗🤖: [Алиса, Боб, Чарли, Бендер]
# Вы пригласили ВСЕХ друзей и ТОЛЬКО тех роботов, кто знаком с вашими друзьями. Ваши правила вечеринки!
Когда вы использовали список таблиц из предложения FROM...
🍽️👥: [Чарли]
# Ваш список формировался из обоих источников, но приглашение получил только тот, кто был в обоих списках. Экономия на всем!
Каждый подход придаёт событию свою изюминку!
Мастерство оптимизации запросов
Отсутствие страха перед производительностью
Благодаря четким JOIN-условиям вы обеспечиваете незначительные отличия в производительности и добиваетесь создания логичных и читаемых запросов.
Максимальное использование оптимизатора
JOIN
позволяет оптимизатору запросов проявить его возможности. Вы легко сформируете эффективные SQL-запросы.
Переход от устаревшего синтаксиса
Отказ от старых подходов
Отказывайтесь от устаревшего синтаксиса, такого как a.x = b.x(+)
или a.x *= b.x
. Сфокусируйтесь на современных и понятных конструкциях JOIN
.
Соблюдение стандартов ANSI
Приведите свой SQL-код в соответствие с ANSI, выбирая синтаксис JOIN
, который является признанным и удобным для использования.
Полезные материалы
- Визуальное представление SQL JOIN – CodeProject — подробное и визуальное описание операторов
JOIN
. - Оптимизация производительности JOIN в SQL-базах данных – Use The Index, Luke! — советы по оптимизации операторов
JOIN
, путь к виртуозному владению запросами. - SQL – INNER JOIN против предложения WHERE – Stack Overflow — обсуждение различий между операторами
JOIN
иWHERE
. - Основы плана выполнения – Simple Talk — путь к искусству оптимизации SQL-запросов.
- SQL JOIN – W3Schools — изучение операторов
JOIN
с помощью интерактивного редактора от W3Schools.