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
在这里插入图片描述
祝大家工作顺利!阖家欢乐!

发布了29 篇原创文章 · 获赞 53 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/L1542334210/article/details/101551041