1、sql99 的内连接标准

语法格式:
from  a表  join  b 表  on  表的连接条件  where  过滤条件;
from  a表   inner join  b 表  on  表的连接条件  where  过滤条件;

###
练习
显示 每个部门的名字 和 对应的地区的名字
select d.name,r.name
from s_dept d,s_region r

              where  d.region_id =  r.id;
------------------------------------------------------------------------------------------
  select   d.name,r.name         
          from s_dept d  join  s_region  r  
                 on  d.region_id =  r.id;
------------------------------------------------------------------------------------------
  select   d.name,r.name         
          from s_dept d  inner  join  s_region  r  
                 on  d.region_id =  r.id;

2、sql99 外连接标准

语法格式:
a 表   left   outer  join  b表   on  连接条件  where  过滤条件;
a 表   right  outer  join  b表   on  连接条件  where  过滤条件;
a 表   full   outer  join  b表   on  连接条件  where  过滤条件;

###
左外连接

a 表 left outer join b 表 的意思就是 a 表发起连接,
a表发起连接就代表a表全部被匹配出来。
本质上 也是通过 null 记录进行匹配。

3、

练习
显示每个部门的名字 和 对应的地区的名字  没有地区编号的部门也要显示 
    select d.name,r.name            
         from s_dept d,s_region r  
              where d.region_id = r.id(+);
------------------------------------------------------------------------------------------
    select d.name,r.name            
         from s_dept d left outer join s_region r  
                 on d.region_id = r.id;

4、

练习
查询出所有的普通员工?
    select distinct m.id,m.first_name   
           from s_emp e,s_emp m 
              where e.manager_id(+) = m.id and e.manager_id is null;
------------------------------------------------------------------------------------------
     select  distinct m.id,m.first_name   
           from  s_emp  m  left outer join s_emp  e 
              on e.manager_id = m.id   where  e.manager_id is null;        

5、全外连接

全外连接 只是一个逻辑概念   全外连接的结果集 等于 左外连接的结果集 加上右外连接的结果集
然后排除重复的记录。

全外连接 在Oracle 中 是怎么实现的?
    全外连接 不是通过两端 加 (+) 实现的,而是通过  union   实现的
    union 是可以合并两个结果集 然后排重
    union  all    是 合并两个结果集 不排重 

select id from  s_emp  union  select id from s_emp;
select id from  s_emp  union  all select id from s_emp;