〇、学生表数据:
一、常用函数
1.1、查询学生信息,并将学生姓名转换为小写(lower):
select *,lower(student_name) from students;
1.2、查询学生信息,并将学生姓名转换为大写(upper):
select *,upper(student_name) from students;
2.1、查询学生信息,并将学生姓名字段截取一部分:
select *,substr(student_name,5,2) from students;
该函数的意思是,截取student_name字段数据的,第五位开始,截取两位。
2.2、查询第五个字符为‘W’的学生信息:
select * from students where substr(student_name,5,1)='w';
3、查询所有学生的名字,并显示出名字的长度:
select student_name,length(student_name) from students;
4、查询学生信息,并多显示一列成绩,如果为空,则换为0:
select *,ifnull(achievement,0) from students;
看第七行数据
二、聚合函数
1、计算总成绩:
select sum(achievement) from students;
2、求平均成绩:
select avg(achievement) from students;
3、求最大年龄和最小年龄:
select max(age),min(age) from students;
4、 查询学生数量:
select count(id) from students;
一般写count(*)
5、 查询有成绩的学生人数:
select count(achievement) from students;
6、查询所有学生的姓名,重名的只显示一条:
select distinct(student_name) from students;
我们发现,只有9条数据了,因为有两位学生都叫【XiaoMing】 。
7、查询学生不重名的总人数:
select count(distinct(student_name)) from students;
8、查询男生有几人,女生有几人:
select sex,count(*) from students group by sex;
9、按小组划分,查询各个小组的总成绩:
select team_id,sum(achievement) from students group by team_id;
10、在9的基础上,筛选出总成绩大于100的小组:
select team_id,sum(achievement) from students group by team_id having sum(achievement)>100;
【having】一般要搭配【group by】来使用。
select XXX from XXX where XXX group by XXX having XXX order by XXX limit.
11、limit:
11.1、取排序前五的学生:
select * from students limit 5;
11.2、取第三条数据,往下取五条:
select * from students limit 2,5;
【limit 2,5】的当中的【2】的意思是,索引为2,即第三条数据。
11.3、查询成绩前五名的学生信息:(按照成绩降序)
select * from students order by achievement desc limit 5;
12、总结:查询男性当中的,按照小组划分,小组的总成绩大于30的,按照小组总成绩降序排列,取前2条数据:
select team_id,sum(achievement) from students where sex=0 group by team_id having sum(achievement)>30 order by sum(achievement) desc limit 2;