SQL学习记录

(case when a.medfee_sumamt > 0 then ‘1’ else ‘-1’ end )

常用系统函数

处理NLUU值。select x+nvl(y,0) from emp;
instr(s1,s2[,i][,j])返回s2在s1中第j次出现的位置,从第i个字符开始。默认为1.
replace(s1,s2[,s3])使用s3替换在s1中的所有s2字符串。默认为空
substr(s,i[,j])从s的第i个位置截取长度为j的字符串
tochar(sysdate,‘yyyy-mm-dd’),将表达式转为字符串
wm_concat(name || amount || units) XXXX
in、any、all多行子查询
查询工资大于部门编号为30的所有员工工资的员工信息信息。selcet * from emp where sal >all (select sal from emp where deptno=30)
group by多个字段就是做多次聚合,先对B列做一个聚合,再对C列做一次。先对B列进行拆分,拆分成a,b两个,然后分别针对a和b进行拆分。

常用sql语句优化

减少表的查询次数
用not exists代替 not in 。in后接枚举列表时可使用

表连接优化

oracle自下而上解析where字句。因此表连接必须写在其他where条件之前。那些能过滤掉最大数据记录的条件必须写在where字句的末尾,过滤掉的记录越多越好。
避免全表扫描,如带like并使用%

SQL经典实例

SQL JOIN 中 on 与 where 的区别
在这里插入图片描述
将含有别名列的查询放入内嵌视图,就可以在外层查询中引用别名列。为什么要这么做呢? WHERE 子句会比 SELECT 子句先执行,就最初那个失败的查询例子而言,当 WHERE 子句被执行时,SALARY 和 COMMISSION 尚不存在。直到 WHERE 子句执行完毕,那些别名列才会生效。然而,FROM 子句会先于 WHERE 子句执行。如果把最初的那个查询放入一个 FROM 子句,其查询结果会在最外层的 WHERE 子句开始之前产生,这样一来,最外层的 WHERE 子句就能“看见”别名列了。当表里的某些列没有被恰当命名的时候,这个技巧尤其有用。

SQL必知必会

在这里插入图片描述在这里插入图片描述

在这里插入图片描述在这里插入图片描述AND 在求值过程中优先级更高

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
GROUP BY 子句必须出现在 WHERE 子句之后,ORDER BY 子句之前
在这里插入图片描述
WHERE过滤行,而 HAVING 过滤分组。
另一种理解方法,WHERE 在数据分组前进行过滤,HAVING 在数据分组后进行过滤。

使用 HAVING 时应该结合 GROUP BY 子句在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值