- Соединение INNER JOIN
- Соединение LEFT JOIN
- Соединение RIGHT JOIN
- Соединение FULL JOIN
- Соединение CROSS JOIN
- Риски и опасности NULL
- Оператор NVL
- Оператор COALESCE
- Оператор DECODE
В этом уроке мы вспомним типы соединений JOIN
. Это один из ключевых операторов SQL, который позволяет объединять данные из разных таблиц. JOIN
позволяет совмещать информацию из нескольких таблиц на основе связанных значений в них, что позволяет получить более полные и сложные результаты запросов к базе данных.
Соединение INNER JOIN
INNER JOIN
- это операция объединения, которая возвращает только те строки, которые имеют соответствующие значения в обеих таблицах, участвующих в объединении.
SELECT *
FROM table1
INNER JOIN table2
ON table1.key_column = table2.key_column;
Соединение LEFT JOIN
LEFT JOIN
- это операция объединения, которая возвращает все строки из левой таблицы table1
и только соответствующие строки из правой таблицы table2
. Если в правой таблице нет соответствующей строки, то возвращается NULL
для значений правой таблицы.
SELECT *
FROM table1
LEFT JOIN table2
ON table1.key_column = table2.key_column;
Соединение RIGHT JOIN
RIGHT JOIN
- это операция объединения, которая возвращает все строки из правой таблицы (table2) и только соответствующие строки из левой таблицы (table1). Если в левой таблице нет соответствующей строки, то возвращается NULL
для значений левой таблицы.
SELECT *
FROM table1
RIGHT JOIN table2
ON table1.key_column = table2.key_column;
Соединение FULL JOIN
FULL JOIN
(или FULL OUTER JOIN
) - это операция объединения, которая возвращает все строки из обеих таблиц (table1
и table2
), даже если нет соответствующих строк в другой таблице. Если в любой из таблиц нет соответствующих строк, то возвращается NULL
для значений этой таблицы.
SELECT *
FROM table1
FULL JOIN table2
ON table1.key_column = table2.key_column;
Соединение 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
.
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
- Статья «Как учиться и справляться с негативными мыслями»
- Статья «Ловушки обучения»
- Статья «Сложные простые задачи по программированию»
- Вебинар «Как самостоятельно учиться»
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.