一般格式:
select [all/distinct] (目标表达式) [as 别名]
from (目标表)[as 别名]
[where (条件表达式)]
[group by (列名) [having (条件)]]
[order by (列名) [asc/desc]]
解释与理解:
1、每个单词可以全用大写或者全用小写,但不可以混着写
2、all与distinct的区别:默认是all,会显示全部,distinct会将查询出来后的去重后显示
3、目标表达式可以是一个也可以是多个,各个列出现的顺序可以和表中不一样,可以用*来代表所有,每个列都可以起别名,但不能重复
4、查找的目标表可以是一个也可以是多个,若查找多个表中有相同名称的字段,需要在目标表达式中表明查找的是哪个表
5、查找的目标表可以是原来有的,也可以是一个selec语句(嵌套),每个目标表都可以起别名,但不能重复
6、group by 按列的值进行分组,值相等的为一组,若带着having短语,需满足一定条件才能输出
7、order by 按列的值进行排序,默认是asc升序,desc是倒序,对于空值,排序时显示的次序由具体系统实现来决定。
常用的查询条件:
1、比较
=等于,<小于,>大于,>=大于等于,<-小于等于
!=或<>不等于,!>不大于,!<不小于
2、范围
between and和not between and
between 后面是范围的下限 and 后面加的是范围的上限
3、集合
in 和 not in
判断查找结果是否在集合内
4、判空
is null 和is not null
5、字符匹配
like 和 not like
一般语法是 [not] like <匹配符> [escape <换码字符>]
如果没有匹配符,则相当于=
匹配符有%和_。
%表示任意长度(可以为0)的字符串。例如ab,aab,aaaaaaab都符合a%b
_表示任意单个字符,上述的ab,aab,aaaaaaab只有aab符合a_b,其他都不匹配
如果本身查询的字符串里带有%或_,这时候需要escape换码字符,紧跟在换码字符后的字符不再有通配符的含义,转义成最初的字符
6、一些逻辑语句
and,not ,or
聚集函数:
1、count(*) 统计元组个数(总数)
2、count( [distinct/all] <列名>) 统计某个值出现了几次
3、sum( [distinct/all] <列名>) 计算这一列值的总和(此列必须是数值型)
4、avg( [distinct/all] <列名>) 计算这一列值的平均值(此列必须是数值型)
5、max( [distinct/all] <列名>) 求这一列值的最大值
6、min( [distinct/all] <列名>) 求这一列值的最小值
聚集函数的一些注意:
1、如果指定distinct,表示计算时要去重,默认是all
2、的那个遇到空值时,除了count(*) 都跳过空值只处理非空值
3、聚集函数只能用于selec语句和having语句