当前位置:文档之家› 数据库应用考试题目答案

数据库应用考试题目答案

数据库应用考试题目答案集团标准化工作小组 [Q8QX9QT-X8QQB8Q8-NQ8QJ8-M8QMN]1.在安装SQL Server 2000时,“仅客户端工具”、“服务器和客户端工具”及“仅连接”等安装定义有什么差别答:仅客户端工具: 仅安装客户端关系数据库管理工具。

此选项包含管理 SQLServer 的客户端工具和客户端连接组件。

服务器和客户端工具: 执行安装服务器和客户端工具以创建具有管理能力的关系数据库服务器。

仅连接: 仅安装关系数据库客户端连接组件,包括连接 SQL Server 2000命名实例所需的 MDAC (Microsoft 数据访问组件)。

该选项只提供连接工具,不提供客户端工具或其它组件。

2.一个数据库中包含哪几种文件答:主数据库文件:用来存储数据库的启动信息以及部分或者全部数据,是所有数据库文件的起点,包含指向其它数据库文件的指针。

一个数据库只能有一个主数据库文件。

辅助数据库文件:用于存储主数据库文件中未存储的剩余数据和数据库对象,一个数据库可以没有辅助数据库文件,但也可以同时拥有多个辅助数据库文件事务日志文件:一个存储数据库的更新情况等事务日志信息,当数据库损坏时,管理员使用事务日志恢复数据库;每一个数据库至少必须拥有一个事务日志文件,而且允许拥有多个日志文件。

3.事务文件和数据文件分开存放有什么好处答:因为利用事务日志备份可以将数据库恢复到特定的即时点(如输入不想要的数据之前的那一点)或故障发生点。

在媒体恢复策略中应考虑利用事务日志备份。

4.什么是批处理使用批处理有何限制答:包含一个或多个T-SQL语句的组,从应用程序将一次性发送到SQL Server执行,SQL Server批处理语句作为整体编译成一个可执行单元。

限制:如不能够在同一个批处理中更改表,然后引用新列。

如在一个批处理程序中,有两条语句。

第一条语句用来在一张表中插入一个字段,如在User表中插入员工的出生年月;第二条语句则用来引用这个列,如根据身份证号码来推算出这个员工的出身年月并把这个值赋值给这个第一条语句创建的出身年月字段。

5.数据检索时,COMPUTE和COMPUTE BY产生的结果有何不同答:当 COMPUTE 带 BY 子句时,符合 SELECT 条件的每个组都有两个结果集:每个组的第一个结果集是明细行集,其中包含该组的选择列表信息。

每个组的第二个结果集有一行,其中包含该组的 COMPUTE 子句中所指定的聚合函数的小计。

当 COMPUTE 不带 BY 子句时,SELECT 语句有两个结果集:每个组的第一个结果集是包含选择列表信息的所有明细行。

第二个结果集有一行,其中包含 COMPUTE 子句中所指定的聚合函数的合计。

6.什么是索引索引分为哪两种各有什么特点答:数据库中的索引与书籍中的目录类似。

在一本书中,利用目录可以快速查找所需信息,无须阅读整本书。

在数据库中,索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需数据。

聚集索引和非聚集索引。

聚集索引的特点:行的物理位置和行在索引中的位置是相同的,每个表只能有一个聚集索引,聚集索引的平均大小大约为表大小的5%左右。

非聚集索引特点:若未指定索引类型,则默认为非聚集索引,叶节点页的次序和表的物理存储次序不同,每个表最多可以有249个非聚集索引,在非聚集索引创建之前创建聚集索引。

7.创建索引有什么优点和缺点答:优点:索引在数据库中的作用类似于目录在书籍中的作用,用来提高查找信息的速度。

使用索引查找数据,无需对整表进行扫描,可以快速找到所需数据。

缺点:索引需要占用数据表以外的物理存储空间。

创建索引和维护索引要花费一定的时间。

当对表进行更新操作时,索引需要被重建,这样降低了数据的维护速度。

8.什么是视图使用视图的优点和缺点是什么答:视图是一个虚拟表,其内容由查询定义。

同真实的表一样,视图包含一系列带有名称的列和行数据。

但是,视图并不在数据库中以存储的数据值集形式存在。

行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。

优点:隐蔽数据库的复杂性;控制用户提取数据;简化数据库用户管理;简化查询缺点:性能:SQL Server必须把视图的查询转化成对基本表的查询,如果这个视图是由,一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,SQL Server也,把它变成一个复杂的结合体,需要花费一定的时间。

修改限制:当用户试图修改视图的某些行时,SQL Server必须把它转化为对基本,表的某些行的修改。

对于简单视图来说,这是很方便的,但是,对于比较复杂的,视图,可能是不可修改的。

9. 修改视图中的数据会受到哪些限制答:必须对视图的操作权限有权限对视图上的某些列不能修改,这些列是:计算列,内置函数列和行集合函数列删除基表并不删除视图,建议采用与表明显不同的名字命名规则对由多表连接成的视图修改数据时,不能同时影响一个以上的基表,也不能删除视图中的数据如果某些列因为规则或者约束的限制不能接受从视图插入的数据时,则插入数据可能会失败对具有NOT NULL 的列进行修改时可能会出错。

通过视图修改或者插入数据时,必须保证未显示的具有NOT NULL 属性的列有值,可以是默认值,IDENTITY 等,否则不能像视图中插入数据行。

10. 什么是数据完整性如果数据库不实施数据完整性会产生什么结果答:指的是数据库中存储的数据的一致性和准确性;包括了实体完整性、域完整性、参照完整性、用户定义的完整性。

