*SQL for Data Analysis课程笔记,来源于Udacity.
*是我上课所记,顺便分享出来便于不方便看视频课程的小伙伴参考;其次如果有错误的部分,还望大家指正,谢谢。
基础课程笔记
通用内容:
1、运行查询快捷键:control+enter
2、sql的大小写不敏感,建议sql语句用大些,其他用小写,便于查看
3、sql对空格不敏感,通常用下划线,少数一定要有空格则加双引号:“table name”,或者其他软件用[table name]
4、分号:在结尾语句需要执行的时候用;其他不是最终执行语句不用标点
5、逗号:同句中用于间隔两个内容
课程笔记:
15课:limit(用于限制查询的行数,eg只想要前15行的查询结果)
用法:加在select语句后面
select occurred_at, account_id, channel from web_events
limit 15;
课程18:order by(用于自定义按某列顺序为主的排列结果)
Order by子句要放在from和limit中间,否则无法执行
排序默认为升序,+desc为降序
取最小值用升序,即无后缀
取最大值用降序,即加desc
Order by子句和excel中的升降序不同,sql中是一次性的,下次的操作不建立在本次排序之上
情形2:多列排序,order by后面的顺序
Order by后的内容有先后之分,是依次执行排序的
Order by 1,2:先执行1的升序排列,在此基础上执行2的升序排列
即:
Order by 1, 2 desc;(以1升序为先,在对2进行降序)
Order by 2 desc, 1;(先按2降序;当出选数值一样大的ab,依照第二个条件1列降序,a在b的前面)
课程24:where
用于依照某列具体的标准筛选,可以回答更有意义的问题
常用的符号:>、 <、 >=、 <=、 =、 !=(不等于)
一般用where子句的时候就不用order by子句,除非我们真的想对data排序?
搜索的结果自动以最前列的数值进行升序排列,并非根据where所要求的列进行排序。
对于非数字的data,where子句中要在非数字的内容上加上单引号(经常会忘记)。
对于非数字的运算一般是=和!=,还有like, not, in(后面会讲)
课程30:派生列derived columns
基于原表的数据创建新的列,并对新列命名使用as
派生列是暂时的,下次再查询的时候将不存在
运算:+ — * /
哪里需要派生列,就如同其他列名称一样写在那个地方,无需另外写:运算内容(遵从数学运算规则)as 新列名字
课程33:逻辑运算 where 子句(以下内容均是基于where子句项下)
Like:不确定具体找什么的时候用(模糊搜索)
In:多于一个条件时使用
Not:和like 和in连用,not like not in
And & between:两个条件同时成立
Or:至少一个条件成立
课程34:like
用于对条件模糊搜索,即部分条件内容成立,目的在于排除多余的信息
=的作用在于完全和条件一致,和like不同,like为部分吻合
常用于网页搜索,即一个单元格中信息很多,搜寻内含有google的网址
like的运算需要通配符,常用%表示任意值
like内容需要加单引号或双引号,引号内区分大小写。t和T是不一样的
课程37:in
根据多个可能的值筛选数据,和=类似,只是=只能是单个赋值
+where列名称in(a,b...n)要有括号,ab可以为数值也可以是文字,要用逗号隔开,文字要加单引号(如果文字本身有引号,则该引号改为双引,头尾依旧用单引,macy's变为‘macy''s’
课程40:not
与like和in连用:not like not in
可以快速查询除like in 查询条件以外的结果
课程43:and
当where子句下要考虑一个以上的要求时,可以用and连接,但是连接的句子都是独立完整的查询语句即:(除了符号外的内容要带单引号)
Where occurred at>=‘2016-04-01’ and occurred at<=‘2016-10-01’(第二句也要有occurred at,不可以省略)
And 常用于+ - * / like not 的情况下
和between的区别:between是作用于同一列的两个要求eg where occurred at between >=’2016-04-01’ and <=’2016-10-01’ where occurred_at between ‘2016-04-01’ and ‘2016-10-01’ between的时候就不用>=和<=了
and是对于不同列的不同要求的连接,1个以上都可以用
课程46:or
和and的用法类似,用于一个以上的条件,其中一个条件成立即可
通常和+ - * / in like not and between 连用
Where (a=0 or c=0 or d=0)
And b=’2016-10-01’
上面式子即含有or子句也含有and子句,当有括号则代表括号内容为一个整体
小结:
*其他贴士:
对于大小写不敏感
where子句下的内容,各条件的先后顺序有别。写在前的条件先执行,后写的条件后执行。