子查询
1、一般用户登录报错shared memory realm does not exist解决问题办法,以系统管理员登录,键入startup open。
2、子查询:
? ? ? 1)解决的问题:不能一步求解的时候,就可以考虑用子查询。
? ? ? ?2)注意的问题:
? ? ? ? ? ? a.将子查询放在括号中;
? ? ? ? ? ? b.采用合理的书写习惯;
? ? ? ? ? ? c.可以在主查询的where、select、from、having放子查询,但是不可以放在group by后面放子查询;
? ? ? ? ? ? d.当子查询放在from后面时,把子查询结果看成一张表。
? ? ? ? ? ? e.主查询与子查询可以不是同一张表,只要子查询返回的结果,主查询可以使用。
? ? ? ? ? ? f.一般不在子查询中使用order by,但在Top-n问题分析中,必须使用order by。
? ? ? ? ? ? g.一般情况,先执行子查询,再执行主查询,但是相关子查询除外。
? ? ? ? ? ? h.子查询分为单行子查询和多行子查询,单行子查询只能使用单行操作符,多行子查询只能使用多行操作符。
? ? ? ? ? ? i.子查询中的null值问题。
? ? ? ? ? ? j.select后面的子查询必须是单行子查询。单行子查询:子查询只返回一条记录。
? ? ? ? ? ? k.子查询可以嵌套使用。
3、如果子查询和多表查询都可以解决问题,理论上应该尽量使用多表查询。
4、多行子查询中的null值问题。子查询中含有null,不能使用not in操作符。
5、集合运算操作符union/union all、intersect、minus
? ? ? ? 1)注意问题:a.参与运算的集合必须列数相同且类型一致。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?b.采用第一个集合的表头作为最后的表头。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?c.如果要排序,必须在每个集合后使用相同的order by。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?d.可以使用括号改变运算顺序。
6、打开SQL语句执行时间命令set timing on。
7、rownum(伪列)行号永远安装默认的顺序生成,行号只能使用<,<=这样的,不能使用>,>= ?
8、相关子查询: 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=d.deptno);找到员工表中薪水大于本部门平均薪水的员工。把主查询中的某个参数传递给了子查询。
9、wm_concat()行转列函数。