9、表连接的SQL99-标准

来源:互联网 发布:国内组态软件 昆船 编辑:程序博客网 时间:2024/06/14 17:08

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;