一、条件查询
(1)查询语句
select 字段1,字段2... from 表名 where 条件;
---该语句的含义是 从表中查找满足条件的数据,并且显示字段1,字段2,....
如果想显示所有的字段,用*来表示
select * from 表名 where 条件;
(2)条件表达式
大于:> 等于:= 小于:< 大于等于:>= 小于等于:<= 不等于:!=
条件逻辑操作:
与:and 或:or 非:not
为空判断---判断为空不能使用=null,要用:
为空:is null 非空:is not null
注意为空和空字符的区别
二、模糊查询--将包含关键字的所有数据找出来
select * from 表名 where 字段 like "%关键字%"
%:匹配任意长度的任意字符
_:匹配任意单个字符
如果不加%等,则不是模糊搜索
三、范围查询
①between ... and ...(相当于>=和<=之间)
②in(value1,value2,......)(查询指定字段的值是否在集合中)
四、去重查询
关键字:distinct。筛选查询结果中是否有重复数据,如果有,相同的数据只保留其中一条。
格式一:查询结果中只有一个字段
select distinct 字段 from 表名;
格式二:联合去重查询。以多个字段,做个一个整体,当都相同时,则表示重复
select distinct 字段1,字段2... from 表名;
五、排序查询
格式一:select * from 表名 order by 字段
默认升序排列:
指定排序规则(升序或降序):
asc升序:
desc降序:
格式二:根据多个字段排序
select * from 表名 order by 字段1 [asc|desc], 字段2 [asc|desc],....
六、偏移查询
关键字:limit。限定查询结果的显示范围
select * from 表名 limit start,count;
start可以省略,表示从第一条开始,获取count条数据
七、聚合函数
(1)count(字段)
select count(*) from 表名
进行统计时,为空不会被记入到总行数中,但空字符串会被统计到总行数中
(2)max(字段)
(3)min(字段)
(4)avg(字段)
(5) sum(字段)
注意:在where语句中不能使用聚合函数
八、分组查询
关键字:group by。根据指定的字段(可以是单个字段也可以是多个字段)进行分组,分组后同一组的数据在查询结果中只会显示一条记录。一般结合聚合函数使用。
select *,[聚合]... from 表名 group by 字段1,字段2...
根据单个字段分组:
根据多个字段进行分组:
对查询结果进行筛选:
关键字having,必须用在分组后,是对查询结果进行二次筛选
在having语句中可以使用聚合函数。
九、总结
单表查询写法顺序
select col1,col2,col3,… -- 这里表示查询结果需要显示哪些字段
from table -- 表示从个表中去查找数据
where 条件 -- 表示要找满足哪些条件的数据
group by 字段 -- 表示对查找的结果进行分组
having 条件 -- 表示对分组后的结果进行二次筛选
order by -- 表示对查找的结果进行排序
limit -- 表示要限制查询结果的显示范围
举例:查询人数大于2个的班级学生的平均成绩,并且按照成绩降序排列,如果成绩相同则按找班级升序排列,并且只显示排在前面的两条记录
select classid,count(*) as co ,avg(score) as sc
from students
where name is not null
group by ClassID
having co > 2
order by sc desc,classid
limit 0,2