中秋三天的学习并不是一帆风顺的,很大程度上因为头一天时间的耽误,导致后面的学习时间很紧张,很多有趣的细节并没有时间整理,现在来。
关于 SQL 的星零知识是在工作里积累的。从读他人的脚本、听 mentor 的介绍、读老司机写的文档这些渠道了解了一些关于 SQL 的基本语句。我的同事们都非常厉害,光是靠着这些方法就开始了刷刷写脚本之路,但我的脚本还是写得非常烂。
我以为是我不用心,但最近才意识到其实是因为这种学习方法并不适合我,对像我这样完全没有编程基础的人来说,没有系统的梳理是非常要命的,所以我试图去找一些书,先后用过《从零开始学 SQL Server》、《SQL 必知必会》等书,但这些书都非常地“新人不友好”,不适合整个知识架构的建立。
MICK 的这本《SQL 基础教程》是同事 o0 酱推荐给我的。感谢她的分享,使我终于能够有机会好好地来一次 SQL 入门(鞠躬),也推荐给对 SQL 有兴趣的新人朋友。
作为产品运营,如果没有直接调取和分析数据的能力,在人力紧张的工作环境里是会非常被动的。幸而多数情况下要支持你完成相关工作的技术并不复杂,大抵是查询基础、聚合排序、复杂查询、函数、谓词、CASE 表达式和集合运算,也就是这本书的二、三、五、六、七章节。
第一遍读是为了搭建框架,接下来的一周我会二刷这本书,并且开始对重要章节里的重要知识点列个索引(仅仅是给我自己用的,会比较残缺)。
chap 2 基础查询篇
从结果中删除重复行
select distinct <列名>
from <表名>
distinct 关键字只能用在第一个列名之前,当然也可以在多列之前使用,如果是这样则会将多个列的数据进行组合,将重复的数据结合为一条。
算数运算符
select shohin_mei,hanbai_tanka,hanbai_tanka * 2 as "hanbai_tanka_x2"
from shohin
select 语句中可以直接使用计算表达式,同时,作为文本的内容要用双引号括起来。
所有包含 null 的计算,结果肯定是 null,如果希望得到「5+ null = 5」这样的结果,可以用coalesce 将 null 值转为 0。
使用方法是
select coalesce(TS.tenpo_id,0) as tenpo_id
from TS.tenpo
比较运算符
不能对 null 使用比较运算符,非要用 null 值的话,用 is null 或者 is not null 的语句。谓词部分会有详述。
逻辑运算符
and 的顺序高于 OR ,想要优先执行 OR 可以使用括号。
SQL 中的逻辑运算被称为三值逻辑,真值包含真(True)、假(False)和不确定(Unknow)这也是一些表中设置 not null 约束的原因。
待更新