MySQL-查询测试
数据准备
CREATE TABLE 学生基本情况表 (学号 VARCHAR(10) PRIMARY KEY,姓名 VARCHAR(20),专业名 VARCHAR(20),性别 TINYINT(1),出生时间 DATE,总学分 INT,照片 TEXT,备注 TEXT
);
INSERT INTO 学生基本情况表 (学号, 姓名, 专业名, 性别, 出生时间, 总学分, 照片, 备注) VALUES
('081101', '王林', '计算机', 1, '1990-02-10', 50, NULL, NULL),
('081102', '程明', '计算机', 1, '1991-02-01', 50, NULL, NULL),
('081103', '王燕', '计算机', 0, '1989-10-06', 50, NULL, NULL),
('081104', '韦严平', '计算机', 1, '1990-08-26', 50, NULL, NULL),
('081106', '李方方', '计算机', 1, '1990-11-20', 50, NULL, NULL),
('081107', '李明', '计算机', 1, '1990-05-01', 54, NULL, '提前修完《数据结构》'),
('081108', '林一帆', '计算机', 1, '1989-08-05', 52, NULL, '已提前修完一门课'),
('081109', '张强民', '计算机', 1, '1989-08-11', 50, NULL, NULL),
('081110', '张蔚', '计算机', 0, '1991-07-22', 50, NULL, '三好生'),
('081111', '赵琳', '计算机', 0, '1990-03-18', 50, NULL, NULL),
('081113', '严红', '计算机', 0, '1989-08-11', 48, NULL, '有一门功课不及格,待补考'),
('081201', '王敏', '通信工程', 1, '1989-06-10', 42, NULL, NULL),
('081202', '王林', '通信工程', 1, '1989-01-29', 40, NULL, '有一门课不及格,待补考');CREATE TABLE 课程表 (课程号 INT PRIMARY KEY,课程名 VARCHAR(50),开课学期 INT,学时 INT,学分 INT
);
INSERT INTO 课程表 (课程号, 课程名, 开课学期, 学时, 学分) VALUES
(101, '计算机基础', 1, 80, 5),
(102, '程序设计与语言', 2, 68, 4),
(206, '离散数学', 4, 68, 4),
(208, '数据结构', 5, 68, 4),
(209, '操作系统', 6, 68, 4),
(210, '计算机原理', 5, 85, 5),
(212, '数据库原理', 7, 68, 4),
(301, '计算机网络', 7, 51, 3),
(302, '软件工程', 7, 51, 3);CREATE TABLE 成绩表 (学号 VARCHAR(10),课程号 INT,成绩 INT,学分 INT
);
INSERT INTO 成绩表 (学号, 课程号, 成绩, 学分) VALUES
('081101', 101, 80, 5),
('081101', 102, 78, 4),
('081101', 206, 76, 4),
('081102', 102, 78, 4),
('081102', 206, 78, 4),
('081103', 101, 62, 5),
('081103', 102, 70, 4),
('081103', 206, 81, 4);
问题
对 XSCJ 数据库完成以下查询:
1. 查询 XS 表中各个同学的姓名、专业名和总学分。
2. 查询 XS 表中计算机系同学的学号、姓名和总学分,结果中各列的标题分别指定为 number、name 和 mark。3. 查询 XS 表中计算机系同学的学号、姓名和总学分,对其总学分按以下规则进行替换:若总学分为空值,替换为“尚未选课”;若总学分小于 50,替换为“不及格”;若总学分在 50~52 之间,替换为“合格”;若总学分大于 52,替换为“优秀”。列标题更改为“等级”。
4. 按 120 分计算成绩,显示 XS_KC 表中学号为 081101 的学生课程信息。(x1.2)
5. 对 XS 表只选择专业名和总学分,消除结果集中的重复行。
6. 求学生的总人数。
7. 统计选修不为空的学生数目。
8. 统计总学分在 50 分以上的人数。
9. 求选修 101 课程的学生的最高分和最低分。
10. 求学号 081101 的学生所学课程的总成绩。
11. 求选修 101 课程的学生的平均成绩。
12. 查询 XS 表中学号为 081101 的学生的情况。
13. 查询 XS 表中总学分大于 50 的学生的情况。
14. 查询 XS 表中备注为空的同学的情况。
15. 查询 XS 表中专业为计算机,性别为女(0)的同学的情况。
16. 查询 XS_KC 表中 102 和 206 课程中大于 80 分的同学的记录。
17. 查询 XS 表中姓“王”的学生学号、姓名及性别。
18. 查询 XS 表中学号倒数第 2 个数字为 0 的学生学号、姓名及专业名。
19. 查询 XS 表中名字包含下划线的学生学号和姓名。
20. 查询 XS 表中不在 1989 年出生的学生情况。
21. 查询 XS 表中专业名为“计算机”“通信工程”的学生的情况。
22. 查询 XS 中总学分尚不定的学生情况。
23. 查找所有学生选过的课程名和课程号。24. 查找选修了 206 课程且成绩在 80 分以上的学生姓名及成绩。
25. 查找修了“计算机基础”课程且成绩在 80 分以上的学生学号、姓名、课程名及成绩。
26. 查找课程不同、成绩相同的学生的学号、课程号和成绩
27. 查找 KC 表中所有学生选过的课程名。
28. 查找所有学生情况及他们选修的课程号,若学生未选修任何课,也要包括其情况。
29. 查找被选修了的课程的选修情况和所有开设的课程名。
30. 查找选修了课程号为 206 课程的学生的姓名、学号。
31. 查找未选修离散数学的学生的姓名、学号和专业名。
32. 查找选修了离散数学的学生学号。
33. 查找 XS 表中比所有计算机系的学生年龄都大的学生的学号、姓名、专业名和出生日期。
34. 查找 XS_KC 表中课程号 206 的成绩不低于课程号 101 的最低成绩的学生的学号。
35. 查找选修 206 号课程的学生姓名。
36. 将 XS 中各专业名输出。
37. 求 XS 中各专业的学生数。
38. 求被选修的各门课程的平均成绩和选修该课程的人数。
39. 在 XSCJ 数据库上产生一个结果集,包括每个专业的男生人数、女生人数、总人数,以及学生总人数。
40. 查找平均成绩在 85 分以上的学生的学号和平均成绩。
41. 查找选修课程超过 2 门且成绩都在 80 分以上的学生的学号。
42. 将通信工程专业的学生按出生日期先后排序。
43. 将计算机专业学生的“计算机基础”课程成绩按降序排列。
44. 将计算机专业学生按其平均成绩排列。
45. 查找 XS 表中学号最靠前的 5 位学生的信息。
46. 查找 XS 表中从第 4 位同学开始的 5 位学生的信息。