博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle数据库中几种非常有用的函数(with……as等)
阅读量:4292 次
发布时间:2019-05-27

本文共 783 字,大约阅读时间需要 2 分钟。

在实际项目开发中,灵活应用数据库中已有的函数,往往可在很大程度上减少程序代码层面的控制逻辑,降低项目复杂度,且提高运行效率。本篇介绍的主要函数有:with..as、exists/in及not exists/not in、union(all)、decode等

with ... as

当在sql查询时需要对有规律的一批数据进行分析处理而又不想将这批数据存入实体表时,我们可以使用with关键字临时构建一个虚拟的数据集,以便对其进行与实体表相似的sql操作,如:

Oracle数据库中几种非常有用的函数(with……as等)

上述姓名纯属虚构,如有雷同敬请谅解!

(注:with关键字构造的虚拟数据集临时存放于用户的临时表空间中)

exists/in及not exists/not in

仅从语法上来讲,在大多数情况下exists与in及not exists与not in可相互转换使用,但其各自的适用场景略有不同,执行效率也有差异。当子查询数据量较小时应使用in或not in,反之则使用exists或not exist比较合适,因为使用in时,Oracle查询是执行顺序是由内而外的,但如果使用exist的话Oracle则会“先外后内”,查询开销相对较大,现举例如下:

  • 查询所有绑定了部门ID的用户(适合用in的场景)

Oracle数据库中几种非常有用的函数(with……as等)

适合用in的场景

  • 查询未被账户绑定的部门(适合用not exists的场景)

Oracle数据库中几种非常有用的函数(with……as等)

适合用not exists的场景

(说明:以上仅作示例演示,并未考虑实际设计的合理性。)

union与union all

  • union,查询返回多表去重后的结果集:

Oracle数据库中几种非常有用的函数(with……as等)

union,查询结果去重

  • union all,查询返回多表未重的结果集:

Oracle数据库中几种非常有用的函数(with……as等)

union all并集查询,不去重

行互列

行转列最常用的方法是用decode或case,两者使用方法类似,现以decode举例如下:

Oracle数据库中几种非常有用的函数(with……as等)

行专列

转载地址:http://ihggi.baihongyu.com/

你可能感兴趣的文章
linux 标准IO缓冲机制探究
查看>>
【转】linux网络编程——套接字(socket)入门
查看>>
【原创】samba移植到android流程
查看>>
【原创】boa服务移植到安卓手机
查看>>
msgrcv error : Identifier removed(ERMID)错误解决;
查看>>
Linux进程间通信——消息队列:
查看>>
linux内核——进程管理
查看>>
(原创)socket学习实验(一)——利用C 语言socket抓取一个网页内容
查看>>
Linux 同步方法剖析--内核原子,自旋锁和互斥锁
查看>>
adb shell中设置android系统内部环境变量!
查看>>
Android ADB中使用find命令
查看>>
(原创)android6.0系统Healthd深入分析
查看>>
(原创)android6.0系统 Doze模式(DeviceIdle)实现与控制逻辑
查看>>
(原创)Android6.0亮屏流程之Keyguard Window绘制
查看>>
(原创)Android6.0亮屏流程分析
查看>>
Intent启动另一个APP里的fragment
查看>>
Android 系统7.0上 屏幕背光流程分析
查看>>
解决升级chrome后,访问https出现Your connection is not private
查看>>
Android 7.0之JobScheduler 分析(一)——如何使用job
查看>>
Android API version 查询
查看>>