sql server 月初 sql 月份_sql 月份在建表时设为什么格式

sql用到现在,也算是基本入门了。

本来想去借《sql必知必会》,杭图只有2本,而且永远在出借中。

就只好借了O'REILLY的青蛙书instead。

拖了一个月都没看几页,因为染头发,用一个下午翻完了。

算是对sql做到了查漏补缺。

其实主要也就看了查询部分,操作部分反正也没有权限,索性都跳过了。

读完这本,sql学习就暂时告一段落啦~


下面罗列3个还蛮实用的查询小技巧。

01用extract提取年份/月份

书里给出的写法是

之前慎M也给过一段代码,写法更加简便,实测等效。

该语句可用于提取整月数据,比“arrive_time大于等于1号,小于等于31号”的写法简便。

02用with rollup来产生合计数

工作中经常遇到分马甲提数的情况,多马甲的话肯定是首选group by。

但是上级还是会需要看到总数如何,仅仅group by不能解决问题,还得excel之后sum一次,太过麻烦。

with rollup就能很好地解决这个问题。

在group by后面加上“with rollup”,最后一行就是合计数。

sql server 月初 sql 月份_数据_02

不过with rollup在单一维度上聚合用处不算明显,在多个维度上聚合才能显现出优势。

0

3拼表的最优方法

把主from的表缩到足够小,留好主key,保证key的唯一性。

后续的表全都left join挂到主key上。

例如在做员工工作情况监督表时,把主from表缩成员工表,但凡是活跃员工,统统保留且唯一,把员工ID作为主key。

其他员工工作情况表全部以group by员工ID,然后left join挂到主key上。

目前不太能用到的其他知识点Other Points01关联子查询


读完这本书才看懂了慎M的这段代码,where里就是用到了关联子查询。

作用是为了取到某个订单最小的分配时间。

在这段语句中,每取一个order_id,就会遍历一次该订单的所有分配记录,直到找到最小的那个,再取下一个order_id。

目前我的工作中还没有需要用到关联子查询这么复杂语句的地方,不过可以先积累起来。

PS:EXISTS函数是配合关联子查询使用的。

02explain查询执行计划

在select前加explain,就不是按语句查询,而是会显示该段语句需要检索多少行数据。

需要检索的数据越少,代码运行越快。

这也是为什么最好把经常用于条件查询的字段做成索引。

(虽然我还不明白索引到底和普通字段到底有啥区别,反正记住更快就行了)

所以explain可以用于优化代码运行速度,只是目前我还不太需要用到。

03用into outfile查询后直接导出文件

在From前加“INTO OUTFILE + 路径”可以直接导出文件,例如:

原本想用这个语句直接导出每天做表的源数据的,奈何账户权限不够,只好作罢。


下个阶段要去恶补一下数据透视表啦~~

坐等本骨的下一篇学习笔记吧~



sql server 月初 sql 月份_sql 月份在建表时设为什么格式_03

END