1 执行顺序优先级
(8)SELECT (9)DISTINCT (11)<Top Num> <select list>
(1)FROM [left_table]
(3)<join_type> JOIN <right_table>
(2)ON <join_condition>
(4)WHERE <where_condition>
(5)GROUP BY <group_by_list>
(6)WITH <CUBE | RollUP>
(7)HAVING <having_condition>
(10)ORDER BY <order_by_list>
2 运算符
- 算数运算符:+,- ,*,/ ,%
- 比较运算符: = ,!= ,<>,> ,< ,>=,<=,!<,!>
- 逻辑运算符:AND, OR,NULL,BETWEEN,IN,LIKE,NOT
- 通配符(通常与LIKE运算符一起使用):
%表示一个或多个字符
_ 表示单个字符
[ charlist ] 表示要匹配的字符的集合和范围
[ ^charlist ] 或 [!charlist ] 表示不匹配字符的集合和范围
【注意】MS Access多个和单个匹配分别使用星号(*)和问号(?)
3 基础用法
3.1 条件查询
- 基本过滤:where
- 模糊查询l:ike
- 多条件查询:and/or
- 多条件匹配:case when
- 范围查询:in/between
- 空值(null)判断:is null
- 空串("")判断:=""
- 返回部分数据:limit
3.2 关联查询
左/右关联:left/right join…on
内关联:[inner] join…on
全关联:full join…on
3.3 联合查询
基本用法:select..from.. union select..from..
3.4 子查询
基本用法:select * from 表名 where 筛选条件字段 逻辑运算符
(select * from 表名 where 筛选条件)
【注意】两表查询的字段的个数和意义要保持一致。
3.5 分组与排序
- 分组查询group by
- 分组条件查询group by… having
- 分组查询后再对所有数据聚合group by…with rollup
- 结果排序order by [asc/desc]
【例】查询出查询出每个学生的总分的同时,再查出所有学生一共的得分:
select sum(score),student_id from score GROUP BY student_id with rollup;
3.6 常用函数
- 去重:distinct
- 绝对值:abs()
- 最大max()、最小min()、计数count()、平均avg()、求和sum()
- 获取时间戳秒数unix_timestamp()、获取时间from_unixtime(“秒的参数”)、获取当前时间current_date()、时间相减datediff(a,b)
- 开窗函数:rank()/row_number() over(partition by 分组字段 order by 排序字段)