2017-2018 学年第 1 学期 课号 BT123268
课程名称 数据库原理及应用(A卷 ; 闭 卷)
适用班级(或年级、专业)16级计算机系所有专业
考试时间 60 分钟 班级 学号 姓名
题 号 | 一 | 二 | 三 | 四 | 五 | 六 | 七 | 八 | 九 | 十 | 成绩 |
满 分 | |||||||||||
得 分 | |||||||||||
评卷人 |
1、用可视化的操作方式和sql语句创建一个学生数据库(student)。
2、用可视化的操作方式和sql语句创建三张表:
学生基本信息表(studentinfo),课程信息表(course),成绩表(grade)
(1) 学生基本信息表(studentinfo)
字段 | 数据类型 | 备注 |
学号(Sno) | Char(10) | 主键 |
姓名(Sname) | Char(10) | 非空值 |
性别(Ssex) | Char(2) | 只能输入“男”或“女”,默认值为“男” |
出生日期(Sbirthday) | datetime | 非空值 |
联系电话(Stel) | Char(11) | |
入学日期(Stime) | smalldatetime |
字段 | 数据类型 | 备注 |
课程编号(Cno) | int | 主键 |
课程名称(Cname) | Char(50) | 非空值 |
课程学分(Credit) | Char(2) | 非空值 |
字段 | 数据类型 | 备注 |
课程编号(Cno) | int | (学号,课程编号)作为成绩表的主键 |
学号(Sno) | Char(10) | |
成绩(grade) | int | 成绩输入应在0-100之间 |
学生基本信息表(studentinfo)
Sno | Sname | Ssex | Sbirthday | Stel | Stime |
1212010101 | 张小溪 | 男 | 1991-01-01 | null | 2012-09-01 |
1213010101 | 李大男 | 男 | 1992-01-01 | null | 2013-09-01 |
1214010101 | 陈茜茜 | 女 | 1993-01-01 | null | 2014-09-01 |
考生本人 学号 | 考生本人姓名 | 考生本人性别 | 考生本人出生日期 | null | 考生本人入学时间 |
课程信息表(course)
Cno | Cname | Credit |
001 | 数据库原理 | 3 |
002 | C语言 | 7 |
003 | 网页设计与制作 | 3 |
004 | 体育 | 2 |
Cno | Sno | grade |
001 | 1212010101 | 80 |
001 | 考生本人学号 | 90 |
003 | 1212010101 | 75 |
003 | 1213010101 | 92 |
(1)查询student表中所有姓“李”的同学记录信息。
select * from studentinfo
where Sname like '李%'
(2)查询年龄大于20岁的男学生的学号和姓名。
select Sno as 学号,Sname as 姓名
from studentinfo
where Ssex='男' and (datediff(year,Sbirthday,getdate()))>=20
(3)在grade中检索成绩为空值的学生学号和课程号。
select Sno as 学号,Cno as 课程号
from grade
where grade=null
(4)查询既选修“001”课程,又选修“003”课程的所有学生姓名。
select a.Sname as 姓名
from studentinfo a,grade b
where a.Sno=b.Sno and b.Cno='001'and b.Cno='003'
(5)查询选修“数据库原理”课程的所有学生姓名。
select a.Sname as 姓名
from studentinfo a,course b,grade c
where a.Sno=c.Sno and b.Cno=c.Cno and Cname='数据库原理'
(6)查询每门课程成绩最高的同学学号。
select Sno as 学号,c.grade as 成绩
from grade c,course b
WHERE grade=(select max(grade) FROM grade c WHERE b.Cno=c.Cno)
(7)查询“数据库原理”课程的平均成绩。
select avg(grade)as 平均成绩
FROM course b,grade c
WHERE b.Cno=c.Cno and b.Cname='数据库原理'
(8)在基本表grade中修改“001”课程的成绩,让每位同学的成绩都加5分。
update grade
set grade=grade+5
WHERE Cno='001'
(9)统计每门课程的学生选修人数,查询结果按人数降序排列。
select course.Cno as 课程编号,count(distinct grade.Sno)as 选课人数
from grade
join course on grade.Cno=course.Cno
group by course.Cno
order by 选课人数 desc
或者
select c.Cno as 课程编号,count(DISTINCT c.Sno) as 选课人数
from grade c
group by c.Cno
/*having b.Cno*/
order by 选课人数 desc
(10)查询出有二门以上(含两门)课程不及格的学生姓名和学号。
select a.Sno as 学号,a.Sname as 姓名
from studentinfo a,grade b,course c
where a.Sno=b.Sno and b.Cno=c.Cno and grade<60
group by a.Sno,Sname
having count(c.Cno)>=2
5、创建视图,视图内容包括学号,姓名,性别,课程编号,课程名称,成绩。
create view view_2
as
select a.Sno as 学号,a.Sname as 姓名,a.Ssex as 性别,b.Cno as 课程编号,b.Cname as 课程名称,c.grade as 成绩
from studentinfo a,course b,grade c
where a.Sno=c.Sno and b.Cno=c.Cno
6、做完以上操作将所有sql编程语句和数据库文件上传至教师端。
二、考试要求
1、学生在指定时间内做题,为了防止数据丢失,在计算机最后一个盘中新建一个文件夹,以自己的 “学号_姓名”的方式命名,将所有编写程序和数据保存到其中。
2、不可以带书,禁止使用U盘、移动硬盘、存储卡、手机等存储设备,也不允许使用网络,一经发现,按作弊处理,后果自负。