目录
-
起别名
as 给字段/表起别名
-
去重
select distinct 字段1,... from 表名
-
条件
使用where子句对表中的数据筛选,符合条件的数据会出现在结果集中
语法:select 字段1,字段2... from 表名 where 条件
where后面支持多种运算符,进行条件的处理:
比较运算:= > >= < <= !=或<>
逻辑运算:and or not
模糊查询:like
%:任意多个字符
_:一个任意字符
范围查询:
in:非连续的范围内
between …… and ……
空判断:null与 ''是不同的
判空:is null
判非空:is not null
-
排序
select * from 表名
order by 列1 asc|desc,列2 asc|desc,...
- 多个列参与排序时,先依据列1排,如果列1的值相同时,则按照列2排序,以此类推
- 默认是从小到大,即升序
- asc升序,desc降序
-
聚合函数
聚合函数不能在where的条件中使用
count(*):计算总行数,括号中写*/列名,结果时相同的
max(列):最大值
min(列):最小值
sum(列):求和
avg(列):平均值
为什么聚合函数不可以写在where的后面而能写在having后面?
因为聚合函数前面一定要有结果集,而在mysql内部运行机制中,where后面还没有结果集,所以聚合函数不可以写在where的后面。但having是接在分组的后面,而分组是有结果集的,所以having前是有结果集的,所以聚合函数可以写在having的后面
-
分组
按照字段分组,此字段相同的数据会被放到一个组中,分组的目的是对每一组的数据进行统计(使用聚合函数)
分组后的数据筛选:
select 字段1,字段2,聚合 ... from 表名
group by 字段1,字段2,字段3...
having 字段1,...聚合...
对比where和having:
where是对from后面指定的表进行数据筛选,属于对原始数据的筛选
having是对group by分组后的结果进行筛选
having后面的条件中可以使用聚合函数,where后面不可以
-
获取部分行
select * from 表名
limit start,count
- 从start开始,获取count条数据;
- 索引从0开始