sql查询前五名_SQL简单题目练练手

博客给出23道SQL查询题目,包括查找学生表记录、特定编号学生信息、成绩统计、区间成绩信息等,还涉及日期函数、去重函数、排序、模糊匹配等知识,同时对部分题目给出详细讲解,如求特定学生总成绩的计算方法。

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

cf8b7de44fead4827cdee9b7f03d40ba.png

今天给大家出几个题目,看看大家掌握的怎么样?如果没有下面4表到上一篇文章找哦!

May:看完这篇文章保证你学会sql的增删改​zhuanlan.zhihu.com
011ef5d6f7960595f40312c7f993b76e.png

做题之前先把昨天改复杂的表变简单了

ALTER TABLE student RENAME stu;
UPDATE stu set  s_name='赵雷' WHERE stu_id='01';
ALTER TABLE stu CHANGE stu_id s_id VARCHAR(20);

62ab758370ed72fcb25e783b3079a30e.png
stu表:学生学号、学生姓名、学生年龄、学生性别

f209e96b308f88fed6c59aa3e499b30d.png
sc表:学生学号、课程编号、成绩

fa42b65b5bcf71ad23d96f9a9bd0bb9a.png
co表:课程编号、课程名称和教师编号

07db8026d91a7b0c7a3f3481206bd9a1.png
te表:教师编号和姓名

题目与讲解:

# 1.查找学生表stu的所有记录

SELECT*FROM stu;

35b22b634a958dbaa1d5c8467ff47c27.png

# 2.查找所有学生的学号、姓名

SELECT s_id,s_name FROM stu;

a060f65f03cdeff1e34e523564fe6c54.png

# 3.查找学生编号为01的学生信息

SELECT * FROM stu WHERE s_id='01';

efc831244c2663e3b13ebcae60ba2499.png

# 4.查找男性同学的学生编号、学生姓名;

SELECT s_id,s_name FROM stu WHERE s_sex='男';

2d9d0a143bb248dee21862b4ea5c8c33.png

# 5.查找本月过生日的同学信息

SELECT * FROM stu WHERE month(s_age)=month(CURRENT_DATE);#做题的时候是7月所以没有

cc2823b666c7aecc4df62966a7a80d8c.png

日期类型的函数有哪些呢?

SELECT CURRENT_DATE,CURRENT_TIME,NOW(),CURDATE(),CURTIME();

bd6d361767de81cdc7346485d0b35dd3.png
SELECT MONTH(CURDATE()),
YEAR(CURDATE()),
DAY(CURRENT_DATE),
HOUR(CURRENT_TIME),
MIN(CURRENT_TIME),
SECOND(CURRENT_TIME);

613682ccbcbbaf32859f8aafa337d62f.png

# 6.查询学生编号为01的学生成绩总分;

SELECT s_id,SUM(score)总分 FROM sc WHERE s_id='01';

346176e1c1c8b82557721914e5e9a38f.png

执行顺序 from——where——select

select:针对本地的数据,获取数据要不要做计算

from:针对数据库的数据进行处理,将数据库的数据获取到本地

# 7.查询学生编号为01的学生成绩的总分、平均分、最高分、最低分

SELECT s_id,
SUM(score)总分,
AVG(score)平均分,
MAX(score)最高分,
MIN(score)最低分 
FROM sc WHERE s_id='01';

79916162bb034561ff8479429968d0fb.png

# 8.查询不及格的学生成绩信息

SELECT * FROM sc WHERE score<60;

f0ff7cccafd45a581fbe5e31db6a4be1.png

# 9.查找学生编号不为01的其他同学的成绩信息

不为有两个符号“!=”和“<>”

SELECT *FROM sc WHERE s_id!='01';
SELECT *FROM sc WHERE s_id<>'01';

00c617c71555759f2e60fc35c2bcf78b.png

# 10.查找成绩在60-80分区间的成绩信息;

有四种方法哦!你能想出几种呢?

SELECT * FROM sc WHERE score>=60 and score<=80;
SELECT * FROM sc WHERE score in(60,80);
SELECT * FROM sc WHERE score BETWEEN 60 and 80;
SELECT * FROM sc WHERE (score>=60) * (score<=80);

4419b6f38a5f147dc92f7b2cce004703.png

'*'代替“and” ,'+'代替“or”

# 11.查找成绩不在60-80分区间的成绩信息

SELECT * FROM sc WHERE score<60 or score>80;
SELECT * FROM sc WHERE score not in(60,80);
SELECT * FROM sc WHERE score not BETWEEN 60 and 80;
SELECT * FROM sc WHERE (score<60) + (score>80);
SELECT * FROM sc WHERE not (score>=60)*(score<=80);

349f8ae5f292de0e1d9828d08e0a9d4f.png

# 12.查找学生编号为01和02的学生信息;

SELECT *FROM stu  WHERE s_id='01' or s_id='02';
SELECT * FROM stu WHERE s_id  in('01','02');

64f94966cf23faf41f632fa2143f142b.png

# 延伸问题 求01和02 同学的总成绩

SELECT s_id,SUM(score)总成绩 FROM sc  WHERE s_id='01' or s_id='02' GROUP BY s_id;

d0247aee659808da80f2027f474140b3.png

#仔细讲解