能够防止数据库中存在不符合语义规定的数据,并且可以防止因错误信息的输入输出造成无效操作或错误信息。

后果:无法保证数据库数据的一致性和准确性;容易造成数据库中存在不符合规定的数据或者错误信息11.数据完整性有哪几类如何实施答:数据完整性分为四类:实体完整性、域完整性、参照完整性、用户定义的完整性。

数据库采用多种方法来保证数据完整性,包括外键、束约、规则和触发器。

系统很好地处理了这四者的关系,并针对不同的具体情况用不同的方法进行,相互交叉使用,相补缺点。

12. 什么是主键约束什么是惟一约束两者有什么区别答:主键约束:有一列或列的组合,其值能唯一的标识表中的每一行。

唯一约束:不允许数据库表在指定列上具有相同的值,但允许有空值。

区别:一个表可以定义多个唯一约束,只能定义一个主键约束;空值得列上可以定义唯一约束,不能定义主键约束。

13.什么是外键,怎样建立外键约束答:外键是用于建立和加强两个表数据之间的链接的一列或多列。

通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。

这个列就成为第二个表的外键。

14.什么是存储过程使用存储过程有什么好处答:定义:存储过程指的是存储在服务器上的 Transact-SQL 语句的命名集合,是封装重复性任务的方法,支持用户声明变量、条件执行以及其他强有力的编程特性。

好处:存储过程封装了商务逻辑,确保一致的数据访问和修改。

若规则或策略有变化,则只需要修改服务器上的存储过程,所有的客户端就可以直接使用屏蔽数据库模式的详细资料。

用户不需要访问底层的数据库和数据库内的对象提供了安全性机制。

用户可以被赋予执行存储过程的权限,而不必在存储过程引用的所有对象上都有权限改善性能。

预编译的 Transact-SQL 语句,可以根据条件决定执行哪一部分减少网络通信量。

客户端用一条语句调用存储过程,就可以完成可能需要大量语句才能完成的任务,这样减少了客户端和服务器之间的请求/回答包15.什么是触发器触发器分有什么作用答:触发器是一类特殊的存储过程,不能被直接调用,也不传递或接受参数作用:维护不可能在表创建时刻通过声明性约束进行的复杂的完整性约束限制。

通过记录所进行的修改以及谁进行了修改来审计表中的信息。

当表被修改的时候,自动给其他需要执行操作的程序发信号。

程序设计题假设在factory数据库中已创建了如下3个表,(1)职工表worker,其结构为:职工号:int,姓名:char(8),性别:char(2),出生日期:datetime,党员否:bit,参加工作:datetime,部门号:int。

(2)部门表depart,其结构为:部门号:int,部门名:char(10)。

(3)职工工资表salary,其结构为:职工号:int,姓名:char(8),日期:datetime,工资:decimal(6,1)。

1.使用Transact-SQL语句完成如下各题:(1).显示所有职工的年龄。

(2).求出各部门的党员人数。

(3).显示所有职工的姓名和2004年1月份工资数。

(4).显示所有职工的职工号、姓名和平均工资。

(5).显示所有职工的职工号、姓名、部门名和2004年2月份工资,并按部门名顺序排列。

(6).显示各部门名和该部门的所有职工平均工资。

(7).显示所有平均工资高于1200的部门名和对应的平均工资。

(8).显示所有职工的职工号、姓名和部门类型,其中财务处和人事处属管理部门,市场部属市场部门。

答案:(1).SELECT 姓名,YEAR(GETDATE())-YEAR(出生日期) AS ‘年龄’ FROM worker(2). SELECT depart.部门名,count(*) AS ‘党员人数’FROM worker,departWHERE worker.党员否=1 AND worker.部门号=depart.部门号GROUP BY depart.部门名(3).SELECT worker.姓名,salary.工资FROM worker,salaryWHERE worker.职工号= salary.职工号 AND YEAR(salary.日期)=2004 AND MONTH(salary.日期)=1(4). SELECT 职工号,,AVG(工资) AS ‘平均工资’FROM salaryGROUP BY 职工号(5). SELECT worker.职工号,worker.姓名, depart.部门名, salary.工资 AS ‘2004年2月工资’FROM worker,depart,salaryWHERE worker.部门号=depart.部门号 AND worker.职工号= salary.职工号 AND YEAR(salary.日期)=2004 AND MONTH(salary.日期)=2ORDER BY worker.部门号(6).SELECT depart.部门名, AVG(salary.工资) AS ‘平均工资’FROM worker,depart,salaryWHERE worker.部门号=depart.部门号 AND worker.职工号= salary.职工号GROUP BY depart.部门名(7).SELECT depart.部门名, AVG(salary.工资) AS ‘平均工资’FROM worker,depart,salaryWHERE worker.部门号=depart.部门号 AND worker.职工号= salary.职工号GROUP BY depart.部门名HAVING AVG(salary.工资)>1200(8). USE factoryGOSELECT worker.职工号,worker.姓名CASE depart.部门名WHEN ‘财务处’ THEN ‘管理部门’WHEN ‘人事处’ THEN ‘管理部门’WHEN ‘市场部’ THEN ‘市场部门’END AS ‘部门类型’FROM worker,departWHERE worker.部门号=depart.部门号GO2.在前面建立的factory数据库上,用Transact-SQL语句完成下列各题:(1)在worker表中的“部门号”列上创建一个非聚集索引,若该索引已存在,则删除后重建。

相关主题