SQL数据库管理及开发试题(N卷)

  • 格式:doc
  • 大小:43.00 KB
  • 文档页数:5

《SQL数据库管理与开发教程与实训》试题(N卷)一、单项选择题:(每小题1分,共10分)1.触发器可以创建在( )中。

A. 表B. 过程C. 数据库D. 函数2.删除表的语句是( )。

A.DROPB.ALTERC.UPDATED.DELETE3. 以下触发器是当对[表1]进行( )操作时触发。

Create Trigger abc on 表1For insert , update , deleteAs ……A.只是修改B.只是插入C.只是删除D.修改、插入、删除4. 规则对象在使用上与( )约束类似。

A.CHECKB.PRIMARY KEYC.FOREIGN KEYD.UNIQU5.主索引可确保字段中输入值的( )性。

A.多样B.重复C.唯一D.若干6.关于视图下列哪一个说法是错误的( )。

A.视图是一种虚拟表B.视图中也保存有数据C.视图也可由视图派生出来D.视图是保存在SELECT查询7.执行带参数的过程,正确的方法为( )。

A. 过程名参数B. 过程名(参数)C.过程名=参数D.A,B,C三种都可以8.查询毕业学校名称与“清华”有关的记录应该用( )。

A. SELECT * FROM 学习经历 WHERE 毕业学校 LIKE ’*清华*’B. SELECT * FROM 学习经历 WHERE 毕业学校 = ’%清华%’C. SELECT * FROM 学习经历 WHERE 毕业学校 LIKE ’?清华?’D. SELECT * FROM 学习经历 WHERE 毕业学校 LIKE ’%清华%’9. Select 职工号FROM 职工WHERE 工资>1250 命令的功能是( )。

A.查询工资大于1250的纪录B.查询1250号记录后的记录C.检索所有的职工号D.从[职工]关系中检索工资大于1250的职工号10. 关于关系图下列哪一个是正确的( )。

A.关系图是在同一个表中不同字段之间建立关联B.关系图是表与表之间建立关联,与字段无关C.关系图是在不同表中的字段之间建立关联D.关系图是在不同数据库之间建立关联二、判断题:(每小题1分,共10分)1.ODBC是由Microsoft定义的一种数据库访问标准。

( )2.信息和数据是相对的,有时是可以互相转换的。

( )3.创建存储过程必须在企业管理器中进行。

( )4.触发器主要是通过表操作事件进行触发而被执行的。

( )5.主键字段允许为空。

( )6.SQL Server 自动为primary key约束的列建立一个索引。

( )7.SQL Server的数据库可以转换成Access数据库。

( )8.删除表时,表中的触发器被同时删除。

( )9.数据库的名称一旦建立就不能重命名。

( )10.固定数据库角色:db_datarader 的成员可修改本数据库内表中的数据。

( )三、填空题:(每题1分,共计20分)1.IBM公司的研究人员E.F.Codd连续发表了论文,提出了关系模型,奠定了________管理系统的基础。

2.数据库的数据模型包含_________、_______和_________三个要素。

3._________可用于实现参数化视图的功能,这种类型的函数在使用参数和扩展索引视图方面提供了比_________更多的灵活性。

4._________是已经存储在SQL Server服务器中的一组预编译过的Transact-SQL语句。

5.SQL Server 数据库的体系结构也是三级模式结构,但术语与传统的关系模式不同,在SQL Server 中,_________对应于视图、_______对应于基本表、________对应于存储文件。

6.SQL Server的数据库文件的扩展名为_____、事务日志文件的扩展名为_______。

7.建立和使用________的目的是为了保证数据的完整性。

8.BACKUP命令是对数据库进行__________, RESTORE命令是对数据库进行__________。

9.从最终用户角度来看,数据库应用系统分为单用户结构、主从式结构、分布式结构、____________结构和____________结构。

10.对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的_________。

11.SQL Server 2000的安全性分为两类:_______安全性和_______安全性。

四、简述题(每小题5分,共20分)1.什么是数据库管理系统?它的主要功能是什么?2.什么是数据完整性?完整性有哪些类型?3.4.存储过程与触发器有什么不同?五、阅读下列程序,说明它们的功能。

