查询score表格内容:
select *from score;+---------+-------+-----------+-------+------------+| scoreid | stuno | subjectid | score | examtime |+---------+-------+-----------+-------+------------+|1|1|1|100|2021-03-12||2|1|2|100|2021-03-12||3|1|3|90|2021-03-12||4|2|1|100|2021-03-12||5|2|2|79|2021-03-18||6|3|1|56|2021-03-01||7|4|2|55|2021-03-15||8|4|3|100|2021-03-21||9|4|1|99|2021-03-04||10|5|1|100|2021-03-21|+---------+-------+-----------+-------+------------+10 rows inset(0.00 sec)
查询score表格中最小score,最大score,score平均值,score和:
select min(score),max(score),avg(score),sum(score)from score;+------------+------------+------------+------------+|min(score)|max(score)|avg(score)|sum(score)|+------------+------------+------------+------------+|55|100|87.9000|879|+------------+------------+------------+------------+1 row inset(0.00 sec)
使用as函数将上述查询结果重命名:
select min(score)as min,max(score)as max,avg(score)as average,sum(score) sum from score;+------+------+---------+------+| min | max | average | sum |+------+------+---------+------+|55|100|87.9000|879|+------+------+---------+------+1 row inset(0.00 sec)
注意:上述写法中as可以使用空格代替。
使用count函数统计数据量:
select count(score)from score;+--------------+|count(score)|+--------------+|10|+--------------+1 row inset(0.00 sec)
select count(*)from score;+----------+|count(*)|+----------+|10|+----------+1 row inset(0.00 sec)
注意:上述两种统计方法区别:前者只对score计数,后者只要一行中存在数据就会计数。
group by
group by根据一列或几列对结果进行分组。
根据科目id分组对score数据量进行统计:
select subjectid,count(score)from score group by subjectid;+-----------+--------------+| subjectid |count(score)|+-----------+--------------+|1|5||2|3||3|2|+-----------+--------------+3 rows inset(0.00 sec)
根据性别对学生人数统计:
select sex,count(*)from student group by sex;+------+----------+| sex |count(*)|+------+----------+| 女 |4|| 男 |5|+------+----------+2 rows inset(0.00 sec)
having在分组计算出结果后,对结果进行类似where条件语句的过滤:
select sex,count(*) num from student group by sex having num>4;+------+-----+| sex | num |+------+-----+| 男 |5|+------+-----+1 row inset(0.00 sec)
limit
查询score中最低的三条成绩:
select score from score order by score limit 3;+-------+| score |+-------+|55||56||79|+-------+3 rows inset(0.00 sec)
limit n:查询n条数据
limit n,m:跳过n条数据,查询接下来的m条数据
查询语句是比较灵活的,熟练掌握还得大家不断地练习。