您的当前位置:首页数据库面试题(SQLSERVER)及答案

数据库面试题(SQLSERVER)及答案

2020-06-24 来源:小侦探旅游网
数据库面试题(SQL2005)

一、 选择题(5分一题,共50分)

1、公司A使用SQL Server 2005数据库。来自贸易伙伴的客户数据每天晚上都要导入到客户表。你要确保,在导入的过程中,对于存在的客户数据进行更新、对于不存在的客户数据进行插入。你该怎么做?(B) A. 创建一个FOR触发器。

B. 创建一个INSTEAD OF 触发器。 C. 创建一个 AFTER 触发器。 D. 创建一个 DDL 触发器。

2、你负责维护你们部门SQL Server 2005数据库的调度作业。其中一个作业从多源为报表聚集数据。这个作业每日运行,由多步构成。每一步都为某一特定报表聚集数据。有用户反映一些报表的数据近期没有更新。你要确保即使发生错误,聚合数据作业的每一步也都要执行。那你该如何做?(C)

A. 将作业中所有步骤组合成一个每日运行的步骤。

B. 创建一个通知;在每次出现错误时通知你。以便你能及时更正错误,重启作业。 C. 修改失败使要执行的步骤为“转到下一步”。 D. 设置作业重试当前步骤。

3、你要创建一个SQL Server 2005应用程序来存储和管理法律文件。原文件以XML文档存于一文件服务器上。此应用程序用于将文件插入到数据库。此后,这些文档必须能够从数据库中得到,并与原文件保持一致。你要设计一个表去存储这些文档数据,该怎样做?(A) A. 将XML文档存于以nvarchar(max)为数据类型的一列中。 B. 分割此XML文档并将其存储于在一个关系结构中。 C. 将XML文档存于以XML为数据类型的一列中。

D. 将XML文档存于以varchar(8000)为数据类型的一列中。

4、你正在写一个查询,从SQL Server 2005数据库表中返回数据。一些数据存储在关系列中,一些存储在XML数据类型列中。你的查询需要返回一个关系结果集,其中包含关系域中的数据以及XML数据类型列的属性值。你应该使用XML数据类型的哪两个方法?(每一个正确的答案代表方案的一部分。选两项。)(AD) A. the value() 方法。 B. the exist()方法。 C. the query()方法。 D. the nodes()方法。 E. the modify()方法。

5、你配置一个采用默认设置全新安装的SQL SERVER 2005计算机使用TCP/IP协议。公司的安全策略也要求每个服务器都使用防火墙。你发现在本地计算机上可以连接到这个SQL SERVER 实例,但是客户端计算机却不能连接到这个SQL SERVER 实例上。为了找到最有可能导致这个连接问题的原因,你首先应该做?(A) A. 检查防火墙是否打开了1433端口。 B. 检查防火墙是否打开了433端口。

C. 检查客户端计算机是否用Shared Memory 协议进行连接。 D. 检查服务器是否正在运行中。

6、假设你负责实现和维护SQL SERVER 2005 数据库服务器中的作业(jobs)。其中,一些作业在每周日运行,一些作业在每月的开始运行。现在你需要以一种使用最少管理成本的方法去安排这些作业,你应该如何做?(A)

A. 创建一个每周日运行的作业计划,并且指派需要周日运行的任务给这个计划。然后创建另一个每月第一天运行的作业计划,并且指派每月开始运行的任务给这个作业计划。

B. 为每个任务创建一个每天运行一次的作业。然后使用SQL 语句去检查当前的日期。如果是星期日或每月的第一天则执行相应的代码。

C. 创建一个每天运行的作业计划.指派作业任务给这个作业计划.如果这天是星期日或每月的第一天则执行作业。

D. 为每个任务创建一个在每周日运行一次的作业;增加另一个在每月第一天运行作业的作业计划。

7、你是公司A在北京总部SQL SERVER 2005数据库的管理员.销售部门需要一个包含了上个季度北京总部和天津分公司客户活动信息对比的报表,并且数据需要按照surname 和 first name进行排序.恰好,在你的服务器上有一个天津分部数据库最近的备份,为此,你可以通过写一个查询来实现这个报表,并且对数据按照Surname 和FirstName列进行排序。可是你发现天津分部客户数据是按照不同的方式进行排序的;销售部门需要在15分钟内进行数据展示。为此,你需要以最快的解决方案得到已排序的数据并确保来源于两个数据库数据排序方式是一致的。你应该如何做?(D)

A. 使用复制数据库向导把天津分部的数据复制到一个新的数据库中,并且在复制过程中指定和北京总部数据同样的排序规则。

B. 使用数据导入导出向导导出天津分部的数据到一个新的表中,并且在导出过程中指定和北京总部数据同样的排序规则。

C. 修改数据格式文件使其和北京总部数据采用同样的排序规则,然后在导入数据。

D. 修改查询天津分部数据的SQL语句,使其在ORDER BY子句中使用COLLATE 子句并指定和北京总部数据同样的排序规则。

