马士兵老师oracle视频学习笔记(二)

[size=large]子查询:
select deptno,ename,sal from emp where sal in(select max(sal) from emp group by deptno);
上面这个写法有问题,如果其他部门有个人的工资也在这三个薪水里面,那么信息也会被选出。
select ename,sal from emp join (select max(sal) maxsal ,deptno from emp group by deptno) t on (emp.deptno = t.deptno and emp.sal = t.maxsal);
上面代码的意思是:找出每个部门工资最高的人的姓名和薪水。

select grade,ename,sal from emp e join (select max(sal) maxsal,deptno from emp group by deptno) t on (e.deptno = t.deptno and e.sal = t.maxsal) join salgrade g on (e.sal >= losal and e.sal <= hisal);
上面代码的意思是:找出每个部门工资最高的人的姓名和薪水和薪水等级
1999年新标准:
等值连接:
select ename,dname from emp,dept where emp.deptno = dept.deptno;
select ename,dname from emp join dept on emp.deprno = dept.deptno;
select ename,dname from emp join dept using(deptno); //不推荐
上面三句sql等同。

非等值连接:
select sal,grade from emp join salgrade on sal between losal and hisal;

select ename,dname,sal,grade from emp join dept on emp.deptno = dept.deptno join salgrade on sal between losal and hisal where ename not like '_A%';

select e1.ename,e2.ename from emp e1 left join emp e2 on e1.mgr = e2.empno; 左连接(将左边多余的取出来)

select ename,dname from emp e right join dept d on e.deptno = d.deptno; 右连接(将右边多余的取出来)

select ename,dname from emp e full join dept d on e.deptno = d.deptno; 全连接(将左右多余的都取出来)[/size]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值