Select&from
知识点:
标准语法
select 字段名 (决定这一段查询最后显示的字段)
from 表名 (指定这段查询语句涉及的数据来源)
从word单表在select后指定查询的字段名称,多个字段名称之间用英文逗号(,)隔开
在select核心语句中,在字段后面加as别名,可以给字段名在最后显示前予别名,as可以省略,写成 字段名 别名。注意字段名和别名之间有空格,别名和下一字段名之间为逗号
select和(*)通配符联用返回查询的表中所有的列
在select核心语句中加distinct关键字,可以对最后显示的数据去重。在select distinct后加多个字段时,可以对重复的行数据去重
Where
标准语法:
select 字段名
from 表名
where 表达式 (限定查询行必须满足的条件)
where核心句子是可选项,使用该子句是为了通过表达式筛选出符合查询条件的数据
运算符
and 和 or 可以把两个或多个条件结合起来。若and连接的两个条件对于该数据都成立,就显示该数据,若or连接的两个条件对于该数据只要有一个成立,就显示该数据,否则就筛除该数据。
找寻字符段值等于某个值时使用等于号(=),如果值是文本,则文本需要’’包裹
in会筛选出字符值中所有与括号内数据相等的行
模糊查询like
语法:
select 字段名
from 表名
where 字段名like’通配符+字符’
跟在like后面进行数据过滤常用的通配符有%和_,%可以匹配多个字符,_只能匹配一个字符。
order by
语法
select 字段名
from 表名
where 表达式
order by 字段名asc|desc (规定查询出的结果集显示的顺序,asc为升序,desc为降序,不写默认为升序)
Limit
语法
select 字段名
from 表名
where 表达式
order by 字段名asc|desc
[limit[位置偏移量,]行数] (限制查询结果集显示的行数)
limit n返回查询结果的前n行
Limit x,n意味着从x+1行开始返回n行
聚合函数&group by
语法:
select 字段名
from 表名
where 表达式
group by字段名1,字段2
order by 字段名asc|desc
[limit[位置偏移量,]行数]
group by子句中有多字段时,依据写的字段的顺序进行分区。使用group by子句时,select只能使用聚合函数和group by引用过的字段,否则会报错
Having
语法:
select 字段名
from 表名
where 表达式
group by字段名1,字段2
having表达式
order by 字段名asc|desc
[limit[位置偏移量,]行数]
只有使用了group by子句后才会使用having子句,having子句是对group by分组的筛选
having子句中只能使用聚合函数和group by作为分组依据的字段
having和where的表达式基本相同,但having可以使用聚合函数,但where不行。
部分常见函数
Round(x,y)--四舍五入函数。对x四舍五入,保留到小数点后y位
Concat(s1,s2,,,)--连接字符串函数,任一参数为null时返回null
Replace(s,s1,s2)--替换函数,字符串s2替换s`中s1
Left(s,n),right(s,n),substring(s,n,len)--截取字符串一部分函数
left返回字符串s最左边n个字符串
Right返回字符串右边n个字符串
Substring函数返回字符串s从第n个字符串起取长度为len的子字符串,也可以为负数, 不写的话取从n个字符开始到最后一位
Cast(x as type)--类型转换函数,将x转换为一个类型的值
窗口函数:
标准语法:
窗口函数 over (partition by 用于分组的字段名 order by 用于排序的字段名)
讲解:
Over()中有两个子句为可选项,partition by指定分区依据,order by指定排序依据
常见窗口函数
知识点讲解:
窗口函数只能写在select 字句中。窗口函数中的partiton by可以指定数据的分区,和group by要去重分组不同,partition by只分区,不去重,当没有partition by时,整个表为一个分区。排序窗口函数中order by 是必选项,order by子句在分区内,依据指定的字段和排序方法对数据排序。
偏移分析函数语法
Lag(字段名,向上偏移量[,默认值])over (partition 字段名 order by 字段名 asc|desc)
lead(字段名,向下偏移量[,默认值])over (partition 字段名 order by 字段名 asc|desc)
表连接
语法
内连接
Select字段名
om 表格名1 inner join 表格名2 on 表格名1.字段名 = 表格名2.字段名
注意内连接inner可以省略,直接使用join默认为内连接
(连接两个表留下同时相互匹配上的行)
左连接
Select字段名
om 表格名1 left join 表格名2 on 表格名1.字段名 = 表格名2.字段名
(左边的表返回所有行,右边的表只留下匹配上的行得到新表)
右连接
Select字段名
om 表格名1 right join 表格名2 on 表格名1.字段名 = 表格名2.字段名
(右边的表返回所有行,左边的表只留下匹配上的行得到新表)
子查询
知识点:
子查询本身就是一个完整的查询语句,然后用括号()包裹嵌套在主查询语句中,子查询可以多层嵌套。
之前所涉及到的都是从数据库中检索数据的单条语句,但当我们想要检索的数据并不能直接从数据库表中获取,而是需要从筛选后的表格中再度去查询时,就要用到子查询。
子查询的执行优先于主查询执行,因为主查询的条件用到了子查询的结果
子查询本身是一个完整的查询,由括号包裹嵌套在主查询中
子查询最后返回查询出的结果给主查询,可以多重嵌套。
子查询可以在select,from,where,having子句中使用,但要注意不同子句能接受的子查询种类有差别