mysql-面试50题-3

文章详细列举了使用MySQL进行基础数据查询的操作,如按性别和名字统计人数、筛选特定条件的学生信息、计算平均成绩等,展示了SQL查询在实际场景中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、查询数据 

ymysql-面试50题-2-优快云博客

二、问题

21.查询男生、女生人数

mysql> select ssex, count(*) from student
    -> group by ssex;

+------+----------+
| ssex | count(*) |
+------+----------+
| 女   |        8 |
| 男   |        4 |
+------+----------+
2 rows in set (0.02 sec)

22.查询名字中含有「风」字的学生信息

mysql> select *
    -> from student
    -> where student.Sname like '%风%'
    -> ;

+------+--------+---------------------+------+
| SId  | Sname  | Sage                | Ssex |
+------+--------+---------------------+------+
| 03   | 孙风   | 1990-12-20 00:00:00 | 男   |
+------+--------+---------------------+------+
1 row in set (0.00 sec)

23.查询同名同性学生名单,并统计同名人数

mysql> select sname, count(*) from student
    -> group by sname
    -> having count(*)>1;

+--------+----------+
| sname  | count(*) |
+--------+----------+
| 李四   |        2 |
+--------+----------+
1 row in set (0.00 sec)

24.查询 1990 年出生的学生名单

mysql> select *
    -> from student
    -> where YEAR(student.Sage)=1990;

+------+--------+---------------------+------+
| SId  | Sname  | Sage                | Ssex |
+------+--------+---------------------+------+
| 01   | 赵雷   | 1990-01-01 00:00:00 | 男   |
| 02   | 钱电   | 1990-12-21 00:00:00 | 男   |
| 03   | 孙风   | 1990-12-20 00:00:00 | 男   |
| 04   | 李云   | 1990-12-06 00:00:00 | 男   |
+------+--------+---------------------+------+
4 rows in set (0.00 sec)

25.查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列

mysql> select sc.CId,avg(sc.score) from sc,course
    -> group by sc.cid
    -> order by avg(sc.score) desc,cid asc;

+------+---------------+
| CId  | avg(sc.score) |
+------+---------------+
| 02   |      72.66667 |
| 03   |      68.50000 |
| 01   |      64.50000 |
+------+---------------+
3 rows in set (0.00 sec)

26.查询平均成绩大于等于 85 的所有学生的学号、姓名和平均成绩

mysql> select student.sid, AVG(sc.score) as aver from student, sc
    -> where student.sid = sc.sid
    -> group by sc.sid
    -> having aver > 85;

+------+----------+
| sid  | aver     |
+------+----------+
| 01   | 89.66667 |
| 07   | 93.50000 |
+------+----------+
2 rows in set (0.00 sec)

27.查询课程名称为「数学」,且分数低于 60 的学生姓名和分数

mysql> select student.sname, sc.score from student, sc, course
    -> where student.sid = sc.sid
    -> and course.cid = sc.cid
    -> and course.cname = "数学"
    -> and sc.score < 60;

+--------+-------+
| sname  | score |
+--------+-------+
| 李云   |  30.0 |
+--------+-------+
1 row in set (0.00 sec)

28.查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况)

mysql> select student.sname, cid, score from student
    -> left join sc
    -> on student.sid = sc.sid;

+--------+------+-------+
| sname  | cid  | score |
+--------+------+-------+
| 赵雷   | 01   |  80.0 |
| 赵雷   | 02   |  90.0 |
| 赵雷   | 03   |  99.0 |
| 钱电   | 01   |  70.0 |
| 钱电   | 02   |  60.0 |
| 钱电   | 03   |  80.0 |
| 孙风   | 01   |  80.0 |
| 孙风   | 02   |  80.0 |
| 孙风   | 03   |  80.0 |
| 李云   | 01   |  50.0 |
| 李云   | 02   |  30.0 |
| 李云   | 03   |  20.0 |
| 周梅   | 01   |  76.0 |
| 周梅   | 02   |  87.0 |
| 吴兰   | 01   |  31.0 |
| 吴兰   | 03   |  34.0 |
| 郑竹   | 02   |  89.0 |
| 郑竹   | 03   |  98.0 |
| 张三   | NULL |  NULL |
| 李四   | NULL |  NULL |
| 李四   | NULL |  NULL |
| 赵六   | NULL |  NULL |
| 孙七   | NULL |  NULL |
+--------+------+-------+
23 rows in set (0.00 sec)

29查询任何一门课程成绩在 70 分以上的姓名、课程名称和分数

mysql> select student.sname, course.cname,sc.score from student,course,sc
    -> where sc.score>70
    -> and student.sid = sc.sid
    -> and sc.cid = course.cid;

+--------+--------+-------+
| sname  | cname  | score |
+--------+--------+-------+
| 赵雷   | 语文   |  80.0 |
| 赵雷   | 数学   |  90.0 |
| 赵雷   | 英语   |  99.0 |
| 钱电   | 英语   |  80.0 |
| 孙风   | 语文   |  80.0 |
| 孙风   | 数学   |  80.0 |
| 孙风   | 英语   |  80.0 |
| 周梅   | 语文   |  76.0 |
| 周梅   | 数学   |  87.0 |
| 郑竹   | 数学   |  89.0 |
| 郑竹   | 英语   |  98.0 |
+--------+--------+-------+
11 rows in set (0.00 sec)

30.查询不及格的课程

mysql> select DISTINCT sc.CId
    -> from sc
    -> where sc.score <60;

+------+
| CId  |
+------+
| 01   |
| 02   |
| 03   |
+------+
3 rows in set (0.00 sec)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值