数据库期末考试编程题.docx

上传人:b****2 文档编号:17656979 上传时间:2023-07-27 格式:DOCX 页数:14 大小:76.30KB
下载 相关 举报
数据库期末考试编程题.docx_第1页
第1页 / 共14页
数据库期末考试编程题.docx_第2页
第2页 / 共14页
数据库期末考试编程题.docx_第3页
第3页 / 共14页
数据库期末考试编程题.docx_第4页
第4页 / 共14页
数据库期末考试编程题.docx_第5页
第5页 / 共14页
数据库期末考试编程题.docx_第6页
第6页 / 共14页
数据库期末考试编程题.docx_第7页
第7页 / 共14页
数据库期末考试编程题.docx_第8页
第8页 / 共14页
数据库期末考试编程题.docx_第9页
第9页 / 共14页
数据库期末考试编程题.docx_第10页
第10页 / 共14页
数据库期末考试编程题.docx_第11页
第11页 / 共14页
数据库期末考试编程题.docx_第12页
第12页 / 共14页
数据库期末考试编程题.docx_第13页
第13页 / 共14页
数据库期末考试编程题.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据库期末考试编程题.docx

《数据库期末考试编程题.docx》由会员分享,可在线阅读,更多相关《数据库期末考试编程题.docx(14页珍藏版)》请在冰点文库上搜索。

数据库期末考试编程题.docx

数据库期末考试编程题

四、编程题(每小题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学生表where姓名like'张%'

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,SCwhere=;

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)SELECT#,SNAME

FROMS,SC

WHERE#=#ANDC#=’C01001’

(2)SELECT#

FROMSCASX,SCASY

WHERE#=#AND#=’C00101’AND#=’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\’,

SIZE=10MB,

MAXSIZE=20MB,

FILEGROWTH=10%)

LOGON(

FILENAME=’D:

\TEST\’,

SIZE=2MB,

MAXSIZE=5MB,

FILEGROWTH=10%)

(2)CREATEPROCEDUREproc_reader

@lib_numchar(8)

AS

SELECTA.借书证号,姓名,,书名

FROMReaderA,JYB,BOOKC

WHEREA.借书证号=B.借书证号AND=ANDA.借书证号=@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)

ASSELECT,,CNO,,

FROMS,SC

WHERE=

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\’,

SIZE=10MB,

MAXSIZE=20MB,

FILEGROWTH=10%)

LOGON(

FILENAME=’D:

\TEST\’,

SIZE=2MB,

MAXSIZE=5MB,

FILEGROWTH=10%)

(2)CREATEPROCEDUREproc_reader

@lib_numchar(8)

AS

SELECTA.借书证号,姓名,,书名

FROMReaderA,JYB,BOOKC

WHEREA.借书证号=B.借书证号AND=ANDA.借书证号=@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

fromtable_Client

whereCNOin

(selectdistinctCNO

fromtable_CG)

(2)selectCNO,Cname

fromtable_Client

whereCbirthday=’1978’

(3)selectCNO,Cname

fromtable_Client

whereCNOin

(selectCNO

fromtable_CG

groupbyCNO

havingcount(*)>3)

6、学生-选课-课程数据库由以下四个关系模式构成:

STUDENT(SNO,SName,SAge,SSex,SAddress)

TEACHER(TNO,TTeacher,TPos,TAddress)

COURSE(CNO,CName,CTerm,CCredit,TNO)

SELECTCOURSE(SNO,CNO,Grade)

按要求完成下列各题。

(1)用SQL语句建立STUDENT表。

(2)为COURSE表建立插入触发器,保证教师编号的正确性。

(1)

解:

createtablestudent

snonvarchar(8),

snamenvarchar(10),

sageint,

ssexchar(4),

saddressnvarchar(50),

primarykey(sno)

(2)

createtriggercourse_insert_tnooncourse

forinsert

asif(notexists

(selecttnofromteacherwheretnoin

(selectfrominserted)))

begin

print'无此教师'

rollbacktransaction

end

1、设学生课程数据库中有三个关系:

学生关系S(S#,SNAME,AGE,SEX)

学习关系SC(S#,C#,GRADE)

课程关系C(C#,CNAME)

其中S#、C#、SNAME、AGE、SEX、GRADE、CNAME分别表示学号、课程号、姓名、年龄、性别、成绩和课程名。

用SQL语句表达下列操作

(1)检索选修课程名称为“MATHS”的学生的学号与姓名

(2)检索至少学习了课程号为“C1”和“C2”的学生的学号

(3)检索年龄在18到20之间(含18和20)的女生的学号、姓名和年龄

(4)检索平均成绩超过80分的学生学号和平均成绩

(5)检索选修了全部课程的学生姓名

(6)检索选修了三门课以上的学生的姓名

答案:

(1)SELECTSNAME,AGE

FROMS,SC,C

WHERE#=#

AND#=#

ANDCNAME=’MATHS’

(2)SELECTS#

FROMSC

WHERECNO=’C1’ANDS#IN(SELECTS#

FROMSC

WHERECNO=’C2’)

(3)SELECTS#,SNAME,AGE

FROMS

WHEREAGEBETWEEN18AND20

(4)SELECTS#,AVG(GRADE)‘平均成绩’

FROMSC

GROUPBYS#

HAVINGAVG(GRADE)>80

(5)SELECTSNAME

FROMS

WHERENOTEXISTS

(SELECT*

FROMC

WHERENOTEXISTS

(SELECT*

FROMSC

WHERES#=#ANDC#=#

(6)SELECTSNAME

FROMS,SC

WHERE#=#

GROUPBYSNAME

HAVINGCOUNT(*)>3

2、设学生-课程数据库中包括三个表:

学生表:

Student(Sno,Sname,Sex,Sage,Sdept)

课程表:

Course(Cno,Cname,Ccredit)

学生选课表:

SC(Sno,Cno,Grade)

其中Sno、Sname、Sex、Sage、Sdept、Cno、Cname、Ccredit、Grade分别表示学号、姓名、性别、年龄、所在系名、课程号、课程名、学分和成绩。

试用SQL语言完成下列项操作:

(1)查询选修课程包括“1042”号学生所学的课程的学生学号

(2)创建一个计科系学生信息视图S_CS_VIEW,包括Sno学号、Sname姓名、Sex性别;

(3)通过上面第2题创建的视图修改数据,把王平的名字改为王慧平

(4)创建一选修数据库课程信息的视图,视图名称为datascore_view,包含学号、姓名、成绩。

答案:

(1)SELECTDISTINCTSNO

FROMSCSCX

WHERENOTEXISTS

(SELECT*

FROMSCSCY

WHERE='1042'AND

NOTEXISTS

(SELECT*

FROMSCSCZ

WHERE=AND

=);

(2)CREATEVIEWS_CS_VIEW

AS

SELECTSNO,SNAME,SEX

FROMSTUDENT

WHERESdept=’CS’

(3)UPDATES_CS_VIEW

SETSNAME=’王慧平’

WHERESNAME=’王平’

(4)CREATEVIEWdatascore_view

AS

SELECTSNO学号、SNAME姓名、GRADE成绩

FROMSTUDENT,SC,COURSE

WHERE=

AND=

ANDCNAME=’数据库’

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2