Oracle高级SQL培训与讲解
1 With子句
1.1 学习目标
掌握with子句用法,并且了解with子句能够提高查询效率的原因。
1.2 With子句要点
1. with子句的返回结果存到用户的临时表空间中,只做一次查询,反复使用,提高效率。
2. 如果定义了with子句,而在查询中不使用,那么会报ora-32035 错误:未引用在with子句中定义的查询名。
3. 前面的with子句定义的查询在后面的with子句中可以使用。但是一个with子句内部不能
嵌套with子句。
4. 当一个查询块名字和一个表名或其他的对象相同时,解析器从内向外搜索,优先使用子查询块名字。
5. with查询的结果列有别名,引用的时候必须使用别名或*。
6. with有可能影响执行计划。
1.3 with子句语法
With alias_name as (select1), --as和select中的括号都不能省略
alias_name2 as (select2),--后面的没有with,逗号分割,同一个主查询同级别地方,with子
查询只能定义一次
alias_namen as (select n) –与下面的实际查询之间没有逗号