分享
分享赚钱 收藏 举报 版权申诉 / 11

类型数据库期末考试编程题.doc

  • 上传人:精品资料
  • 文档编号:11100729
  • 上传时间:2020-02-07
  • 格式:DOC
  • 页数:11
  • 大小:123.50KB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    数据库期末考试编程题.doc
    资源描述:

    1、四、编程题(每小题 1 分,共 15 分)可能用到的表结构如下:学生表(学号,姓名,性别,年龄,班级)课程表(课程号,课程名,学分)成绩表(学号,课程号,成绩)1.创建存储过程 GetStudentByID,带有参数 sno,根据学生的学号查询学生情况Create procedure GetStudendByID sno varchar(10)AsBeginSelect * from 学生表 where 学号=snoend2. 编写 SQL 语句,查询学生表中所有学生,要求第一按照班级升序排序,第二按照年龄降序排序select * from 学生表 order by 班级 asc,年龄 des

    2、c3. 编写 SQL 语句,查询学生表中姓张的学生select * from 学生表 where 姓名 like 张% 4. 编写 SQL 语句,查询学生表中男女生的人数各多少人select 性别,count(*) from 学生表 group by 性别5. 编写 SQL 语句,查询所有比“王平”年龄大的情况Select * from 学生表 where 年龄(select 年龄 from 学生表 where 姓名=王平)6. 编写 SQL 语句,在学生表和成绩表中查询学号,姓名,课程号,成绩SELECT 学生表.学号, 学生表.姓名, 成绩表.课程号, 成绩表.成绩 FROM 学生表 IN

    3、NER JOIN 成绩表 ON 学生表.学号 = 成绩表.学号7. 编写 SQL 语句,将(1022,张望,男,19,信息 2)的学生插入到学生表中insert into 学生表 (学号,姓名,性别,年龄, 班级) values(1022,张望,男,19,信息 2)8. 编写 SQL 语句,将学号为 1022 学生的姓名改为张旺update 学生表 set 姓名=张旺 where 学号=10229. 编写 SQL 语句,删除没有选课的学生delete from 学生表 sno not in (select sno from sc)10. 编写 SQL 语句,查询课程号 9 的先行课的情况sel

    4、ect * from 课程表 where 课程号= (select 先行课号 from 课程表 where 课程号=9) 11. 编写关系代数,查询选修 3 号课程的学生学号学号(课程号=3 (选课表) )12. 编写关系代数,查询至少选修了一门直接先行课为 5 号课程的学生姓名参看课本 60 页13. 编写 SQL 语句,创建学生表Create table 学生表 (学号 char(10) ,姓名 varchar(20),性别 char(2),年龄 int,班级 char(30)14. 编写 SQL 语句,建立计算机 1 班男生的视图Create view as select * from

    5、学生表 where 班级=计算机 1 班 and 性别=男15. 编写 SQL 语句,将对学生表的修改权限赋给用户 U1Grant update on table 学生表 to U11.设有一个学生课程数据库,包括学生关系 Student、课程关系 Course、选修关系 SC,图 1 所示:Student学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept95001 李勇 男 20 CS95002 刘晨 女 19 IS95003 王敏 女 18 MA95004 张立 男 19 ISCourse课程号Cno课程名Cname先行课Cpno学分Ccredit1 数据库 5 42 数学

    6、23 信息系统 1 44 操作系统 6 35 数据结构 7 46 数据处理 27 PASCAL 语言 6 4SC学号Sno课程号Cno成绩Grade95001 1 9295001 2 8595001 3 8895002 2 9095002 3 80图 1 学生-课程数据库写出完成下列要求的 SQL 语句:1)查询所有年龄在 20 岁以下的学生姓名与年龄。1. select Sname,Sage from Student where Sage=20;2)查询年龄不在 2023(包括 20 岁和 23 岁)之间的学生的姓名、系别和年龄。select Sname,Sdept,Sage from St

    7、udent where Sage not between 20 and 23;3)查询每个学生及其选修课程的情况。select Student.*,SC.* from Student,SC where Student.Sno=SC.Sno;2.把下面用关系表示的实体、实体与实体之间的联系,用 E-R 图表示出来,要求在图中表示联系的类型(11、 1n、 mn)。实体 1:学生(学号,姓名,性别,年龄) 关键字为:学号实体 2:课程(课程号,课程名,学分数) 关键字为:课程号实体 1 与实体 2 的联系:学习(学号,课程号,成绩) 关键字为:学号+课程号注:一个学生可以选多门课程,一门课程也可以

    8、被多个学生选,学生选课后有成绩。学生选课关系 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 S.S#,SNAME FROM S,SCWHERE S.S#=SC.S# AND C#=C01001(2)SELECT X.S#FROM SC

    9、AS X,SC AS YWHERE X.S#=Y.S# AND X.C#=C00101 AND Y.C#=C023412、图书管理数据库 BookManager 由以下四个关系模式组成,根据该结构用 T-SQL 完成以下各题。(1)读者(借书证号,姓名,性别,出生日期)(2)图书(ISBN,图书名称,作者,出版社,价格,数量)(3)借阅(借书证号,ISBN,借出时间)根据要求完成下列各题。(1)创建一个名称为 BookManager 的数据库,其初始大小为 10MB,最大为 20MB,允许数据库自动增长;日志文件初始大小为 2MB,最大为 5MB。文件存储在目录 D:TEST 下。(2)编写一

    10、个存储过程,查询某读者当前的借书情况。(3)创建一个触发器,如果在图书表中添加或更改数据,则向客户端显示一条信息。解:(1)CREATE DATABASE BookManagerON( NAME=BookManager_DATA,FILENAME=D:TESTBookManager.MDF,SIZE=10MB,MAXSIZE=20MB,FILEGROWTH=10%)LOG ON(FILENAME=D:TESTBookManager.LDF,SIZE=2MB,MAXSIZE=5MB,FILEGROWTH=10%)(2)CREATE PROCEDURE proc_reader lib_num ch

    11、ar(8)ASSELECT A.借书证号,姓名,B.ISBN,书名FROM Reader A, JY B , BOOK CWHERE A. 借书证号 =B. 借书证号 AND B.ISBN=C.ISBN AND A. 借书证号= lib_num(3)CREATE TRIGGER trig_reminder ON ReaderFOR INSERT ,UPDATEASRAISEERROR(4008,16,10)3、设有学生表 S(SNO,SN) (SNO 为学生号,SN 为姓名)和学生选修课程表SC(SNO,CNO,CN,G) (CNO 为课程号,CN 为课程名,G 为成绩) ,试用 SQL 语言

    12、完成以下各题: (1)建立一个视图 V_SSC(SNO,SN,CNO,CN,G),并按 CNO 升序排序;(2)从视图 V_SSC 上查询平均成线在 90 分以上的 SN、CN 和 G。答:(1)CREATE VIEW V_SSC(SNO,SN,CNO,CN,G)AS SELECT S.SNO,S.SN,CNO,SC.CN,SC.GFROM S,SCWHERE S.SNO=SC.SNOORDER BY CNO(2) SELECT SN,CN,GFROM V_SSCGROUP BY SNOHAVING AVG(G)904、图书管理数据库 BookManager 由以下四个关系模式组成,根据该结构

    13、用 T-SQL 完成以下各题。(1)读者(借书证号,姓名,性别,出生日期)(2)图书(ISBN,图书名称,作者,出版社,价格,数量)(3)借阅(借书证号,ISBN,借出时间)根据要求完成下列各题。(1)创建一个名称为 BookManager 的数据库,其初始大小为 10MB,最大为 20MB,允许数据库自动增长;日志文件初始大小为 2MB,最大为 5MB。文件存储在目录 D:TEST 下。(2)编写一个存储过程,查询某读者当前的借书情况。(3)创建一个触发器,如果在图书表中添加或更改数据,则向客户端显示一条信息。解:(1)CREATE DATABASE BookManagerON( NAME=

    14、BookManager_DATA,FILENAME=D:TESTBookManager.MDF,SIZE=10MB,MAXSIZE=20MB,字段名 类型与宽度是否主码是否允许空值借书证号 Char(8) 是 NOT NULL姓名 Char(8) NOT NULL专业名 Char(12) NOT NULL性别 Char(2) NOT NULL出生日期 Datetime NOT NULL借书量 Integer NOT NULL照片 Image NOT NULL字段名 类型与宽度是否主码是否允许空值ISBN Char(16) 是 NOT NULL书名 Char(26) NOT NULL作者 Cha

    15、r(8) NOT NULL出版社 Char(20) NOT NULL价格 Float NOT NULL副本量 Integer NOT NULL库存量 Integer NOT NULL字段名 类型与宽度是否主码是否允许空值借书证号 Char(8) NOT NULLISBN Char(16) NOT NULL索书号 Char(10) 是 NOT NULL借书时间 Datetime 是 NOT NULL还书时间 Datetime NOT NULL字段名 类型与宽度是否主码是否允许空值借书证号 Char(8) NOT NULLISBN Char(16) NOT NULL索书号 Char(10) 是 N

    16、OT NULL借书时间 Datetime NOT NULL表 4.1 读者表(表名为 XS) 表 4.2 图书表(表名为 BOOK)表 4.3 借阅表(表名为 JY)表 4.4 借阅历史表(表名为 JYLS)FILEGROWTH=10%)LOG ON(FILENAME=D:TESTBookManager.LDF,SIZE=2MB,MAXSIZE=5MB,FILEGROWTH=10%)(2)CREATE PROCEDURE proc_reader lib_num char(8)ASSELECT A.借书证号,姓名,B.ISBN,书名FROM Reader A, JY B , BOOK CWHER

    17、E A. 借书证号 =B. 借书证号 AND B.ISBN=C.ISBN AND A. 借书证号= lib_num(3)CREATE TRIGGER trig_reminder ON ReaderFOR INSERT ,UPDATEASRAISEERROR(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-SQ

    18、L 语句完成下列各题。(1)查询购买了商品的客户号及姓名。(2)查询 1978 年出生的客户号及姓名。(3)购买了三种以上商品的客户号及客户姓名。答:(1)select CNO,Cnamefrom table_Clientwhere CNO in(select distinct CNOfrom table_CG)(2)select CNO,Cnamefrom table_Clientwhere Cbirthday=1978(3)select CNO,Cnamefrom table_Clientwhere CNO in(select CNOfrom table_CGgroup by CNOhav

    19、ing count(*)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) 解:create table student(sno nvarchar(8),sname nvarchar(10)

    20、,sage int,ssex char(4),saddress nvarchar(50),primary key(sno)(2)create trigger course_insert_tno on coursefor insertas if(not exists(select tno from teacher where tno in (select inserted.tno from inserted)beginprint 无此教师rollback transactionend1、设学生课程数据库中有三个关系:学生关系 S( S#,SNAME,AGE,SEX)学习关系 SC(S# ,C#

    21、,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)SELECT SNAME,AGEFROM S,SC,CWH

    22、ERE S.S#=SC.S#AND C.C#=SC.C#AND CNAME= MATHS(2) SELECT S#FROM SCWHERE CNO=C1 AND S# IN( SELECT S#FROM SCWHERE CNO=C2)(3)SELECT S#,SNAME,AGEFROM SWHERE AGE BETWEEN 18 AND 20(4) SELECT S# ,AVG(GRADE) 平均成绩FROM SCGROUP BY S#HAVING AVG(GRADE)80(5) SELECT SNAMEFROM SWHERE NOT EXISTS(SELECT *FROM CWHERE NO

    23、T EXISTS(SELECT *FROM SCWHERE S#=S.S# AND C#=C.C#) (6) SELECT SNAMEFROM S,SCWHERE S.S#=SC.S#GROUP BY SNAMEHAVING COUNT(*)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 分别表示学号、姓名、

    24、性别、年龄、所在系名、课程号、课程名、学分和成绩。试用 SQL 语言完成下列项操作:(1)查询选修课程包括“1042”号学生所学的课程的学生学号(2)创建一个计科系学生信息视图 S_CS_VIEW,包括 Sno 学号、Sname 姓名、Sex 性别;(3)通过上面第 2 题创建的视图修改数据,把王平的名字改为王慧平(4)创建一选修数据库课程信息的视图,视图名称为 datascore_view,包含学号、姓名、成绩。答案:(1) SELECT DISTINCT SNOFROM SC SCXWHERE NOT EXISTS(SELECT *FROM SC SCYWHERE SCY.SNO = 10

    25、42 ANDNOT EXISTS(SELECT *FROM SC SCZWHERE SCZ.SNO=SCX.SNO ANDSCZ.CNO=SCY.CNO);(2) CREATE VIEW S_CS_VIEW ASSELECT SNO,SNAME,SEXFROM STUDENTWHERE Sdept=CS(3)UPDATE S_CS_VIEWSET SNAME= 王慧平WHERE SNAME= 王平(4) CREATE VIEW datascore_viewASSELECT SNO 学号、SNAME 姓名、GRADE 成绩FROM STUDENT,SC,COURSEWHERE STUDENT.SNO=SC.SNOAND COURSE.CNO=SC.CNOAND CNAME= 数据库

    展开阅读全文
    提示  道客多多所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:数据库期末考试编程题.doc
    链接地址:https://www.docduoduo.com/p-11100729.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    道客多多用户QQ群:832276834  微博官方号:道客多多官方   知乎号:道客多多

    Copyright© 2025 道客多多 docduoduo.com 网站版权所有世界地图

    经营许可证编号:粤ICP备2021046453号    营业执照商标

    1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png



    收起
    展开