数据库期末考试编程题.docx
《数据库期末考试编程题.docx》由会员分享,可在线阅读,更多相关《数据库期末考试编程题.docx(12页珍藏版)》请在冰豆网上搜索。
数据库期末考试编程题
四、编程题(每小题1分,共15分)
可能用到的表结构如下:
学生表(学号,,性别,年龄,班级)
课程表(课程号,课程名,学分)
成绩表(学号,课程号,成绩)
1.创建存储过程GetStudentByID,带有参数sno,根据学生的学号查询学生情况
CreateprocedureGetStudendByIDsnovarchar(10)
As
Begin
Select*from学生表where学号=sno
end
2.编写SQL语句,查询学生表中所有学生,要求第一按照班级升序排序,第二按照年龄降序排序
select*from学生表orderby班级asc,年龄desc
3.编写SQL语句,查询学生表中姓的学生
select*from学生表wherelike'%'
4.编写SQL语句,查询学生表中男女生的人数各多少人
select性别,count(*)from学生表groupby性别
5.编写SQL语句,查询所有比“王平”年龄大的情况
Select*from学生表where年龄>(select年龄from学生表where=’王平’)
6.编写SQL语句,在学生表和成绩表中查询学号,,课程号,成绩
SELECT学生表.学号,学生表.,成绩表.课程号,成绩表.成绩FROM学生表INNERJOIN成绩表ON学生表.学号=成绩表.学号
7.编写SQL语句,将(1022,望,男,19,信息2)的学生插入到学生表中
insertinto学生表(学号,,性别,年龄,班级)values('1022','望','男',19,'信息2')
8.编写SQL语句,将学号为1022学生的改为旺
update学生表set='旺'where学号='1022'
9.编写SQL语句,删除没有选课的学生
deletefrom学生表snonotin(selectsnofromsc)
10.编写SQL语句,查询课程号9的先行课的情况
select*from课程表where课程号=(select先行课号from课程表where课程号=9)
11.编写关系代数,查询选修3号课程的学生学号
∏学号(∫课程号=‘3’(选课表))
12.编写关系代数,查询至少选修了一门直接先行课为5号课程的学生
参看课本60页
13.编写SQL语句,创建学生表
Createtable学生表(学号char(10),varchar(20),性别char
(2),年龄int,班级char(30))
14.编写SQL语句,建立计算机1班男生的视图
Createviewasselect*from学生表where班级=‘计算机1班’and性别=‘男’
15.编写SQL语句,将对学生表的修改权限赋给用户U1
Grantupdateontable学生表toU1
1.设有一个学生课程数据库,包括学生关系Student、课程关系Course、选修关系SC,图1所示:
Student
学号
Sno
Sname
性别
Ssex
年龄
Sage
所在系
Sdept
95001
勇
男
20
CS
95002
晨
女
19
IS
95003
王敏
女
18
MA
95004
立
男
19
IS
Course
课程号
Cno
课程名
Cname
先行课
Cpno
学分
Ccredit
1
数据库
5
4
2
数学
2
3
信息系统
1
4
4
操作系统
6
3
5
数据结构
7
4
6
数据处理
2
7
PASCAL语言
6
4
SC
学号
Sno
课程号
Cno
成绩
Grade
95001
1
92
95001
2
85
95001
3
88
95002
2
90
95002
3
80
图1 学生-课程数据库
写出完成下列要求的SQL语句:
1)查询所有年龄在20岁以下的学生与年龄。
1.selectSname,SagefromStudentwhereSage<20;
或selectSname,SagefromStudentwherenotSage>=20;
2)查询年龄不在20~23(包括20岁和23岁)之间的学生的、系别和年龄。
selectSname,Sdept,SagefromStudentwhereSagenotbetween20and23;
3)查询每个学生及其选修课程的情况。
selectStudent.*,SC.*fromStudent,SCwhereStudent.Sno=SC.Sno;
2.把下面用关系表示的实体、实体与实体之间的联系,用E-R图表示出来,要求在图中表示联系的类型(1∶1、1∶n、m∶n)。
实体1:
学生(学号,,性别,年龄)关键字为:
学号
实体2:
课程(课程号,课程名,学分数)关键字为:
课程号
实体1与实体2的联系:
学习(学号,课程号,成绩)关键字为:
学号+课程号
注:
一个学生可以选多门课程,一门课程也可以被多个学生选,学生选课后有成绩。
学生选课关系E-R图
五、编码题
1、下面给出三个关系模式:
(1)学生关系S(SNO,SName,SAge,SSex)
(2)课程关系C(CNO,CName,CTeacher)
(3)学习关系SC(SNO,CNO,Grade)
根据要求用T-SQL完成下列各题。
(1)检索学习课程号为“C01001”的学生学号与;
(2)检索至少选修课程号为“C00101”和“C02341”的学生学号。
答:
(1)SELECTS.S#,SNAME
FROMS,SC
WHERES.S#=SC.S#ANDC#=’C01001’
(2)SELECTX.S#
FROMSCASX,SCASY
WHEREX.S#=Y.S#ANDX.C#=’C00101’ANDY.C#=’C02341’
2、图书管理数据库BookManager由以下四个关系模式组成,根据该结构用T-SQL完成以下各题。
(1)读者(借书证号,,性别,出生日期)
(2)图书(ISBN,图书名称,作者,,价格,数量)
(3)借阅(借书证号,ISBN,借出时间)
根据要求完成下列各题。
(1)创建一个名称为BookManager的数据库,其初始大小为10MB,最大为20MB,允许数据库自动增长;日志文件初始大小为2MB,最大为5MB。
文件存储在目录D:
\TEST下。
(2)编写一个存储过程,查询某读者当前的借书情况。
(3)创建一个触发器,如果在图书表中添加或更改数据,则向客户端显示一条信息。
解:
(1)CREATEDATABASEBookManager
ON(NAME=’BookManager_DATA’,
FILENAME=’D:
\TEST\BookManager.MDF’,
SIZE=10MB,
MAXSIZE=20MB,
FILEGROWTH=10%)
LOGON(
FILENAME=’D:
\TEST\BookManager.LDF’,
SIZE=2MB,
MAXSIZE=5MB,
FILEGROWTH=10%)
(2)CREATEPROCEDUREproc_reader
lib_numchar(8)
AS
SELECTA.借书证号,,B.ISBN,书名
FROMReaderA,JYB,BOOKC
WHEREA.借书证号=B.借书证号ANDB.ISBN=C.ISBNANDA.借书证号=lib_num
(3)CREATETRIGGERtrig_reminderONReader
FORINSERT,UPDATE
AS
RAISEERROR(4008,16,10)
3、设有学生表S(SNO,SN)(SNO为学生号,SN为)和学生选修课程表SC(SNO,CNO,CN,G)(CNO为课程号,CN为课程名,G为成绩),试用SQL语言完成以下各题:
(1)建立一个视图V_SSC(SNO,SN,CNO,CN,G),并按CNO升序排序;
(2)从视图V_SSC上查询平均成线在90分以上的SN、CN和G。
答:
(1)CREATEVIEWV_SSC(SNO,SN,CNO,CN,G)
ASSELECTS.SNO,S.SN,CNO,SC.CN,SC.G
FROMS,SC
WHERES.SNO=SC.SNO
ORDERBYCNO
(2)SELECTSN,CN,G
FROMV_SSC
GROUPBYSNO
HAVINGAVG(G)>90
4、图书管理数据库BookManager由以下四个关系模式组成,根据该结构用T-SQL完成以下各题。
(1)读者(借书证号,,性别,出生日期)
(2)图书(ISBN,图书名称,作者,,价格,数量)
(3)借阅(借书证号,ISBN,借出时间)
根据要求完成下列各题。
(1)创建一个名称为BookManager的数据库,其初始大小为10MB,最大为20MB,允许数据库自动增长;日志文件初始大小为2MB,最大为5MB。
文件存储在目录D:
\TEST下。
(2)编写一个存储过程,查询某读者当前的借书情况。
(3)创建一个触发器,如果在图书表中添加或更改数据,则向客户端显示一条信息。
解:
(1)CREATEDATABASEBookManager
ON(NAME=’BookManager_DATA’,
FILENAME=’D:
\TEST\BookManager.MDF’,
SIZE=10MB,
MAXSIZE=20MB,
FILEGROWTH=10%)
LOGON(
FILENAME=’D:
\TEST\BookManager.LDF’,
SIZE=2MB,
MAXSIZE=5MB,
FILEGROWTH=10%)
(2)CREATEPROCEDUREproc_reader
lib_numchar(8)
AS
SELECTA.借书证号,,B.ISBN,书名
FROMReaderA,JYB,BOOKC
WHEREA.借书证号=B.借书证号ANDB.ISBN=C.ISBNANDA.借书证号=lib_num
(3)CREATETRIGGERtrig_reminderONReader
FORINSERT,UPDATE
AS
RAISEERROR(4008,16,10)
5、下面给出一个商品销售数据库中包含的三个基本表:
(1)客户表:
table_Client(CNO,Cname,Csex,Cbirthday)
(2)商品表:
table_Goods(GNO,Gname,Gunit,Gprice)
(3)购物表:
table_CG(CNO,GNO,CGquantity)
用T-SQL语句完成下列各题。
(1)查询购买了商品的客户号及。
(2)查询1978年出生的客户号及。
(3)购买了三种以上商品的客户号及客户。
答:
(1)selectCNO,Cname
from