9、表连接的SQL99-标准

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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值