文章目录
- 一.Oracle 行转列
- 二.Oracle 常用的字符处理
- 三.Oracle 表连接
- 四.Oracle层次查询小结
- 五.Oracle高级分组小结
- 六.Oracle with语句
- 七.Oracle高级分析函数
- 八.Oracle正则表达式
- 九.Oracle高级语句Model子句
这个blog我们来聊聊Oracle的sql进阶
很多同学熟悉了Oracle sql的基本知识,sql的增删改查、表连接、分组聚合、常用函数等之后,就开始是想要进阶了。
最近抽时间整理了一下Oracle sql进阶的blog,由于个人能力有限,如有错误的地方,欢迎指正。
如需要scott用户下建表及录入数据语句,可参考:
scott建表及录入数据sql脚本
一.Oracle 行转列
Oracle 行转列
Oracle行转列是Oracle数据开发岗位笔试的一个入门级别的考试题目,做一些日常的统计分析报表的时候经常会被使用到
二.Oracle 常用的字符处理
Oracle 常用的字符处理
Oracle的字符处理函数功能强大,而且非常好用,可以解决日常开发中的一些问题
例如:greatest、least可以支持多个值求最大值和最小值
replace和translate替换字符串
三.Oracle 表连接
Oracle 表连接
Oracle的 全连接、左连接、右连接、内连接
以及基于这些连接在where子句加上 col is null,可以实现去交集等操作
如果可以用表连接实现的,尽量通过表连接实现,在一定的使用场景下,性能会优于in和exists
四.Oracle层次查询小结
Oracle层次查询小结
Oracle的层次查询对于组织架构类有层级关系的应用场景非常有用
如果没有层次查询,只能通过多层临时表或with递归来解决此类需求
多层临时表去构造类似的功能了,代码冗余且笨重
五.Oracle高级分组小结
Oracle高级分组小结
Oracle的高级分组在OLAP应用,如业务报表、数据仓库等,应用得非常广泛。
我就见过不用rollup、cube,然后各种union 的代码
学会这些高级分组函数,进行多维度、多层级分组汇总的时候,可以大大减少代码行数,提升代码的可读性及可维护性。
六.Oracle with语句
Oracle with语句
个人强烈推荐大家使用with语句。
没有with语句,进行复杂查询的时候,from子句后面一堆的临时表,而且面临特别复杂的需求的时候,from里的临时表里面可能还会嵌套临时表,代码量可读性、可维护性特别差。
with语句推出后,可以通过with语句封装好各个临时表,临时表直接可以根据顺序相互引用。
大大简化了代码的复杂程度,提升代码的可读性、可维护性
with语句的递归,在一些场景也非常有用
七.Oracle高级分析函数
Oracle 高级分析函数
Oracle高级分析函数与统计函数结合使用
个人强烈推荐大家学习并使用高级分析函数。
Oracle的高级分析函数简直太给力了,往往通过几层临时表的复杂统计分析需求,高级分析函数,往往简单的几行代码就可以搞定,而且性能上也有一定程度的提升。
八.Oracle正则表达式
Oracle正则表达式
Oracle的正则表达式相对于其他编程语言而言,比较弱,但是有总比没有强。
Oracle的正则表达式由于要遍历字符串,所以往往性能并不是特别好。
但是,面对复杂、无规则的文本处理的时候,正则表达式可以发挥作用,往往几行简单的代码可以实现复杂的匹配规则。
当然,正则表达式的应用场景较为广泛,我的blog只是简单介绍了下几个正则函数的使用方法,需要在这方面提升的,还需要找寻其它的资料进行练习。
九.Oracle高级语句Model子句
Oracle高级语句Model子句
Excel强大的公式,跨行引用等功能,深受数据分析人员的喜爱。
但是数据量达到百万级别,Excel处理起来就很慢了,往往打开一个满是公式的表格,需要十分钟甚至更久。
Oracle的 Model子句,很好的解决了这类问题,当然数据量达到10亿级别,Oracle处理起来也会存在性能瓶颈。
当然Oracle的Model子句性能强大,我的blog只是简单的介绍下使用方法,需要更进一步进阶的,还需要找寻其它的资料进行练习。