【MySQL】单表、多表查询以及内连接的应用实例

对XSCJ数据库完成以下查询:

1.查询XS表中各个同学的姓名、专业名、总学分。

SELECT 姓名,专业名,总学分 FROM XS;

2.查询xs表中计算机系同学的学号,专业名和总学分,结果中各列的标题分别指定为为number、name 和mark。

SELECT 学号 AS number, 姓名 AS name, 总学分 AS mark FROM XS;

3.查询XS表中计算机系各同单的学号、姓名和总学分。对其总学分按以下规则进行替换:若总学分为空值,替换为“尚未选课”:姓名和总学分;若总学分小于50,替换为“不及格”;若总学分在50-52之间,替换为“合格”;若总学分大于52,替换为“优秀”。列标题更改为“等级”

SELECT 学号,姓名,总学分,

       CASE

              WHEN 总学分 IS NULL THEN '尚未选课'

              WHEN 总学分 <50 THEN '不及格'

              WHEN 总学分 BETWEEN 50 AND 52 THEN '合格'

              WHEN 总学分 >52 THEN '优秀'

       END AS 等级

       FROM XS;

4.按120分计算成绩,显示XS_KC表中学号为081101的学生课程信息。

SELECT 课程号,1.2*成绩 AS 成绩 FROM XS_KC WHERE 学号='081101';

5.对XS表只选择专业名和总学分,消除结果集中的重复行。

SELECT DISTINCT 专业名,总学分 FROM XS;

6.求学生的总人数。

SELECT COUNT(姓名) FROM XS;

7.统计备注不为空的学生数目。

SELECT COUNT(姓名) FROM XS WHERE 备注 IS NOT NULL ;

8.统计总学分在50分以上的人数。

SELECT COUNT(姓名) FROM XS WHERE 总学分 >50 ;

9.求选修101课程的学生的最高分和最低分。

SELECT MAX(成绩),MIN(成绩) FROM XS_KC WHERE 课程号='101';

10.求学号081101的学生所学课程的总成绩。

SELECT SUM(成绩) FROM xs_kc WHERE 学号='081101';

11.求选修101课程的学生的平均成绩。

SELECT AVG(成绩) FROM xs_kc WHERE 课程号='101';

12.查询XS表中学号为081101的学生的情况。

SELECT * FROM xs_kc WHERE 学号='081101';

13.查询XS表中总学分大于50的学生的情况。

SELECT * FROM xs WHERE 总学分 >50;

14.查询XS表中备注为空的同学的情况。

SELECT * FROM xs WHERE 备注 IS NULL;

15.查询XS表中专业为计算机,性别为女(0)的同学的情况。

SELECT * FROM xs WHERE 专业名='计算机' AND 性别='0';

16.查询XS_ KC表中102和206课程中大于80分的同学的记录。

SELECT * FROM xs_kc WHERE 成绩>80 AND 课程号='102' OR 课程号='206' AND 成绩>80;

17.查询XS表中姓“王” 的学生学号、姓名及性别。

SELECT 学号,姓名,性别 FROM xs WHERE 姓名 LIKE '王%';

18.查询XS表中学号倒数第2个数字为0的学生学号、姓名及专业名。

SELECT 学号,姓名,专业名 FROM xs WHERE 学号 LIKE '%0_';

19.查询XS表中名字包含下划线的学生学号和姓名。

SELECT 学号,姓名 FROM xs WHERE 姓名 LIKE '%#_%' ESCAPE '#';

20.查询XS表中不在1989年出生的学生情况。

SELECT * FROM xs WHERE 出生时间 NOT LIKE '1989%';

21.查询XS表中专业名为“计算机”“通信工程”的学生的情况。

SELECT * FROM xs WHERE 专业名='计算机' OR 专业名='通信工程';

22.查询XS中总学分尚不定的学生情况。

SELECT * FROM xs WHERE 总学分 IS NULL;

23.查找所有学生选过的课程名和课程号。

SELECT DISTINCT kc.课程名,kc.课程号 FROM kc,xs_kc WHERE kc.课程号=xs_kc.课程号;

24.查找选修了206课程且成绩在80分以上的学生姓名及成绩。

SELECT xs.姓名,xs_kc.成绩 FROM xs INNER JOIN xs_kc ON xs.学号=xs_kc.学号 AND xs_kc.成绩 > 80  AND  xs_kc.课程号=206;

25查找选修了“计算机基础”课程且成绩在80分以上的学生学号、姓名、课程名及成绩。

25.查找选修了“计算机基础”课程且成绩在80分以上的学生学号、姓名、课程名及成绩。

SELECT xs.学号,xs.姓名,kc.课程名,xs_kc.成绩 FROM xs,xs_kc INNER JOIN kc ON xs_kc.课程号=kc.课程号 AND kc.课程名='计算机基础' AND xs_kc.成绩 >80;

26.查找课程不同、成绩相同的学生的学号、课程号和成绩。

SELECT a.学号,a.课程号,b.课程号,a.成绩 FROM xs_kc a JOIN xs_kc b
ON a.成绩=b.成绩 and a.学号=b.学号 and a.课程号!=b.课程号;

猜你喜欢

转载自blog.csdn.net/m0_65198365/article/details/123698376