SQL知识点个人总结

SQL思路+syntax总结

思路

单一表
一. 条件输出: case when
二. 只需要返回aggregation data: group by
三. 需要保留原data以及aggregation data: window function
四. 需要使用order筛选表:window function

多表操作
一. 连接多表: join
二. 多层aggregation: with /create table

一些概念 + explore data

一. Get to know database/table (MySQL)

  1.    显示所有数据库:show database. 1point3acres
    
  2.    改变数据库:use database1
    
  3.    显示所有tables名称:show tables
    
  4.    显示table的columns名称(显示为field)
    

a. show columns from table1
b. describe table1

二. data type:

  1.    string
    

a. char(n) 必须n位
b. varchar(n) 最多n位
2. number
a. int
b. dec(5,2)=999.99
c. real,double
3. datetime
a. date日期
b. time 时间
c. timestamp日期+时间

三. NULL rules

  1.    NULL in where
    

a. NULL in comparison is unknown
b. U and T=U, U and F = F
c. U or T=T, U or F=U
d. SQL 只返回 TRUE
2. NULL in aggregation: 一般忽略null,除了count(*)

单一表
. 1point3acres
一. 输出列: (先要知道使用哪个table (from))

  1.    条件输出(case when… then…  else …end)
    
  2.    改变格式cast(column AS INT/DEC/VARCHAR/CHAR…..)
    
  3.    numeric
    

a. 绝对值:abs()
b. 求余数 mod(x,y)
c. 次方power()
d. 开方sqrt()
e. 四舍五入round(column, 位数)

  1.    text
    

a. 文本合并:concat(a,b). From 1point 3acres bbs
b. 大写upper()
c. 小写lower()
d. 返回文本长度length()
e. 提取字符mid(column, start, length)

  1.    去重:distinct
    
  2.    aggregation function
    

a. avg()
b. sum(). 1point3acres
c. count() (常用count(distinct A))
d. max()
e. min()

  1.    windows function
    

a. 格式: function() over (partition by x order by y) as a
b. function:
i. aggregation function (sum/avg/max/min)
ii. row_number()
iii. rank()/dense_rank()
iv. lead()/lag()
v. first_value()

  1.    日期:(syntax各database不统一 )
    

a. datediff()
b. 改变格式format(column,””)
c. dayname(“”) 周几?需要引号
d. day()日子数字
e. year()年份
f. month()月份
g. ><:日期前后日期要加引号
h. curdate()

二. 筛选行:where (先要知道使用哪个table (from))
key idea: 原理:对每一行判断TRUE/FALSE, 返回TRUE的rows

  1.    numeric variable :
    

a. > / < / = / <> / between (连续)
b. 某几个数字: in (10, 20) /not in (间断)
c. is null/ is not null. check 1point3acres for more.

  1.    categorical variables:
    

a. in (a, b, c) / not in ()
b. =
c. is null/ is not null
d. like “”
i. “%”表示任何字符任何次数
ii. “_”表示一个字符

  1.    多个条件:AND/OR
    

三. 其他部分

  1.    group by
    
  2.    having
    
  3.    order by
    
  4.    limit
    

四. 多表

  1.    横向连接JOIN
    

a. A INNER JOIN/LEFT JOIN/RIGHT JOIN B ON A.id=B.id

  1.    纵向连接UNION / UNION ALL 
    
  2.    temporary table
    

a. with a as ()
b. create table a as ()

3 Likes

多谢楼主分享,若每个知识点能附上一段示例SQL代码,那就更好了。