Продвинутые SQL-запросы
Теория: Вспомним JOIN
В этом уроке мы вспомним типы соединений JOIN. Это один из ключевых операторов SQL, который позволяет объединять данные из разных таблиц. JOIN позволяет совмещать информацию из нескольких таблиц на основе связанных значений в них, что позволяет получить более полные и сложные результаты запросов к базе данных.
Соединение INNER JOIN
INNER JOIN - это операция объединения, которая возвращает только те строки, которые имеют соответствующие значения в обеих таблицах, участвующих в объединении.
Соединение LEFT JOIN
LEFT JOIN - это операция объединения, которая возвращает все строки из левой таблицы table1 и только соответствующие строки из правой таблицы table2. Если в правой таблице нет соответствующей строки, то возвращается NULL для значений правой таблицы.
Соединение RIGHT JOIN
RIGHT JOIN - это операция объединения, которая возвращает все строки из правой таблицы (table2) и только соответствующие строки из левой таблицы (table1). Если в левой таблице нет соответствующей строки, то возвращается NULL для значений левой таблицы.
Соединение FULL JOIN
FULL JOIN (или FULL OUTER JOIN) - это операция объединения, которая возвращает все строки из обеих таблиц (table1 и table2), даже если нет соответствующих строк в другой таблице. Если в любой из таблиц нет соответствующих строк, то возвращается NULL для значений этой таблицы.
Соединение CROSS JOIN
CROSS JOIN - это операция объединения, которая возвращает декартово произведение двух таблиц, то есть все возможные комбинации строк из обеих таблиц. При использовании CROSS JOIN каждая строка из левой таблицы будет объединена со всеми строками из правой таблицы.
Риски и опасности NULL
- Cравнение значений:
- Арифметические вычисления:
5 +
NULL=NULL. Любая операция приводит кNULL - Сортировка:
NULLпопадаются в рандомных местах - Внешние ключи: Нарушения составления таблиц
- Агрегирующие функции:
NULLзначения в агрегатных функциях обрабатываются по особому - они игнорируются. - Вывод на экран: Возможное недопонимание результатов, ухудшение пользовательского опыта: сложно воспринимаются, сложно строить графики
Оператор NVL
Оператор NVL позволяет заменить NULL-значения на какое-то дефолтное значение.
Оператор COALESCE
COALESCE возвращает первое не NULL значение из списка. Если все параметры NULL, то функция возвращает NULL.
Оператор DECODE
Функция DECODE не создана для обработки NULL-значений, но ее можно использовать по аналогии с функцией NVL.