8、你正在SQL SERVER 2005 数据库中创建一个从联系人表删除联系人数据的存储过程。在存储过程中包含如下的语句来处理可能发生的任何错误。 BEGIN TRY

BEGIN TRANSACTION

DELETE FROM Person.Contact WHERE ContactID = @ContactID COMMIT TRANSACTION END TRY BEGIN CATCH

DECLARE @ErrorMessage nvarchar(2000) DECLARE @ErrorSeverity int DECLARE @ErrorState int

SELECT @ErrorMessage =ERROR_MESSAGE(),@ErrorSeverity = RROR_SEVERITY(), @ErrorState = ERROR_STATE() RAISERROR

(@ErrorMessage,@ErrorSeverity, @ErrorState)

END CATCH;

在你执行存储过程后发现,事务任然保持打开状态。为了正确的处理打开的事务,你应该如何修改你的存储过程?(C)

A. 在CATCH语句块增加 COMMIT TRANSACTION 命令。 B. 在TRY语句块移除COMMIT TRANSACTION 命令。 C. 在CATCH块增加 ROLLBACK TRANSACTION命令。 D. 在TRY块增加ROLLBACK TRANSACTION 命令。

9、公司一个新的员工需要访问名为SQL1服务器上的SQL SERVER 2005 数据库.你用CREATE LOGIN ajones WITH PASSWORD = 'SQLServer$1'为其创建了登录名ajones。新员工报告说:当他在使用ajones登录的时候,收到如下的错误“用户‘ajones’登录失败。该用户与可信的SQL SERVER 连接无关联”。你需要解决这个问题并允许这个员工去登录SQL1。你应该怎么做?(A)

A.改变SQL SERVER 安全身份验证模式为“SQL SERVER 和 Windows 身份验证模式”。 B.改变SQL SERVER 安全身份验证模式为“Windows 身份验证模式”。 C. 保证创建的登录名是带方括号([])的。(例如:[loginname])

D. 通过用CREATE USER 语句给新创建的登录访问指定数据库的权限。

10、你正在SQL SERVER 2005 服务器上一个名为DB1的数据库上进行着工作。你发现由于对DB1中Table1表的扫描导致了查询执行缓慢。已知,Table是一个使用频繁而且非常巨大的表,同时你又确定了查询中包含如下的语句:SELECT col1,col2 FROM table1 WHERE col3 = 。在表保持对所有用户有效的情况下,为了最大化的提高查询性能,你应该怎么做?(E)

A. 更新DB1数据库中表Table1的所有统计信息。

B. 在DB1数据库中,使用CREATE STATISTICS 语句为表Table1的列col3创建缺少的统计信息。

C. 设置优先值提升选项的值为1。

D. 执行如下语句:USE DB1 GO CREATE INDEX index1 ON table1(col3) INCLUDE(col1, col2) WITH (ONLINE = ON) GO

E. 执行如下语句 USE DB1GOCREATE INDEX index1 ON table1(col3, col2,col1)

二、 问答题(1、2题10分/题;3题30分,共50分)

1、用一条SQL语句 查询出每门课都大于80分的学生姓名(表名为Table1) name kecheng fenshu 张三 语文 81 张三 数学 75 李四 语文 76 李四 数学 90 王五 语文 81 王五 数学 100 王五 英语 90

答案:

select distinct name from table1 where name not in (select distinct name from table1 where fenshu<=80)

2、XML查询,有如下XML信息

DECLARE @doc xml SET @doc ='

2222

3333

'

请用一句语句得到以下结果: OrderId OrderDate ot ProductId 1001 1001 1002 1002 答案: 2010-01-01 00:00:00.000 2010-01-01 00:00:00.000 2010-02-01 00:00:00.000 2010-02-01 00:00:00.000 2222 2222 3333 3333 11 12 31 32 SELECT nCol.value('../../@OrderId','int') OrderId,

nCol.value('../../@OrderDate','DateTime') OrderDate,

nCol.value('@ProductID','nvarchar(10)') ProductId

nCol.value('../../ot[1]','nvarchar(10)') ot,

from @doc.nodes('/ORDERS/Order/Products/Product') as T(nCol)

3、有一个[学生课程]数据库,数据库中包括三个表:

学生表:Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,记为:Student(Sno,Sname,Ssex,Sage,Sdept),Sno 为关键字。

课程表:Course由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组成,记为: Course(Cno,Cname,Cpno,Ccredit) Cno为关键字。

成绩表:SG由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,记为: SG(Sno,Cno,Grade) (SNO, CNO) 为关键字。 用SQL语言实现下列功能:

1)建立学生表[Student],其中学号属性不能为空,并且其值是唯一的。 2)查考试成绩有不及格的学生的学号。 3)将学号为05001学生的年龄改为22岁。 答案:

1)create table student (Sno char(5) primary key, Sname char(20), Ssex char(2), Sage int,

Sdept char(15) )

2)select distinct sno from sg

where grade < 60 3)update student set sage=22

where sno='05001'

因篇幅问题不能全部显示,请点此查看更多更全内容