MySQL--order by升序与降序、count计数与子查询
更多关于数据库知识请加关注哟~~。若需联系和想安装MySQL请加博主:
QQ:3327908431
微信:ZDSL1542334210
前言:MySQL一系列操作猛如虎,代码易懂清晰,结构也简单,今天我们来谈一谈MySQL里面的一些常用操作:升序、降序、count计数与子查询。我们依然以例子来讲起。
1、创建表格
学生得分表scores
create table scores (s_id varchar(5),
c_id varchar(3),score float); #新建学生得分表
insert into scores values
("001","01",135),
("005","01",120),
("003","01",110),
("002","01",90),
("005","02",140),
("001","02",125.5),
("004","02",100),
("006","02",90),
("002","03",102),
("005","03",100.6),
("001","03",100),
("003","03",95.6),
("004","03",83),
("003","02",80),
("006","03",79.5);
课程表格coure
create table coure(c_id varchar(2),
t_id char(1),c_name varchar(10)); #创建课程表
insert into coure values
("01","3","数据库原理"),
("02","2","统计学基础"),
("03","1","Python基础");
2、题目部分
(1) 升序与降序----order by
语法:
----升序:order by <字段> asc ;
----降序:order by <字段> desc;
题目一:按成绩升序显示成绩信息
select * from scores order by score asc; #asc升序
select scores.* from scores order by score asc; #asc升序
#结果为:
006 03 79.5
003 02 80
004 03 83
002 01 90
006 02 90
003 03 95.6
004 02 100
001 03 100
005 03 100.6
002 03 102
003 01 110
005 01 120
001 02 125.5
001 01 135
005 02 140
这里 order by score asc 表示将score 升序排列显示,而‘scores.*’表示把按照条件查询到的在scores表里面的记录都显示出来,该方法多用在多表连接的时候使用,请持续关注,以后细讲。
题目二:按成绩降序显示成绩信息
select * from scores order by score desc; #desc降序
这里 order by score desc表示将score 降序排列显示。
题目三:升序+降序----按学生编号升序,课程编号降序显示成绩信息
分析:当需要多个字段排序时,一般先把升序的字段写在前面,降序的写在后面,中间用逗号隔开,‘order by’只需要写一次即可。
select * from scores order by s_id asc,c_id desc; #升序+降序
#结果为:
001 03 100
001 02 125.5
001 01 135
002 03 102
002 01 90
003 03 95.6
003 02 80
003 01 110
004 03 83
004 02 100
005 03 100.6
005 02 140
005 01 120
006 03 79.5
006 02 90
题目四:查询课程编号为01的学生成绩,按分数降序,学生编号升序排列
select * from scores where c_id = 01 order by s_id asc,score desc;
#结果为:
001 01 135
002 01 90
003 01 110
005 01 120
(2) count()计数
题目五:查询001号学生所学的课程数
select count(*) 选课总数 from scores where s_id=001;
选课总数:3
题目六:统计考试人数与考试科目
select count(distinct s_id) 考试人数,count(distinct c_id) 考试科目 from scores;
# 答案为:6 3
# distinct c_id 按照c_id统计,distinct可以去重
题目七:查询被重修的人数与课程数
select count(s_id) 重修人数 from scores where score<90;
# 答案:3
select count(distinct c_id) 重修人数 from scores where score<90;
# 答案:2
(3) 子查询
子查询就是把某一个查找到的结果做为另外一个查询的条件,具体看代码。
题目八:查询存在分数小于90的课程信息
select * from coure where c_id in
(select c_id from scores where score <90);
# 答案为 :
03 1 Python基础
02 2 统计学基础
题目九:查询有分数大于110的课程信息
select * from coure where c_id in
(select c_id from scores where score >110);
# 答案为 :
01 3 数据库原理
02 2 统计学基础
3、文末彩蛋–轻松一刻
就上周嘛公司新来个漂亮女秘书,第四天,公司经理得意洋洋地对副经理说:“昨晚我发现,新秘书的工作效率比我老婆强,尤其是她的功夫底子。”副经理附和说:“嗯!我也觉得比你老婆强多了!…”当时的气氛就很尴尬嘛,结果前天我看见我们副经理在街角卖菜,上面写着几个大字[白菜价格9.98/斤]。
今天到这里就结束啦~每篇文章都有彩蛋–轻松一刻哟!谢谢观看,我是Jetuser–data[学习更多MySQL请加关注]
链接: [https://blog.csdn.net/L1542334210]
CSND:L1542334210
祝大家工作顺利!阖家欢乐!