🔥博客主页: 我要成为C++领域大神
🎥系列专栏:【C++核心编程】 【计算机网络】 【Linux编程】 【操作系统】
❤️感谢大家点赞👍收藏⭐评论✍️
本博客致力于分享知识,欢迎大家共同学习和交流。
分页查找
语法:select 列名 from 表名 limit a,b
表示从a开始向下查找b行,a是起始行,b是查询行数
select * from student limit 2,5;
聚合函数
最大值:max()
select C,max(score) 最高分 from SC where C='01';
最小值:min()
select S,min(score) 最低分 from sc where S='03';
平均值:avg()
select S,avg(score) 平均分 from sc where S='03';
求和:sum()
select S,sum(score) 总分 from sc where S='04';
统计个数:count()
表示满足条件的所有元素或行
select count(*) 学生总数 from student;
select count(*) 王姓同学个数 from student where Sname like "王%";
select count(Sname) 王姓同学个数 from student where Sname like "王%";
count(*)和count(Sname)的区别:如果Sname这一列没有NULL的列,那么结果是一样的;如果有为NULL的数据,那么count(Sname)不会计算数据为NULL的那一行,count(Sname)就会比count(*)少。
分组
分组实现求某一个的具体值。题目要求中带有“每”时,考虑进行分组操作。
语法:group by+根据+having+条件
select s,sum(score) from SC group by s ;#统计每一个学生的总分
分组排序
语法:order by+根据+asc(升序)/desc(降序)
查询学生总成绩并按照降序排列
select S,sum(score) from SC group by S order by sum(score) DESC;
查询选修01课程的同学的分数(不写排序规则,则默认是升序)
select S,c,score from SC where c='01' order by score ;
where和having的区别
where后面作为条件的列是表中原来就有的
having后面作为条件的列是表中原来没有的
联合
查询男生的个数
select Ssex,count(Sname) from student where ssex='男';
查询女生的个数
select Ssex,count(Sname) from student where ssex='女';
查询男生和女生的个数
select Ssex,count(Sname) from student where ssex='男'
union all
select Ssex,count(Sname) from student where ssex='女';
这种查询方式是查询了两遍整张表,先分组再查询只查询一遍,联合效率没有分组查询高。
select Ssex,count(Sname) from student group by ssex;