(每题4分,共20分)1.use 成绩数据库If exists ( select name from sysobjectsWhere name=’student_inf’ and type=’p’)Drop procedure student_infGoCreate procedure student_info asSelect 学号, 姓名, 总学分 from xsqk2.use 成绩数据库CREATE TRIGGER abc ON [dbo].[XSCJ]FOR UPDATEASif update(成绩)update xscjset xscj.学分=(select 学分 from xskc where deleted.课程号=xskc.课程号)from xscj,xskc,deletedwhere xscj.成绩>=60 and deleted.学号=xscj.学号 and deleted.课程号=xscj.课程号3.use 教学成绩管理数据库goalter table 学生信息表add email varchar(20) null,学历 text,照片 image4.use 教学成绩管理数据库select 姓名, 性别, 年龄=datediff(year,出生日期,getdate())from 学生信息表where (datediff(year,出生日期,getdate())=20) and (性别='女') 5.use 教学成绩管理数据库select 教学成绩表.学号,姓名,sum(分数) 总分,avg(分数) 均分from 学生信息表 join 教学成绩表on 学生信息表.学号 = 教学成绩表.学号group by 教学成绩表.学号,姓名order by avg(分数) desc六、设计题(每小题4分,共20分)现有关系数据库如下:数据库名:学生成绩数据库学生表(班级编号,学号,姓名,性别,民族,身份证号,出生日期)课程表(课程号,课程名,开课学期,学时)成绩表(ID,学号,课程号,分数)用SQL语言实现下列功能的sql语句代码:1.查询学生信息表中的年龄(重复年龄只显示一次)2.从学生信息表和教学成绩表中查询查询学生的学号、姓名、课程名和分数3.从课程表中统计第二学期的总学时。

执行结果为:课程好课程名开课学期学时……………………sum============…4.编写一个存储过程,输入学号,从“教学成绩表视图”显示该学生的姓名、课程名、分数。

5.创建一个触发器,当修改学生表中的姓名时,显示“学生姓名已被修改”。

SQL Server数据库答案N1、关系数据库2、数据结构、数据操作、完整性约束3、内嵌表值函数、视图4、存储过程5、外模式、模式、内模式6、mdf、ldf7、约束8、备份、恢复9、客户/服务器、浏览器/服务器10、基本表11、数据访问、数据运行四、简述题(每小题5分,共10分)1.什么是数据库管理系统?它的主要功能是什么?DBMS是位于用户与操作系统之间的一层数据管理软件,它属于系统软件,它为用户或应用程序提供访问数据库的方法。

包括数据库的建立、查询、更新及各种数据控制。

2.什么是数据完整性?完整性有哪些类型?数据完整性用于保证数据库中数据的正确性、一致性和可靠性。

数据完整性有四种类型:实体完整性、域完整性、引用完整性、用户定义完整性3.自定义内嵌表值函数与视图的使用有什么不同?答:内嵌标值函数可用于实现参数化视图的功能。

这种类型的函数在使用参数和扩展索引视图方面提供了比视图更多的灵活性。

4.存储过程与触发器有什么不同?答:触发器是特殊类型的存储过程,它能在任何试图改变表中由触发器保护的数据时执行。

触发器主要通过事件进行触发而被执行,触发器不能直接调用执行,也不能被传送和接受参数,而存储过程可以通过存储过程名被直接调用。

触发器与表有关,存储过程与表无关。

五、阅读下列程序,说明它们的功能。

(每小题4分,20分)1.如果“Syudent_info”存储过程存在,则删除。

创建存储过“Syudent_info”2.创建触发器“abc”,当修改XSCJ表中的纪录时,成绩>60分,则根据XSKC表中的该门课程的学分修改XSCJ表中该记录的学分。

3.在学生信息表中增加email、学历、照片列。

4.查询年龄为20岁、性别为‘女’的学生5.查询每个学生的学号、姓名、总分和均分,结果按均分降序排列六、设计题(每小题4分,共20分)1.查询学生信息表中的年龄(重复年龄只显示一次)use 教学成绩管理数据库select distinct 年龄=datediff(year,出生日期,getdate())from 学生信息表2.从学生信息表和教学成绩表中查询查询学生的学号、姓名、课程名和分数use 学生成绩数据库select 成绩表.学号,姓名,课程名,分数from 教学成绩表,学生信息表where成绩表.学号 = 学生表.学号 AND 成绩表.课程号=课程表.课程号3.从课程表中统计第二学期的总学时。

Select课程号, 课程名, 开课学期, 学时From 课程表Where开课学期=2compute avg(学时)4.编写一个存储过程,输入学号,从“教学成绩表视图”显示该学生的姓名、课程名、分数。

CREATE PROCEDURE 成绩1 @xh char (6)asselect 姓名,课程名称,分数 from 教学成绩表视图where 学号=@xh5.创建一个触发器,当修改学生表中的姓名时,显示“学生姓名已被修改”。

Create Trigger 触发器7 On 学生表For updataAsPrint “学生姓名已被修改”Go。