-
decode(条件,判断条件,ture返回,false返回); to_char(parameter,格式)返回新格式内容;查看全部
-
select empno,ename,sal,(select avg(sal) from emp where deptno=e.deptno) avgsal from emp e where sal>(select avg(sal) from emp where deptno=e.deptno);查看全部
-
子查询的类型 (1)单行子查询:只返回一条记录 操作符:=,>,>=,<,<=,<>不等于 例子:查询员工信息,要求:职位与7566员工一样,薪水大于7782的 select * from emp where job= (select job from emp where empno=7566) and sal>(select sal from emp where empno=7782); (2)多行子查询:返回多条记录 操作符:in 等于列表中的任何一个 any 和子查询返回的任意一个值作比较 all 和子查询返回的所有值比较 例子:(1)in 查询部门名称是sales 和accounting 的员工信息 select *from emp where deptno in (select deptno from dept where dname='SALES' or dname='ACCOUNTING'); select e.* from emp e, dept d where e.deptno=d.deptno and (d.dname='SALES' or d.dname='ACCOUNTING'); (2)any 查询工资比30号部门任意一个员工高的员工信息 select * from emp where sal> any ( select sal from emp where deptno=30); select * from emp where sal>(select min(sal) from emp where deptno=30); (3)all 查询工资比30号部门所有一个员工高的员工信息 select * from emp where sal> all( select sal from emp where deptno=30); select * from emp where sal>(select max(sal) from emp where deptno=30);查看全部
-
ownum是伪列,oracle默认生成行号 行号需要注意的两个问题 1、行号永远按照默认的顺序生成 2、行号只能使用<,<=;不能使用>,>= select rownum,empno,ename,sal from (select * from emp order by sal desc) where rownum<=3; 将排序后的表作为一个集合放到from()中 生成一个新表 重新再查询rownum 就可以让rownum也实现排序了查看全部
-
1.自连接存在的问题:不适合操作大表 解决办法:层次查询 层次查询某些情况下,可以替代自连接 本质上,是一个单表查询 比如: select empno,ename,sal,mgr from emp connect by prior empno=mgr start with empno=7839; 翻译过来就是connect by上一层的员工号=老板号 start with empno=根的号 因为根节点并没有老板,那么我们可以把start with这一句这样表示 start with mgr is null;就表示他的老板是空值. 2.层次查询中提供一个伪列:level,来表示树的深度,我们要想查树的伪列,必须在select中显式的写出来,就像这样: select level,empno,ename,sal,mgr from emp connect by prior empno=mgr start with mgr=null order by 1; 3.自连接的优缺点:结果直观,但不适合操作大表 层次查询的优缺点:是一个单表查询,不会产生笛卡尔集,但是他得到的结果并没有自连接那么直观 需要根据实际问题来选择用自连接还是层次查询。查看全部
-
rollup(a,b)===group by a,b;group by a;group by null查看全部
-
where不能使用组函数,当having与where通用时,使用where,效率高查看全部
-
这个当前还没有用到过,查看全部
-
这里不错,注意收藏查看全部
-
子查询用了伪劣rownum,主查询拿到子查询返回的结果进行查询,这时的rownum就不再是子查询的伪劣了,而是可以作为普通的一列来查询,所以这时可以使用>符号.查看全部
-
SELECT CI_ID, MAX(TO_CHAR(STU_NAME)) STU_NAME FROM ( SELECT PC.CI_ID CI_ID,WM_CONCAT(PS.STU_NAME) OVER(PARTITION BY PC.CI_ID ORDER BY PS.STU_ID) STU_NAME FROM PM_CI PC,PM_STU PS WHERE INSTR(PC.STU_IDS,PS.STU_ID)>0) GROUP BY CI_ID ORDER BY CI_ID;查看全部
-
什么是分组函数? 分组函数作用于一组数据,并对一组数据返回一个值。查看全部
-
红色叉叉,,哈哈哈查看全部
-
where后面不能使用组函数查看全部
-
层次查询有KING 而自查询没有查看全部
举报
0/150
提交
取消