Oracle笔记(四)



子查询:
为其他sql语句提供数据。有时候我们在执行某一条sql语句时需要的数据不是确定值,必须要先查询一次表的到,那么先执行的这个查询语句往往是嵌套实际要执行的sql语句之中,为其提供数据的,那么这个查询语句就是子查询。
查询与BLAKE相同部门人的姓名
SELECT ename ,deptno FROM emp_tzm where  deptno = (SELECT deptno FROM emp_tzm where ename = 'BLAKE')

子查询根据查询结果的字段数量与记录数分为:
单行单列子查询
多行单列子查询
多行多列子查询

其中单列子查询常用与WHERE中作为过滤条件中

而多列常当作一张表看待出现在FROM子句中

查找和SCOOT同职位的员工
SELECT ename FROM emp_tzm e WHERE job = (SELECT job FROM emp_tzm WHERE ename = 'SCOTT');
查找比平均薪水高的员工
SELECT ename,sal FROM emp_tzm e WHERE sal>(SELECT AVG(sal) FROM emp_tzm);

查看与SALESMAN同部门的其他职位

SELECT ename ,job ,deptno FROM emp_tzm WHERE deptno IN (SELECT deptno FROM emp_tzm WHERE job = 'SALESMAN') AND job <> 'SALESMAN'

EXISTS 关键子后面根一个子查询,只要该查询能够查询出至少一条记录,那么就会返回true

查看有员工的部门

SELECT deptno ,dname FROM dept_tzm d WHERE EXISTS(SELECT * FROM emp_tzm e WHERE d.deptno = e.deptno);


查询列出最低薪水高于部门30的最低薪水的部门信息
SELECT MIN(sal),deptno FROM emp GROUP BY deptno HAVING MIN(sal)>(SELECT MIN(sal)FROM emp WHERE deptno = 30)

比自己所在部门平均工资高的员工
SELECT e.ename,e.sal,e.deptno 
FROM emp_tzm e,(SELECT AVG(sal) avg_sal,deptno FROM emp_tzm  GROUP BY deptno) t

WHERE  e.deptno = t.deptno AND e.sal>t.avg_sal;


子查询出现在SELECT子句中,通常是实现外连接的效果:

SELECT e.ename ,e.sal,(SELECT d.dname FROM dept_tzm d WHERE d.deptno = e.deptno) dname FROM emp_tzm e;

阅读更多
上一篇Oracle笔记(三)
下一篇Matlab和java间socket通信
想对作者说点什么? 我来说一句

oracle笔记总结

2011年06月23日 20KB 下载

Oracle 入门文档

2011年05月12日 62KB 下载

Oracle 入门文档2

2011年06月20日 122KB 下载

Oracle笔记Oracle笔记

2011年08月22日 147KB 下载

oracle学习笔记.docx

2010年08月25日 34KB 下载

oracle经典笔记

2018年01月11日 19.62MB 下载

Oracle 笔记.rar

2009年09月17日 27KB 下载

没有更多推荐了,返回首页

关闭
关闭