大数据库应用考精彩试题目+Word下载.docx
《大数据库应用考精彩试题目+Word下载.docx》由会员分享,可在线阅读,更多相关《大数据库应用考精彩试题目+Word下载.docx(21页珍藏版)》请在冰豆网上搜索。
一个存储数据库的更新情况等事务日志信息,当数据库损坏时,管理员使用事务日志恢复数据库;
每一个数据库至少必须拥有一个事务日志文件,而且允许拥有多个日志文件。
3.事务文件和数据文件分开存放有什么好处?
●因为利用事务日志备份可以将数据库恢复到特定的即时点(如输入不想要的数据之前的那一点)或故障发生点。
在媒体恢复策略中应考虑利用事务日志备份。
4.什么是批处理?
使用批处理有何限制?
●包含一个或多个T-SQL语句的组,从应用程序将一次性发送到SQLServer执行,SQLServer批处理语句作为整体编译成一个可执行单元。
●限制:
如不能够在同一个批处理中更改表,然后引用新列。
如在一个批处理程序中,有两条语句。
第一条语句用来在一张表中插入一个字段,如在User表中插入员工的出生年月;
第二条语句则用来引用这个列,如根据身份证号码来推算出这个员工的出身年月并把这个值赋值给这个第一条语句创建的出身年月字段。
5.数据检索时,COMPUTE和COMPUTEBY产生的结果有何不同?
●当COMPUTE带BY子句时,符合SELECT条件的每个组都有两个结果集:
⏹每个组的第一个结果集是明细行集,其中包含该组的选择列表信息。
⏹每个组的第二个结果集有一行,其中包含该组的COMPUTE子句中所指定的聚合函数的小计。
●当COMPUTE不带BY子句时,SELECT语句有两个结果集:
⏹每个组的第一个结果集是包含选择列表信息的所有明细行。
⏹第二个结果集有一行,其中包含COMPUTE子句中所指定的聚合函数的合计。
6.什么是索引?
索引分为哪两种?
各有什么特点?
●数据库中的索引与书籍中的目录类似。
在一本书中,利用目录可以快速查找所需信息,无须阅读整本书。
在数据库中,索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需数据。
●聚集索引和非聚集索引。
●聚集索引的特点:
行的物理位置和行在索引中的位置是相同的,每个表只能有一个聚集索引,聚集索引的平均大小大约为表大小的5%左右。
●非聚集索引特点:
若未指定索引类型,则默认为非聚集索引,叶节点页的次序和表的物理存储次序不同,每个表最多可以有249个非聚集索引,在非聚集索引创建之前创建聚集索引。
7.创建索引有什么优点和缺点?
●优点:
索引在数据库中的作用类似于目录在书籍中的作用,用来提高查找信息的速度。
使用索引查找数据,无需对整表进行扫描,可以快速找到所需数据。
●缺点:
索引需要占用数据表以外的物理存储空间。
创建索引和维护索引要花费一定的时间。
当对表进行更新操作时,索引需要被重建,这样降低了数据的维护速度。
8.什么是视图?
使用视图的优点和缺点是什么?
●视图是一个虚拟表,其内容由查询定义。
同真实的表一样,视图包含一系列带有名称的列和行数据。
但是,视图并不在数据库中以存储的数据值集形式存在。
行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
隐蔽数据库的复杂性;
控制用户提取数据;
简化数据库用户管理;
简化查询
⏹性能:
SQLServer必须把视图的查询转化成对基本表的查询,如果这个视图是由,一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,SQLServer也,把它变成一个复杂的结合体,需要花费一定的时间。
⏹修改限制:
当用户试图修改视图的某些行时,SQLServer必须把它转化为对基本,表的某些行的修改。
对于简单视图来说,这是很方便的,但是,对于比较复杂的,视图,可能是不可修改的。
9.修改视图中的数据会受到哪些限制?
●必须对视图的操作权限有权限
●对视图上的某些列不能修改,这些列是:
计算列,内置函数列和行集合函数列
●删除基表并不删除视图,建议采用与表明显不同的名字命名规则
●对由多表连接成的视图修改数据时,不能同时影响一个以上的基表,也不能删除视图中的数据
●如果某些列因为规则或者约束的限制不能接受从视图插入的数据时,则插入数据可能会失败
●对具有NOTNULL的列进行修改时可能会出错。
通过视图修改或者插入数据时,必须保证未显示的具有NOTNULL属性的列有值,可以是默认值,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,其结构为:
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‘年龄’FROMworker
(2).SELECTdepart.部门名,count(*)AS‘党员人数’
FROMworker,depart
WHEREworker.党员否=1ANDworker.部门号=depart.部门号
GROUPBYdepart.部门名
(3).SELECTworker.姓名,salary.工资
FROMworker,salary
WHEREworker.职工号=salary.职工号ANDYEAR(salary.日期)=2004ANDMONTH(salary.日期)=1
(4).SELECT职工号,,AVG(工资)AS‘平均工资’
FROMsalary
GROUPBY职工号
(5).SELECTworker.职工号,worker.姓名,depart.部门名,salary.工资AS‘2004年2月工资’
FROMworker,depart,salary
WHEREworker.部门号=depart.部门号ANDworker.职工号=salary.职工号ANDYEAR(salary.日期)=2004ANDMONTH(salary.日期)=2
ORDERBYworker.部门号
(6).SELECTdepart.部门名,AVG(salary.工资)AS‘平均工资’
WHEREworker.部门号=depart.部门号ANDworker.职工号=salary.职工号
GROUPBYdepart.部门名
(7).SELECTdepart.部门名,AVG(salary.工资)AS‘平均工资’
HAVINGAVG(salary.工资)>
1200
(8).USEfactory
GO
SELECTworker.职工号,