《数据库原理及应用》期终复习卷.doc
数据库原理及应用期终复习卷一、单选题题号123456789101112131415答案BBADDBADDDABBAD1.一个数据库系统必须包括( B )A、主数据文件、辅数据文件B、主数据文件、日志文件C、日志文件、辅数据文件D、主数据文件、可执行文件2一个数据库系统必须包括( B )A、主数据文件、辅数据文件B、主数据文件、日志文件C、日志文件、辅数据文件D、主数据文件、可执行文件3.在SQL SERVER 2005中连接数据库服务器时有两种连接认证方式,其中在( B )方式下,需要客户端应用程序连接时提供登录时需要的用户标识和密码。A、Windows身份验证B、SQLServer身份验证C、以超级用户身份登录时D、其他方式登录时4.以( C )不是SQL Sever的系统数据库。A、masterB、modelC、sqltemplD、tempdb5.让查询语句排序从大到小的关键字是:( A )A、DESCB、UPC、ASCD、DOWN6.让查询语句排序从大到小的关键字是:( A )A、DESCB、UPC、ASCD、DOWN7.获得系统日期的函数是:( D )A、DAY()B、MONTH()C、YEAR()D、GETDATE()8.获得系统日期的函数是:( D )A、DAY()B、MONTH()C、YEAR()D、GETDATE()9.屏蔽重复行的关键字是:( D )A、ALLB、REPEATC、NOREPEATD、DISTINCT10. 语句“USE master GO SELECT * FROM goods GO”包括( B )个批处理。A、1 B、2 C、3 D、411.下列说法中正确的是:( D )A、SQL 中局部变量可以不声明就使用B、SQL 中全局变量必须先声明再使用C、SQL 中所有变量都必须先声明后使用D、SQL 中只有局部变量先声明后使用;全局变量是由系统提供的用户不能自己建立。12.屏蔽重复行的关键字是:( D )A、ALLB、REPEATC、NOREPEATD、DISTINCT13. 语句“USE master GO SELECT * FROM goods GO”包括( B )个批处理。A、1 B、2 C、3 D、414.在SQL Server2005中,用来显示数据库信息的系统存储过程是( A )A、sp_helpdbB、sp_dbC、sp_helpD、sp_dbhelp15.SQL Server2005中提供的单行注释语句是使用( B )开始的一行内容。A、“/*” B、“-” C、“” D、“/”16.在SQL SERVER中局部变量前面的字符为:( D )A、* B、# C、 D、17.下面聚焦函数中( D )只能用于计算数值类型的数据。A、COUNTB、MIN()C、MAX()D、SUM()18. 在WHILE循环语句中,如果循环体语句条数多于一条,必须使用:( B )A、CASEENDB、BEGINENDC、IFTHEND、GOTO19.声明游标的方法是:( A )A、DECLARE CURSORB、CREATE CURSORC、SET CURSORD、ALTER CURSOR20.以下( D )关键字用来定义记录在某属性上的约束条件。A、defaultB、distinctC、uniqureD、check21.在SQL Server2005中,权限分为三类,下列哪一项不属于三类权限中的一项( D )A、对象权限 B、语句权限 C、数据库权限 D、隐含权限22.( D )不是逻辑运算符。A、NOTB、ANDC、ORD、IN23.在SQL Server2005中,用来显示数据库信息的系统存储过程是( A )A、sp_helpdbB、sp_dbC、sp_helpD、sp_dbhelp24在创建表的过程中,( A )关键字用来定义默认值。A、DEFAULTB、UNIQUEC、CHECKD、DISTINCT25.创建存储过程,可以使用语句( B )A、CREATE DATABASEB、CREATE PROCEDUREC、CREATE DEFAULTD、CREATE RULE26.下面聚焦函数中( D )只能用于计算数值类型的数据。A、COUNTB、MIN()C、MAX()D、SUM()27.以下( D )关键字用来定义记录在某属性上的约束条件。A、defaultB、distinctC、uniqureD、check28.在程序中,下列哪个语句表示换行。( B )A、PRINT “”B、PRINT C、PRINT enter D、PRINT “enter”29.声明游标的方法是:( A )A、DECLARE CURSORB、CREATE CURSORC、SET CURSORD、ALTER CURSOR30.在SQL Server2005中,权限分为三类,下列哪一项不属于三类权限中的一项( D )A、对象权限 B、语句权限 C、数据库权限 D、隐含权限二、填空题 1数据模型通常由三部分组成即: 。2.ER图的三个要素分别为 。3.关系的完整性包括 。4.SQL Server 2005有5个系统数据库,它们分别是 和resource。5.在SQL Server 2005中存储过程可分为3类,即 扩展存储过程。6.创建带参数的存储过程时,参数可以是一个,也可以是多个,有多个参数时,参数之间用 分开。7.SQL Server为每个触发器创建了两个临时表,表名分别是 和 。8.为了实现安全性,每个网络用户在访问 SQL server 数据库之前,都必须经过两个阶段的检验: 。9.在概念模型中,实体之间的联系有 。10.ER图的三个要素分别为 。11.关系的完整性包括 。12.SQL Server 2005有5个系统数据库,它们分别是 和resource。13.在SQL Server 2005中存储过程可分为3类,即 。14. 在SQL Server 2005中,根据引起触发器激活的时机,DML触发器可分为两种,即 。15. SQL Server 2005有两种认证模式, 。16.为了实现安全性,每个网络用户在访问 SQL server 数据库之前,都必须经过两个阶段的检验: 和 。1数据结构、数据操纵、数据的完整性约束2.实体、属性、实体之间的联系3.实体完整性、参照完整性和用户自定义完整性4.master、model、msdb、tempdb5.用户自定义存储过程、系统存储过程、6.逗号7.inserted,deleted 8.身份验证和权限验证1.一对一、一对多、多对多2.实体、属性、实体之间的联系3.实体完整性、参照完整性和用户自定义完整性4.master、model、msdb、tempdb5.用户自定义存储过程、系统存储过程、扩展存储过程6.After触发器和Instead of 触发器7.Windows认证模式和 SQL Server认证模式8.身份验证,权限验证三、判断题1SQL Server2005是一个大型的关系数据库系统。( )2建立索引的目的是希望提高数据检索的速度。( )3一张表允许有多个主键,但只能有一个外键。( )4要删除某个表中的一条记录可使用DROP命令。( )5在模糊查询中可以使用like运算符结合通配符一起实现,其中%代表所在位置的0或多个字符。( )6在SQL Server 2005的查询语句中,若要把记录进行降序排列应使用order by字段名 DESC。( )7在SQL Server 2005中,在创建一个表的过程中,如果某一字段的数据类型为datetime类型,一定需要为其指定长度。( )8外键所引用的列必须是设置了主键约束或惟一约束的列。( )9数据库的还原是指将数据库备份加载到服务器中去。( )10注释是程序代码中不能执行的文本字符串。( )11SQL Server2005是一个大型的关系数据库系统。( )12建立索引的目的是希望提高数据检索的速度。( )13一张表允许有多个主键,但只能有一个外键。( )14要删除某个表中的一条记录可使用DROP命令。( )15在模糊查询中可以使用like运算符结合通配符一起实现,其中%代表所在位置的0或多个字符。( )16在SQL Server 2005的查询语句中,若要把记录进行降序排列应使用order by字段名 DESC。( )17日期时间数据类型有date和smalldate两种。( )18外键所引用的列必须是设置了主键约束或惟一约束的列。( )19数据库的还原是指将数据库备份加载到服务器中去。( )20注释是程序代码中不能执行的文本字符串。( )四、1. 在“学籍数据库”中有一个表“学生表”,按下列要求写出相应的SQL命令。(每题3分共18分) 表1 学生表结构字段名类型允许空否说明SnoChar(10)No学号SnamevarChar(10)No姓名SsexChar(2)No性别SageSmallintYes年龄SdeptvarChar(20)Yes所在院系SclassvarChar(20)Yes班级(1)在“学生表”中插入一条记录,记录内容要求为:学号:020688姓名:张军所在院系:信息工程系其余字段均为nullInsert into 学生表(Sno,Sname,Sdept) values(020688,张军,信息工程系)(2)查询“学生表”中年龄在19岁以下的学生的姓名、年龄及班级;Select Sname,Sage,Sclass from 学生表 where Sage<19(3)删除“学生表”中所有名字中第二个字为“芬”的学生记录;Delete from 学生表 where Sname like _芬%(4)查询“学生表”中各系的人数,并显示所在院系及人数;Select Sdept,count(姓名) as 人数 from 学生表 group by sdept(5)将“学生表”中姓名为“肖玉”学生名字改为“肖玉珠”。Update 学生表 set Sname=肖玉 where Sname=肖玉珠(6)删除“学生表”中所有所在院系为空的学生记录;Delete from 学生表 where Sdept is null2. 在“学籍数据库”中有一个表“学生表”,按下列要求写出相应的SQL命令。 (每题3分共15分)学生表结构字段名类型允许空否说明SnoChar(10)No学号SnamevarChar(10)No姓名SsexChar(2)No性别SageSmallintYes年龄SdeptvarChar(20)Yes所在院系SclassvarChar(20)Yes班级(1)查询“学生表”中学号以“09”开头的学生记录;Select * from 学生表 where Sno like 09%(2)查询“学生表”中所有“信息工程系”的学生的姓名、所在院系和班级;Select Sname,Sdept,Sclass from 学生表 where Sdept=信息工程系(3)删除“学生表”中所有名字中第二个字为“芬”的学生记录;Delete from 学生表 where Sname like _芬%(4)查询“学生表”中各系的人数,并显示所在院系及人数;Select Sdept,count(姓名) as 人数 from 学生表 group by sdept(5)将“学生表”中所有学生的入学年份均改为“2012-09-01”;Update 学生表 set Syear=2012-09-01五、简答题1.写出相应的语句:声明一个局部变量name,其类型为char(6),声明一个局部变量birthday,其类型为datetime,声明一个局部变量salary,其类型为money,分别设置值为李丽丽、20111212、1890.00(6分)DECLARE name char(6) DECLARE birthday datetimeDECLARE salary moneySet name=李丽丽Set birthday= 20111212Set salary=1890.002.创建一个带参数的存储过程search_dept,要求该存储过程带一个输入参数,用于接收学生的所在院系,执行后显示学生的姓名、性别、所在院系及班级;(4分) Create proc search_dept dept char(20)AsSelect Sname,Ssex,Sdept,Sclass from 学生表 where Sdept=dept3.写出调用search_dept存储过程的方法,以显示“机械系”的所有学生。(2分)EXEC search_dept 机械系4.写出相应的语句:声明一个局部变量name,其类型为char(6),声明一个局部变量birthday,其类型为datetime,声明一个局部变量salary,其类型为money,分别设置值为李丽丽、20111212、1890.00。(6分)DECLARE name char(6)DECLARE birthday datetimeDECLARE salary moneySet name=李丽丽Set birthday= 20111212Set salary=1890.005.写出调用search_dept存储过程的方法 EXEC search_dept 六、1. 在数据库gzgl中有部门代码表(bmdm,bmmc)和工资表(bh,xm,bmdm,Month_Salary ,sfgz),在数据库gzgl中有部门代码表(bmdm,bmmc)和工资表(bh,xm,bmdm,Month_Salary ,sfgz),表结构分别如表2、表3,写出创建两表的SQL命令, “部门代码表”的主键为bmdm,“工资表”表的主键为bh和month_salary;(10分)表2 部门代码表字段名类型为空否说明Bmdmchar(3)Not null部门代码Bmmcvarchar(10)Not null部门名称表3 工资表Bhchar(7)Not null编号Xmnvarchar(10)Not null姓名Bmdmchar(3)Not null部门代码Month_SalarysmalldatetimeNull工资发放日期Sfgzmoneynull实发工资请按如下要求完成:bmdmbmmcbhxmbmdmsfgzA01行政科A0101张军A011800A02人事科A0109王丽A011890B01生产科B0102刘萍B011900B02财务科B0208张爱萍B021820表结构分别如表2、表3,写出创建两表的SQL命令, “部门代码表”的主键为bmdm,“工资表”表的主键为bh和month_salary;请按如下要求完成:Use glgzGoCreate table 部门代码表(Bmdm char(3) not null primary key,Dmmc varchar(20) not null)Create table 工资表(Bh char(7) not null,Xm varchar(10) not null,Bmdm char(3) not null,Sfgz money,Primary key (bh,month_salry)2. 要求:在gzb中创建一个名为 insert_bm的insert触发器,存储在gzb中,当向gzb插入记录时,如果插入了“dmb”表中没有的系部,则表示不能插入,否则提示记录插入成功。(10分)表2 部门代码表结构字段名类型为空否说明Bmdmchar(3)Not null,主键部门代码Bmmcvarchar(10)Not null部门名称表3 工资表结构Bhchar(7)Not null编号Xmnvarchar(10)Not null姓名Bmdmchar(3)Not null部门代码Month_SalarysmalldatetimeNot null工资发放日期SfgzmoneyNull实发工资主键为bh+ Month_Salary在数据库gzgl中有部门代码表(bmdm,bmmc)和工资表(bh,xm,bmdm,Month_Salary ,sfgz),表结构分别如表2、表3。要求:在gzb中创建一个名为 insert_bm的insert触发器,存储在gzb中,当向gzb插入记录时,如果插入了“dmb”表中没有的系部,则表示不能插入,否则提示记录插入成功。(10分)Use gzglGoIf exists(select name from sysobjects where name=insert_bm and type=TR)Drop trigger insert_bmGoCreate trigger insert_bm on dbo.gzb For insertAsDeclare deptno char(3)Select deptno=dmb.bmdmFrom dmb,insertedWhere dmb.bmdm=inserted.dmbmIf deptno<>Print(记录插入成功!)ElseBeginPrint(系部代码不存在系部表中,不能插入记录,插入将中止!)endgoSQL Server2000