StudentCourse2数据库作业
创建学生数据库StudentCourse2,三个关系:
Student(Sno,Sname,Ssex,Sage,Sdept)
SC(Sno,Cno,Grade)
其中,Student中,Sno为主键,数据类型为char(9),Sname取值不重,数据类型为char(20),Ssex数据类型为char(2),Sage数据类型为smallint,Sdept数据类型为char(20);
Course中,Cno为主键,数据类型为char(4),Cname不能为空值,数据类型为char(20),Cpno数据类型为char(4),Ccredit数据类型为smallint;
SC中,主键是(Sno,Cno),Sno数据类型为char(9),Cno数据类型为char(4),Grade数据类型为smallint
1、查询全体学生的姓名、学号和所在系
2、查询全体学生的详细记录
3、查询全体学生的姓名及其出生年份
4、查询全体学生的姓名、出生年份和所在院系
5、查询选修了课程的学生学号
6、查询计算机科学系全体学生的名单
7、查询所有年龄在20岁以下的学生姓名及其年龄
8、查询考试成绩不及格的学生的学号
9、查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄
10、查询年龄不在20~23岁之间的学生的姓名、系别和年龄
11、查询计算机科学系、数学系和信息系学生的姓名和性别
12、查询既不是计算机科学系、数学系,也不是信息系学生的姓名和性别
13、查询学号为201215121的学生的详细情况
14、查询所有姓刘的学生的姓名、学号和性别
15、查询姓“欧阳”且全名为三个汉字的学生的姓名
16、查询名字中第二个字为“阳”的学生的姓名和学号
17、查询所有不姓刘的学生的姓名、学号和性别
18、某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号
19、查询所有有成绩的学生学号和课程号
20、查询计算机科学系年龄在20岁以下的学生的姓名
21、查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列
22、查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列
23、查询学生总人数
24、查询选修了课程的学生人数
25、计算选修1号课程的学生的平均成绩
26、查询选修1号课程的学生最高分数
27、查询学生201215012选修课程的总学分数
28、求各个课程号及相应的选课人数
29、查询选修了三门以上课程的学生学号
30、查询平均成绩大于等于90分的学生学号和平均成绩
答案
代码实现:
-- 1.创建数据库 create database if not exists StudentCourse2;
-- 2.创建Student create table if not exists Student( Sno char(9) primary key, Sname char(20) not null, Ssex char(2)not null check(Ssex='男' or Ssex='女'), Sage smallint, Sdept char(20) ) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;
-- 3.创建Course表 create table if not exists Course( Cno char(4) primary key, Cname char(20) not null, Cpno char(4), Ccredit smallint ) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;
-- 4.创建SC表 create table if not exists SC( Sno char(9), Cno char(4), Grade smallint, primary key(Sno,Cno) ) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;
-- 5.插入信息 insert into student
values ('201215121','李勇','男','20','CS'), ('201215122','刘晨','女','19','CS'), ('201215123','王敏','女','18','MA'), ('201215124','张立','男','19','IS');
insert into course values (1,'数据库','5','4'), (2,'数学',null,'2'), (3,'信息系统','1','4'), (4,'操作系统','6','3'), (5,'数据系统','7','4'), (6,'数据处理',null,'2'), (7,'PASCAL语言','6','4');
insert into sc values ('201215121',1,'92'), ('201215121',2,'85'), ('201215121',3,'88'), ('201215122',2,'90'), ('201215122',3,'80');
-- 6.插入一条数据 insert into student values(201215125,'张立','男',18,'IS');
-- 1、查询全体学生的姓名、学号和所在系
select st.Sno,st.Sname,st.Sdept from student st;
-- 2、查询全体学生的详细记录
select * from student;
-- 3、查询全体学生的姓名及其出生年份
select Sname from student;
-- 4、查询全体学生的姓名、出生年份和所在院系
select st.Sname,st.Sdept from student st;
-- 5、查询选修了课程的学生学号
select * from course c where Cpno>0;
-- 6、查询计算机科学系全体学生的名单
select * from student where Sdept='CS';
-- 7、查询所有年龄在20岁以下的学生姓名及其年龄
select * from student st where st.Sage<20;
-- 8、查询考试成绩不及格的学生的学号
select * from sc where sc.Grade<80 or sc.Grade=80;
-- 9、查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄
select Sname 姓名,Sdept 系部,Sage 年龄 from student where Sage in(20,23);
-- 10、查询年龄不在20~23岁之间的学生的姓名、系别和年龄
select Sname 姓名,Sdept 系部,Sage 年龄 from student where Sage<20 or Sage>23;
-- 11、查询计算机科学系、数学系和信息系学生的姓名和性别
select Sname 姓名,Ssex 性别 from student where Sdept='CS' or Sdept='MA' or Sdept='IS';
-- 12、查询既不是计算机科学系、数学系,也不是信息系学生的姓名和性别
select Sname 姓名,Ssex 性别 from student where not (Sdept='CS' or Sdept='MA' or Sdept='IS');
-- 13、查询学号为201215121的学生的详细情况
select * from student where Sno='201215121';
-- 14、查询所有姓刘的学生的姓名、学号和性别
select * from student where Sname like '刘%';
-- 15、查询姓“欧阳”且全名为三个汉字的学生的姓名
select * from student where Sname like '欧阳' and Sname like '__';
-- 16、查询名字中第二个字为“阳”的学生的姓名和学号
select Sname 姓名,Sno 学号 from student where Sname like '阳%';
-- 17、查询所有不姓刘的学生的姓名、学号和性别
select Sname 姓名,Sno 学号,Ssex 性别 from student where not Sname like '刘%';
-- 18、某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号
select sc.Sno 学号,sc.Cno 课程号 from sc where Grade is null;
-- 19、查询所有有成绩的学生学号和课程号
select sc.Sno 学号,sc.Cno 课程号 from sc where not Grade is null;
-- 20、查询计算机科学系年龄在20岁以下的学生的姓名
select Sname from student where Sage<20 and Sdept='CS';
-- 21、查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列
select sc.Sno 学号,sc.Grade 成绩 from sc where sc.Cno=3 order by Grade desc;
-- 22、查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列
-- 23、查询学生总人数
select count(Sno) 总人数 from student;
-- 24、查询选修了课程的学生人数
select count(Sno) 总人数 from sc;
-- 25、计算选修1号课程的学生的平均成绩
select avg(Grade) 平均成绩 from sc where sc.Cno=1;
-- 26、查询选修1号课程的学生最高分数
select max(Grade) 最高分 from sc where sc.Cno=1;
-- 27、查询学生201215012选修课程的总学分数
select sum(Grade) 总分 from sc where sc.Sno='201215122';
-- 28、求各个课程号及相应的选课人数
select Cno 课程号,count(Sno) 选课人数 from sc group by sc.Cno; -
- 29、查询选修了三门以上课程的学生学号
select Sno from sc group by Sno having count(*)>3;
-- 30、查询平均成绩大于等于90分的学生学号和平均成绩
select Sno,avg(Grade) from sc GROUP BY Sno having avg(Grade)>=90;
本文作者:菜鸡前来
本文链接:https://www.cnblogs.com/lyhidea/p/16936052.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步