Зарегистрируйтесь, чтобы продолжить обучение

Вспомним JOIN Продвинутые SQL-запросы

В этом уроке мы вспомним типы соединений JOIN. Это один из ключевых операторов SQL, который позволяет объединять данные из разных таблиц. JOIN позволяет совмещать информацию из нескольких таблиц на основе связанных значений в них, что позволяет получить более полные и сложные результаты запросов к базе данных.

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

Соединение INNER JOIN

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

SELECT *
FROM table1
INNER JOIN table2
ON table1.key_column = table2.key_column;
Соединение INNER JOIN

Соединение LEFT JOIN

LEFT JOIN - это операция объединения, которая возвращает все строки из левой таблицы table1 и только соответствующие строки из правой таблицы table2. Если в правой таблице нет соответствующей строки, то возвращается NULL для значений правой таблицы.

SELECT *
FROM table1
LEFT JOIN table2
ON table1.key_column = table2.key_column;
Соединение LEFT JOIN

Соединение RIGHT JOIN

RIGHT JOIN - это операция объединения, которая возвращает все строки из правой таблицы (table2) и только соответствующие строки из левой таблицы (table1). Если в левой таблице нет соответствующей строки, то возвращается NULL для значений левой таблицы.

SELECT *
FROM table1
RIGHT JOIN table2
ON table1.key_column = table2.key_column;
Соединение RIGHT JOIN

Соединение FULL JOIN

FULL JOIN (или FULL OUTER JOIN) - это операция объединения, которая возвращает все строки из обеих таблиц (table1 и table2), даже если нет соответствующих строк в другой таблице. Если в любой из таблиц нет соответствующих строк, то возвращается NULL для значений этой таблицы.

SELECT *
FROM table1
FULL JOIN table2
ON table1.key_column = table2.key_column;
Соединение FULL JOIN

Соединение CROSS JOIN

CROSS JOIN - это операция объединения, которая возвращает декартово произведение двух таблиц, то есть все возможные комбинации строк из обеих таблиц. При использовании CROSS JOIN каждая строка из левой таблицы будет объединена со всеми строками из правой таблицы.

Соединение CROSS JOIN

Риски и опасности NULL

  • Cравнение значений:

WHERE column name_name = NULL => False
WHERE column_name IS NULL
  • Арифметические вычисления: 5 + NULL = NULL. Любая операция приводит к NULL

  • Сортировка: NULL попадаются в рандомных местах

  • Внешние ключи: Нарушения составления таблиц

  • Агрегирующие функции: NULL значения в агрегатных функциях обрабатываются по особому - они игнорируются.

  • Вывод на экран: Возможное недопонимание результатов, ухудшение пользовательского опыта: сложно воспринимаются, сложно строить графики

Оператор NVL

Оператор NVL позволяет заменить NULL-значения на какое-то дефолтное значение.

Оператор COALESCE

COALESCE возвращает первое не NULL значение из списка. Если все параметры NULL, то функция возвращает NULL.

Оператор DECODE

Функция DECODE не создана для обработки NULL-значений, но ее можно использовать по аналогии с функцией NVL.


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
новый
Google таблицы, SQL, Python, Superset, Tableau, Pandas, визуализация данных, Anaconda, Jupyter Notebook, A/B-тесты, ROI
9 месяцев
с нуля
Старт 26 декабря

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»