SELECT s_id,SUM((s_id='01')*score)'学号01的成绩',SUM((s_id='02')*score)'学号02的成绩' FROM sc;

aa916aeacc8dc81d9b393317edce36be.png

SUM((s_id='01')score) 完整代码:SUM((if s_id='01' then 1 else 0)*score)

先判断s_id='01'

97bfd7f8d54341d6ba3a4f51df5f7bbb.png

(s_id='01')*score

学号01的成绩=(s_id='01')*score

bdd3df3c7fe56760a2b8e5e79969dcc2.png

SUM((s_id='01')*score)

对“(s_id='01')*score”列进行求和得到最终结果

4291df150882db49510d96fcb4bec47e.png

#13.查找学生编号不为01和02的学生信息:

SELECT *FROM stu  WHERE s_id!='01' and s_id!='02';
SELECT * FROM stu WHERE s_id not in('01','02');

82778153339000e271b93859e7a4ddd2.png

#14.查询学生编号为01或者02的课程编号为01的成绩信息:

SELECT * FROM sc WHERE c_id='01' and s_id in ('01','02');
SELECT * FROM sc WHERE (s_id='01' or s_id='02') and c_id='01';

and 运算优先于or。如果想要提升优先级,那就要像数学算式一样加一个小括号。

3537bc06cf3ddb69b6485f599bd390c2.png

#15.查找男性同学的人数

SELECT COUNT(*)男同学人数 FROM stu WHERE s_sex='男';
SELECT SUM(s_sex='男')男同学人数 FROM stu;

617b9e75fc570fb9f7ce870939491336.png

#16.查询名字中含有“风”字的学生信息:

SELECT * FROM stu WHERE s_name like '%风%';

'%'代表任意长度 任意字符,'_' 代表一个长度 任意字符;结合like函数进行模糊匹配;

902068b99eecaf531024073b113852d0.png

#17.查询名字中含有“李”的老师数量:

SELECT COUNT(*)老师数量 FROM te WHERE t_name like '%李%';

d7ab85f29c1f11c9a6df85d50f760902.png

#18.查询出现过学生考试不及格的课程:

SELECT DISTINCT c_id FROM sc where score<60;

去重函数必须放在前面,针对所有字段去重

7610470ae1ed473fbd2c2891851fe72e.png

#19.按成绩升序显示成绩信息:

SELECT*FROM sc ORDER BY score ASC;

8ab5a87f1c26b92feda514133fb62db6.png

DESC stu; desc:describe描述表信息

ORDERBY score DESC;desc:descending 降序排列

ORDERBY score ASC ;asc:ascending 升序排列 ;

#20.按学生编号升序,课程编号降序显示成绩信息:

SELECT*FROM sc ORDER BY s_id,c_id DESC;

2b699cd76d1b3d2496c0db3224f8c577.png

#21.查询课程编号为01的学生成绩,按分数降序,学生编号升序排列:

SELECT * FROM sc WHERE c_id='01' ORDER BY score DESC,s_id ASC;

03961f02e22c4dfeb9fbf2276e4add0a.png

#22.查询成绩前三名的成绩信息:

单科成绩前三名

SELECT s_id,score FROM sc ORDER BY score desc LIMIT 3; 

6d3625508eb3424983fad060b88fe6cb.png

总分前三名

SELECT s_id,SUM(score)总分 FROM sc GROUP BY s_id ORDER BY 总分 desc LIMIT 3; 

LIMIT m,n:表示从第m行开始一共是n行,注意第m行是从0开始排的。

1e4411599655eb2e1f6abc4b462e597c.png

#23.查询成绩第三名到第五名的成绩信息:

单科成绩三至五名

SELECT s_id,score FROM sc ORDER BY score desc LIMIT 2,3; 

637ad0f821f58afc31cb78e86fa1080c.png

总分三至五名

SELECT s_id,SUM(score)总分 FROM sc GROUP BY s_id ORDER BY 总分 desc LIMIT 2,3;

06721f8a665c583e44f1e5e1ed8c7dac.png

大家感觉怎么样?加油!美好的未来就在前方!

查询题目

1.查找学生表stu的所有记录

2.查找所有学生的学号、姓名

3.查找学生编号为01的学生信息

4.查找男性同学的学生编号、学生姓名;

5.查找本月过生日的同学信息

6.查询学生编号为01的学生成绩总分;

7.查询学生编号为01的学生成绩的总分、平均分、最高分、最低分;

8.查询不及格的学生成绩信息;

9.查找学生编号不为01的其他同学的成绩信息

10.查找成绩在60-80分区间的成绩信息;

11.查找成绩不在60-80分区间的成绩信息

12.查找学生编号为01和02的学生信息;

延伸问题 求01和02 同学的总成绩;

13.查找学生编号不为01和02的学生信息;

14.查询学生编号为01或者02的课程编号为01的成绩信息;

15.查找男性同学的人数;

16.查询名字中含有“风”字的学生信息;

17.查询名字中含有“李”的老师数量

18.查询出现过学生考试不及格的课程

19.按成绩升序显示成绩信息

20.按学生编号升序,课程编号降序显示成绩信息:

21.查询课程编号为01的学生成绩,按分数降序,学生编号升序排列

22.查询成绩前三名的成绩信息:

23.查询成绩第三名到第五名的成绩信息:

9adebb56228b3fda22f91728738331dc.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值