ORCL基础二 连接种类

交叉连接(Cross join)
自然连接(Natural join)
使用Using子句建立连接
使用On子句建立连接
外连接(outer join):左外连接、右外连接、全外连接

 

cross join

结果产生笛卡尔集:
select empno,ename,sal,emp.emptno,dname from emp cross join dept;


natrual join,基于两个表中全部同名列建立连接:
从两个表中选出同名列的值均对应相等的所有行
如果两个表中同名列的数据类型不同,则出错
不允许在参照列上使用表名或者别名作为前缀
select empno,ename,sal,deptno,dname from emp natrual join dept;
select empno,ename,deptno,dname from emp join dept using(deptno);  --使用同名列deptno进

行等值连接
select empno,ename,sal,emp.deptno,dname from emp join dept on(emp.deptno=dept.deptno); 

--可以使用任意连接条件,可以是相同列或不同列,可以是等值连接也可以是不等值连接

 

外连接(outer join):

inner join与outer join:
inner join只返回满足条件的数据
select employee_id,last_name,salary,department_id,department_name from employees join

departments using(department_id);
outer join:
左外连接:返回满足条件的行和左表中不满足条件的行
select employee_id,last_name,salary,department_id,department_name from employees left

join departments using(department_id);
右外连接:返回满足条件的行和右表中不满足条件的行
select employee_id,last_name,salary,department_id,department_name from employees right

join departments using(department_id);
满外连接(Full Outer Join):返回所有满足条件的行与所有不满足条件的行
select employee_id,last_name,salary,department_id,department_name from employees full

outer join departments using(department_id);

 

 

 

 

 

求部门平均薪水的等级

注意连接的写法

 

select deptno, grade  from
(select deptno,avg(sal) avg_sal from emp group by deptno ) t
left join salgrade on t.avg_sal between salgrade.losal and salgrade.hisal

 

 根据一个表建一个新表

 

create table emp2 as select * from emp;

 

 

选出薪水第五到第十高的员工

这个用sqlserver 就很简单了,orcl有点复杂 主要是因为rownum不能用 >


select * from
(
select *
from
(
   select *
   from
   (
    select empno,ename,sal from emp
    order by sal desc
    ) t
    where rownum<=10
) order by sal asc
) where rownum <=6

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值