SQL代码如下:
CREATE TABLE student
(Sno varchar(20) NOT NULL,
Sname varchar(20) NOT NULL,
sex varchar(20) NOT NULL,
age INT NOT NULL,
dept varchar(20) NOT NULL,
PRIMARY KEY (Sno)
);
CREATE TABLE course
(Cno varchar(20) NOT NULL,
Cname varchar(20) NOT NULL,
hours VARCHAR(20) NOT NULL,
PRIMARY KEY (Cno)
);
CREATE TABLE sc
(Sno varchar(20) NOT NULL,
Cno varchar(20) NOT NULL,
grade INT ,
PRIMARY KEY (Sno,Cno)
);
INSERT INTO student VALUES ('9512101','李勇','男',19,'计算机系');
INSERT INTO student VALUES ('9512102','刘晨','男',20,'计算机系');
INSERT INTO student VALUES ('9512103','王敏','女',20,'计算机系');
INSERT INTO student VALUES ('9521101','张立','男',22,'信息系');
INSERT INTO student VALUES ('9521102','吴宾','女',21,'信息系');
INSERT INTO student VALUES ('9521103','张海','男',20,'信息系');
INSERT INTO student VALUES ('9531101','钱小力','女',18,'数学系');
INSERT INTO student VALUES ('9531102','王大力','男',19,'数学系');
INSERT INTO course VALUES ('C01','计算机文化学','70');
INSERT INTO course VALUES ('C02','VB','90');
INSERT INTO course VALUES ('C03','计算机网络','80');
INSERT INTO course VALUES ('C04','数据库基础','108');
INSERT INTO course VALUES ('C05','高等数学','180');
INSERT INTO course VALUES ('C06','数据结构','72');
INSERT INTO sc VALUES ('9512101','C01',90);
INSERT INTO sc VALUES ('9512101','C02',86);
INSERT INTO sc VALUES ('9512101','C06',NULL);
INSERT INTO sc VALUES ('9512102','C02',78);
INSERT INTO sc VALUES ('9512102','C04',66);
INSERT INTO sc VALUES ('9521102','C01',82);
INSERT INTO sc VALUES ('9521102','C02',75);
INSERT INTO sc VALUES ('9521102','C04',92);
INSERT INTO sc VALUES ('9521102','C05',50);
INSERT INTO sc VALUES ('9521103','C02',68);
INSERT INTO sc VALUES ('9521103','C06',NULL);
INSERT INTO sc VALUES ('9531101','C01',80);
INSERT INTO sc VALUES ('9531101','C05',95);
INSERT INTO sc VALUES ('9531102','C05',85);
一 具体查询需求题目:
1.分别查询学生表和学生修课表中的全部数据。
2.查询成绩在70-80分之间的学生的学号、课程号和成绩。
3.查询C01号课程成绩最高的分数
4.查询学生都选修了哪些课程,要求列出课程号
5.查询C02号课程的所有学生的平均成绩、最高成绩和最低成绩。
6.统计每个系的学生人数
7.统计每门课程的修课人数和考试最高分
8.统计每个学生的选课门数,并按选课门数的递增顺序显示结果
9.统计选修课的学生总数和考试的平均成绩
10.查询选课门数超过2门的学生的平均成绩和选课门数
11.列出总成绩超过200分的学生,要求列出学号、总成绩
12.查询选修了C02号课程的学生的姓名和所在系。
13.查询成绩80分以上的学生的姓名、课程号和成绩,并按成绩的降序排列结果。
14.查询计算机系男生修了‘数据库基础’的学生姓名、性别、成绩
15.查询哪些学生的年龄相同,要求列出年龄相同的学生的姓名和年龄。
16.查询哪些课程没有人选,要求列出课程号和课程名。
17.查询有考试成绩的所有学生的姓名、修课名称及考试成绩。
-- 要求将查询结果放在一张新的永久表(假设新表名为new-sc)中。
18.分别查询信息系和计算机系的学生姓名、性别、修课名称、修课成绩
19.用子查询实现如下查询:
(1)查询选修了C01号课程的学生的姓名和所在系
(2)查询数学系成绩80分以上的学生的学号和姓名。
(3)查询计算机系学生所选的课程名
20.将计算机系成绩高于80分的学生的修课情况插入到另一张表中,分两种情况实现:
(1)通过查询创建临时表;
(2)先建一个新表,然后再插入数据
21.删除修课成绩小于50分的学生的修课记录
22.将所有选修了C01课程的学生的成绩加10分。
二 补充查询统计:
1 请查询统计每个学生选课的门数;输出学号,姓名,选课门数数据;
2 请查询统计每门课的选课人数;输出:课程编号,课程名称,选课人数数据;
3 请统计计算 每门课的成绩分布;
输出格式:课程编号,课程名称,不及格人数;70--80分人数;80--90分人数;大于等于90分人数;
课程编号课程名称不及格人数60<=分数<8080<=分数<90分数>=90
提示:
1 可以创建一个临时表,来存放上述结构;
2 然后分别统计每门课的数据分数分布情况数据,插入到上面的表;
可以编写一个存储过程来完成;
参考:https://www.it610.com/article/5216785.htm
4 统计每个学院男生人数,女生人数;
输出:学院名称,男生数,女生数;
5 统计每门课程的以下数据:
课程编号课程名称平均分最高分最低分
6 统计某门课程的平均分,按照学院进行排序;
7 统计某门课程男生的平均分,女生的平均分;
8 统计某个学生的选课成绩,按照以下结果输出:
学号,姓名,课程名称, 成绩