2、Select语句高级应用
(多表查询、子查询、嵌套查询、集合操作)
2.1多表查询
2.1.1、多表之间的连接的应用
多表查询允许你在查询的FROM条件后面跟多个表,然后把表之间的关系在WHERE条件后进行连接,如果没有进行连接,所查询的记录将是所有表记录的笛卡儿乘积记录数。 例如:select A.* from 收费项目别名 A收费项目目录 B where A.收费细id=B.ID
2.1.2、外连接
上面的多边查询我们是定的等值连接,而在实际应用过程中,我们可能需要列出一个表的全部记录,如我们做报表的时候需要把所有的部门都显示出来,于是我们引入外连接技术,通过在等式连接的一边加上(+)来表示外连接,(+)放在取全部记录的表的另一边。 例子:
select A.名称,SUM(B.结帐金额) as 结帐金额 from 部门表 A,病人费用记录 B where
A.ID=B.病人科室ID(+) AND 登记时间>sysdate-2 group by a.名称
2.2子查询
可以将子查询(as subquery)或in或exists当成where的一个条件的一部分,这样的查询称为子查询
.where中可以包含一个select语句的子查询
.where中可以包含in,exists语句
.最多可以嵌套16层
.层次过多会影响性能
例如:select * from 收费项目别名 where 收费细id in (select id from 收费项目目录)
2.3嵌套查询
select查询语句里可以嵌入select查询语句,称为嵌套查询。嵌套查询实际上也是子查询。 例子:
select rownum as 序号,药品名称,实际数量 from (select A.名称 as 药品名称,SUM(nvl(b.实际数量,0)) AS 实际数量 from 收费项目目录 A,药品库存 B WHERE A.ID=B.药品ID group by a.名称 order by 实际数量)
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库sql应用培训资料(17)在线全文阅读。
相关推荐: