文档库 最新最全的文档下载
当前位置:文档库 › SQL Server复习题及答案(科大成院版)

SQL Server复习题及答案(科大成院版)

一.选择题

1.数据库操作时服务器突然掉电,当重新启动后,您如何恢复已经完成但还没把数据写入硬盘的事务,以及

正在进行一半的事务?

A.不用。SQL Server 2008自动恢复,即通过日志恢复所有已经完成但还没把数据写入硬盘的事务到硬盘,并

撤消正在进行一半的事务。

B.运行ROLL FORWARD ALL TRANSACTION

C.先备份事务日志,再将数据库恢复到上一完全数据库备份,再把刚备份的事务日志恢复到当前数据库的日志

中。

D.没有办法。只能使用数据库以前的备份。

2.在学生信息表tblStudent中的列Age用来存放学生年龄(0~100岁,没有小数), 用下面的哪种类型最节

省空间?

A.tinyint

B.int

C.smallint

D.decimal(3,0)

3.定单表Orders的列OrderID的类型是小整型(smallint),根据业务的发展需要改为整型(integer),应该使用下面的哪条语句?

A、ALTER COLUMN OrderID integer FROM Orders

B、ALTER TABLE Orders ALTER COLUMN OrderID integer

C、ALTER TABLE Orders ( OrderID integer )

D、ALTER COLUMN Orders.OrderID integer

4.在学生管理系统中使用下面的学生信息表:

CREATE TABLE 学生信息表

( 学号 char(8) PRIMARY KEY NONCLUSTERED,

姓名 varchar(20) NOT NULL,

身份证号码 varchar(30) NOT NULL,

出生日期 datetime NULL,

系号 char(2) NOT NULL

)

学生的身份证号码是唯一的。你想把每个学生的信息按照身份证号码的顺序物理地存放在数据库文件中。下面的哪个约束可以完成改任务?

A、UNIQUE NONCLUSTERED

B、UNIQUE CLUSTERED

C、PRIMARY KEY CLUSTERED

D、PRIMARY KEY NONCLUSTERED

5.在登记学生成绩时要保证列Score的值在0到100之间,下面的方法中哪种最简单?

A. 编写一个存储过程,管理插入和检查数值,不允许直接插入;

B. 生成用户自定义类型type_Score和规则,将规则与数据类型type_Score相关联,然后设置列Score的数据类型类型为type_Score;

C.在Score列增加检查限制;

D. 编写一个触发器来检查Score的值,如果不在0和100之间,则撤消插入。

6.关于存储过程,哪个说法是错误的?

A. 每个存储过程完成单项任务

B. 用相应架构名限制存储过程所引用的对象名称

C. 对所有存储过程使用不同的连接设置

D. 尽可能减少临时存储过程的使用

7.您需要显示从2001年1月1日到2001年12月31日雇佣的所有职员的姓名和雇佣日期。职员信息表tblEmployees包含列Name和列HireDate,下面哪些语句能完成该功能?

A、SELECT Name, HireDate FROM tblEmployees

B、 SELECT Name, HireDate FROM tblEmployees

WHERE HireDate =’2001-01-01’ OR ‘2001-12-31’

C、 SELECT Name, HireDate FROM tblEmployees

WHERE HireDate BETWEEN ’2000-12-31’ AND ‘2002-01-01’

D、 SELECT Name, HireDate FROM tblEmployees

WHERE HireDate DATEPART(yy, HireDate) =2001

8.在SQL Server 2008 创建了定单表,创建语句如下:

CREATE TABLE 定单表

( 定单代号 int IDENTITY(1,1) PRIMARY KEY,

客户代号 int not null,

雇员代号 int not null, --经手该笔业务的雇员的代号

定单日期 datetime not null,

销售金额 money not null,

备注 varchar(200) null

)

你需要获得定单信息列表,包括雇员代号、销售金额和定单日期。你想按日期从近到早的顺序显示,并且对于每一天的定单,按销售金额从大到小的顺序排序。

假设列“销售日期”的时间部分的值都是0,下面哪条语句能够准确地完成该任务?

A. SELECT 雇员代号, 销售金额, 定单日期 FROM 定单表

ORDER BY销售金额, 定单日期 DESC

B. SELECT 雇员代号, 销售金额, 定单日期FROM 定单表

ORDER BY 定单日期, 销售金额DESC

C. SELECT 雇员代号, 销售金额, 定单日期FROM 定单表

ORDER BY 销售金额 DESC, 定单日期 DES

D. SELECT 雇员代号, 销售金额, 定单日期FROM 定单表

ORDER BY 定单日期 DESC, 销售金额 DESC

9.你在SQL Server 2008数据库中创建了定单表,其创建语句如下:

CREATE TABLE 定单表

( 定单号 int IDENTITY(1,1) PRIMARY KEY,

雇员代号 int NOT NULL,

地区代号 int NOT NULL,

订购日期 datetime NOT NULL,

订购金额 money NOT NULL

)

销售经理想要获得总的销售金额和按地区分组的总销售金额。下面哪条语句能完成该任务?

A. SELECT 雇员代号,地区代号,订购金额 FROM 定单表

ORDER BY 地区代号

COMPUTE SUM(订购金额) BY 地区代号

B. SELECT 雇员代号,地区代号,订购金额 FROM 定单表

ORDER BY 地区代号

COMPUTE SUM(订购金额)

C. SELECT 雇员代号,地区代号,SUM(订购金额) FROM 定单表

GROUP BY 雇员代号,地区代号

D. SELECT 雇员代号,地区代号,SUM(订购金额) FROM 定单表

GROUP BY 雇员代号,地区代号

10.下面哪个关键字不影响SELECT语句返回的结果的行数?(多选)

A. TOP n

B. WHERE

C. ORDER BY

D. DISTINCT

11.你在SQL Server 2008数据库中创建了如下两个表:

CREATE TABLE 雇员表

( 雇员代号 int IDENTITY(10001,1) PRIMARY KEY NONCLUSTERED,

雇员姓名 varchar(20) NOT NULL,

通信地址 varchar(200) NULL

)

CREATE TABLE 定单表

( 定单号 int IDENTITY(1,1) PRIMARY KEY,

雇员代号 int NOT NULL,

客户代号 int NOT NULL,

订购日期 datetime NOT NULL,

订购金额 money NOT NULL

)

你需要获得2003年9月1日每个雇员的最高的一笔销售金额,要求列出“雇员代号”、“雇员姓名”、“订购日期”、最高的“订购金额”。下面哪个语句能完成该功能?

A. SELECT a.雇员代号,a.雇员姓名,b.订购日期,MAX(订购金额)

FROM 雇员表 AS a LEFT OUTER JOIN 定单表 AS b

ON a.雇员代号 = b.雇员代号 AND b.订购日期 = '09/01/2003'

GROUP BY a.雇员代号,a.雇员姓名,b.订购日期

B. SELECT a.雇员代号,a.雇员姓名,b.订购日期,b.订购金额

FROM 雇员表 AS a LEFT OUTER JOIN 定单表 AS b

ON a.雇员代号 = b.雇员代号

WHERE b.订购日期 = '09/01/2003'

AND 订购金额IN (SELECT MAX(订购金额) FROM 定单表)

C. SELECT a.雇员代号,a.雇员姓名,b.订购日期,MAX(订购金额)

FROM 雇员表 AS a INNER JOIN 定单表 AS b

ON a.雇员代号 = b.雇员代号

WHERE b.订购日期 = '09/01/2003'

GROUP BY a.雇员代号,a.雇员姓名,b.订购日期,b.定单号

D. SELECT a.雇员代号,a.雇员姓名,b.订购日期,MAX(订购金额)

FROM 雇员表 AS a INNER JOIN 定单表 AS b

ON a.雇员代号 = b.雇员代号

WHERE b.订购日期 = '09/01/2003'

AND 订购金额 IN (SELECT MAX(订购金额) FROM 定单表)

12.你是某大型商场的数据库开发人员,要实现对商品的销售情况的复杂统计。这个统计每次根据用户提供的一个商品代号,访问一些表中的数据进行统计,最后返回一个值。你要在SELECT、UPDATE和DELETE语句中使用这个计算的结果。哪种实现方法最有效?

A. 内嵌表值用户定义函数

B. 存储过程

C. 视图

D. 标量用户定义函数

13. 你在SQL Server 2008数据库中创建了定单表:

CREATE TABLE 定单表

( 定单号 int IDENTITY(100001,1) PRIMARY KEY,

雇员代号 int NOT NULL,

客户代号 int NOT NULL,

订购日期 datetime NOT NULL,

订购金额 money NOT NULL

)

由于业务量很大,定单表已经存放了大量的数据。你想删除3年以前的订购信息,下面哪个语句能够完成改任务?

A. DELETE FROM 定单表WHERE 定单日期< GETDA TE() - 3

B. DELETE FROM 定单表WHERE 定单日期< DA TEADD( YY, 3, GETDATE() )

C. DELETE FROM 定单表WHERE 定单日期< DA TEADD( YY, -3, GETDATE() )

D. DELETE FROM 定单表WHERE 定单日期< GETDA TE() + 3

14.在一个非聚集索引的B-树中,已知它有4级(根结点为第一级,叶级为第四级)。若其中有一级的索引指针指向的是真实的行所在的位置,请问它处于第几级?

A.第一级

B.第二级

C.第三级

D.第四级

15. 下面哪种数据类型所占存储空间最小?

A. char(100)

B. nchar(100)

C. bigint

D. int

16. SQL Server 2008的哪一个版本用于企业级的应用程序?

A. SQL Server 2008 Workgroup Edition

B. SQL Server 2008 Standard Edition

C. SQL Server 2008 Enterprise Edition

D. SQL Server 2008 Developer Edition

17. 小王创建了一个数据文件大小为500MB的数据库,那么默认的事务日志文件多大呢?

A. 130MB

B. 125MB

C. 120MB

D. 230MB

18. 使用下列哪个数据类型可以存储达2GB的数据并且能用标准的函数去查询和处理?

A. varchar(max)

B. varbinary

C. text

D. varchar

19. 如何阻止用户向表格中的表格中的国家名称列输入无效的缩写名称?

A. 创建CKECK约束

B. 创建UNIQUE约束

C. 创建DEFAULT约束

D. 创建PRIMARY KEY约束

20. 下列哪些情况可以使用CHECK约束?(多选)

A. 存储在列中的数据对其可包含的值有自然的限制

B. 业务逻辑规定列中存储的数据必须是唯一的

C. 表列之间存在的关系限制列可以包含的值

D. 让某列使用默认值

二.问答题

1. 什么是数据的完整性?数据完整性有哪些类型?

数据库中的数据的正确无误,且同一表中的数据具有一致性.实体完整性与完整性参照完整性用户定义完整性

2. SQL Server 2008的生命周期?

三.综合题(用T-SQL语句完成下列各题)

1. 创建数据库。要求用SQL语句创建满足如下要求的数据库:

(1)数据库名称为School;

(2)主数据文件:逻辑名为SchoolData,文件名为“D:\ School\School Data.mdf”,文件初始大小为50MB,文件的最大大小不受限制,文件的增长率为20%。

(3)日志文件:逻辑名为SchoolLog,文件名为“D:\ School\SchoolLog.ldf”,文件初始大小为10MB,文件的最大大小为50MB,文件的增长率为1MB;

Create

2. 创建数据类型和表,增加约束。

3. 用SQL语句给表插入如下数据。

4. 更新总分=数学+英语+计算机。

5. 找出所有系的男生,显示学号、姓名、性别及系号。

6. 找出总成绩最高的学生的学号和姓名。

7. 统计男生女生人数。

8. 创建视图vwStudentTeacher,要求显示所有教师和学生的姓名和电话。

9. 在创建存储过程proGetNamebyID。此存储过程根据学生ID得到学生姓名。

10. 创建标量函数:函数名:fnGetLevelbySum,参数:@summary,返回值:@Level。总分>=240为优;210 <=总分<240为中;180<=总分<210为及格;总分<180为不及格。

相关文档