Первое - это НАРУЖНОЕ соединение. Это показывает строки из таблицы A, даже если в таблице B. нет соответствующей строки. Предположим, что таблицы содержат следующие данные:
select a.name, a.sector_id from tb_industry a;
name sector_id
---- ---------
A 1
B 2
C 3
Select b.id, b.name from tb_sector b;
id name
-- ----
1 X
2 Y
(обратите внимание, что строки tb_sector с идентификатором 3 не существует.)
Внешнее объединение по-прежнему возвращает все строки из таблицы A с NULL для значений, которые должны были прийти из таблицы B:
select a.name, a.sector_id, b.name as sector_name
from tb_industry a left outer join tb_sector b on a.sector_id = b.id;
name sector_id sector_name
---- --------- -----------
A 1 X
B 2 Y
C 3
Другой запрос (соединение INNER) пропускает несопоставленную строку:
select a.name, a.sector_id, b.name as sector_name
from tb_industry , tb_sector b where a.sector_id = b.id;
name sector_id sector_name
---- --------- -----------
A 1 X
B 2 Y
Следующий запрос также является внутренним соединением с использованием более нового синтаксиса соединения ANSI:
select a.name, a.sector_id, b.name as sector_name
from tb_industry a
join tb_sector b on a.sector_id = b.id;
name sector_id sector_name
---- --------- -----------
A 1 X
B 2 Y
Без ключевого слова OUTER объединение является внутренним объединением.