由于工作原因,需要写大量sql,将平时写sql 的方法和一些特殊功能整理一下,希望能帮助到大家。
- 1、注意层次和注释
层次快捷键:tab
注释快捷键:ctrl+/ - 2、从最里层开始写
嵌套sql 从最里层开始写,即语句的中间部分,然后一步一步向外。 - 3、语句执行顺序、每一步生成什么了然于心
from>join>on>where>group by>聚合函数>having>select>distinct>order by
select distinct(cust_no) --(6)
,sum(deal_amt) deal_amt_sum
from table_a a --(1)from table table_a
left join (select cust_num --(2) join 子select 语句的表 b
,deal_amt
from table_b
where deal_amt>0)b on a.cust_no=b.cust_num --(3)连接上
where a.cust_no>'20200112' --(4)筛选连接后的记录
group by 1 --(5)按照cust_no 分组
order by 1
;
- 4、常用函数要掌握:聚合、日期
不同数据库使用方法不一样
to_date()
to_char()
datediff()
to_days() - 5、where 和 on
这个问题需要在join实践中遇到才能真正理解。
on:连接条件,符合条件的均被连接上
where:连接后的筛选条件,符合条件的被select 出来显示
以下两个语句可以体会一下
select * from a left join b on a.id=b.id and a.value=1
select * from a left join b on a.id=b.id where a.value=1
6、select group by
-select 后的字段均是group by后的,因此除group by 的字段以外,select 的字段均要指定分组的聚合函数。7、制表转换:max (cese when end)
8、explain : type(all、null、ref)
完整的sql 前加 explain ,可以解释sql如何运行的,type显示表的扫描方式,
all:全表扫描
ref:树扫描(log2)
null:不用扫描,直接返回,最快9、join 时的优化
版权声明:本文为qq_39967296原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。