1 . 你 有 一 个 用 户 叫 J o h n 。 他 具 有 访 问 S a l e s 架 构 的 S E L E C T 权 限 . 。 现 在 你 要 取 消 J o h n 对
S a l e s . S a l e s O r d e r 表 的 S E L E C T 权 限 ,但 不 能 影 响 他 的 其 他 权 限 。你 应 该 使 用 哪 一 条 T - S Q L 语 句 。
A . D R O P U S E R J o h n ;
B . D E N Y S E L E C T O N S a l e s . S a l e s O r d e r T O J o h n ; C . G R A N T D E L E T E O N S a l e s . S a l e s O r d e r T O J o h n ;
D . R E V O K E S E L E C T O N S a l e s . S a l e s O r d e r F R O M J o h n ; A n s w e r : B
2 你需要创建一列允许创建唯一约束的字段,你要选择哪两个列的定义?(每个正确答案代表一个完整 解决方案,选择两个) 答案:nvarchar(100) NULL
nvarchar(100) NOT
NULL
3 . 你 管 理 着 位 于 你 们 公 司 总 部 的 S Q L S e r v e r 2 0 0 8 数 据 库 。 数 据 库 中 有 一 张 表 d b o . S a l e s 。
你 需 要 为 d b o . S a l e s 表 创 建 不 同 的 视 图 来 让 每 一 个 部 门 插 入 、 更 新 、 删 除 行 , 每 个 部 门 必
须 仅 仅 能 够 插 入 、 更 新 、 删 除 与 他 们 部 门 有 关 的 行 。 你 应 该 为 部 门 R e g i o n 1 创 建 什 么 视 图 ?
A . C R E A T E V I E W d b o . R e g i o n 1 S a l e s A S
S E L E C T S a l e s I D , O r d e r Q t y , S a l e s p e r s o n I D , R e g i o n I D F R O M d b o . S a l e s W H E R E R e g i o n I D = 1 ;
B . C R E A T E V I E W d b o . R e g i o n 1 S a l e s A S
S E L E C T S a l e s I D , O r d e r Q t y , S a l e s p e r s o n I D , R e g i o n I D F R O M d b o . S a l e s W H E R E R e g i o n I D = 1 W I T H C H E C K O P T I O N ;
C . C R E A T E V I E W d b o . R e g i o n 1 S a l e s W I T H S C H E M A B I N D I N G A S
S E L E C T S a l e s I D , O r d e r Q t y , S a l e s p e r s o n I D , R e g i o n I D F R O M d b o . S a l e s W H E R E R e g i o n I D = 1 ;
D . C R E A T E V I E W d b o . R e g i o n 1 S a l e s W I T H V I E W _ M E T A D A T A A S
S E L E C T S a l e s I D , O r d e r Q t y , S a l e s p e r s o n I D , R e g i o n I D F R O M d b o . S a l e s W H E R E R e g i o n I D = 1 ; A n s w e r : B
4 . 你 管 理 的 S Q L S e r v e r 2 0 0 8 数 据 库 里 有 一 个 表 d b o . S a l e s , 表 的 定 义 如 下 :
第 1 页
C R E A T E T A B L E [ d b o ] . [ S a l e s ] (
[ S a l e s I D ] [ i n t ] I D E N T I T Y ( 1 , 1 ) N O T N U L L P R I M A R Y K E Y C L U S T E R E D , [ O r d e r D a t e ] [ d a t e t i m e ] N O T N U L L ,
[ C u s t o m e r I D ] [ i n t ] N O T N U L L , [ S a l e s P e r s o n I D ] [ i n t ] N U L L ,
[ C o m m e n t D a t e ] [ d a t e ] N U L L ) ;
表 中 有 上 亿 的 订 单 。 你 运 行 下 面 的 查 询 语 句 来 获 得 销 售 人 员 在 d b o . S a l e s 表 中 注 释 时 间 。
S E L E C T S a l e s I D , C u s t o m e r I D , S a l e s P e r s o n I D , C o m m e n t D a t e F R O M d b o . S a l e s
W H E R E C o m m e n t D a t e I S N O T N U L L A N D S a l e s P e r s o n I D I S N O T N U L L ;
你 发 现 这 个 查 询 运 行 起 来 慢 。 在 测 试 表 中 数 据 之 后 , 你 发 现 仅 仅 1
% 的 行 有 注 释 时 间 , 1 0 % 的 行 S a l e s P e r s o n I D 是 空 的 。 你 需 要 创 建 一 个 索 引 来 优 化 查 询 ,
而 且 必 须 要 节 省 硬 盘 空 间 , 你 应 该 创 建 哪 个 索 引 ? A . C R E A T E N O N C L U S T E R E D I N D E X i d x 1 O N d b o . S a l e s ( C u s t o m e r I D )
I N C L U D E ( C o m m e n t D a t e , S a l e s P e r s o n I D ) ;
第 2 页
B . C R E A T E N O N C L U S T E R E D I N D E X i d x 1
O N d b o . S a l e s ( S a l e s P e r s o n I D ) I N C L U D E ( C o m m e n t D a t e , C u s t o m e r I D ) ; C . C R E A T E N O N C L U S T E R E D I N D E X i d x 1 O N d b o . S a l e s ( C u s t o m e r I D ) I N C L U D E ( C o m m e n t D a t e )
W H E R E S a l e s P e r s o n I D I S N O T N U L L ; D . C R E A T E N O N C L U S T E R E D I N D E X i d x 1
O N d b o . S a l e s ( C o m m e n t D a t e , S a l e s P e r s o n I D ) I N C L U D E ( C u s t o m e r I D )
W H E R E C o m m e n t D a t e I S N O T N U L L ; A n s w e r : D
5 . 你 的 数 据 库 大 小 是 5 G B , 其 中 有 一 个 S a l e s H i s t o r y 表 。 销 售 信 息 被 频 繁 地 插 入 和 更 新 。
你 发 现 发 生 过 度 的 数 据 页 拆 分 , 你 必 须 要 减 少 S a l e H i s t o r y 表 的 这 种 数 据 页 拆 分 现 象 发 生 。 你 应 该 使 用 什 么 代 码 段 ?
A . A L T E R D A T A B A S E S a l e s
M O D I F Y F I L E ( N A M E = S a l e s d a t 3 , S I Z E = 1 0 G B ) ;
B . A L T E R I N D E X A L L O N S a l e s . S a l e s H i s t o r y
R E B U I L D W I T H ( F I L L F A C T O R = 6 0 ) ; C . E X E C s y s . s p _ c o n f i g u r e ' f i l l f a c t o r ( % ) ' , ' 6 0 ' ;
D . U P D A T E S T A T I S T I C S S a l e s . S a l e s H i s t o r y ( P r o d u c t s ) W I T H F U L L S C A N , N O R E C O M P U T E ; A n s w e r : B
注 :添 加 或 更 改 数 据 时 ,S Q L S e r v e r 可 能 不 得 不 重 新 组 织 非 聚 集 索 引 页 中 的 数 据 存 储 。
向 一 个 已 满 的 索 引 页 添 加 某 个 新 行 时 , S Q L S e r v e r 把 大 约 一 半 的 行 移 到 新 页 中 以 便
为 新 行 腾 出 空 间 。 这 种 重 组 称 为 数 据 页 拆 分 。 页 拆 分 会 降 低 性 能 并 使 表 中 的 数 据 存 储 产 生 碎 片 。 )
6 . 你 有 一 个 表 d b o . C u s t o m e r s , 创 建 表 的
第 3 页
T - S Q L 语 句 如 下 :
C R E A T E T A B L E d b o . C u s t o m e r s (
C u s t o m e r I D i n t I D E N T I T Y ( 1 , 1 ) P R I M A R Y K E Y C L U S T E R E D , A c c o u n t N u m b e r n v a r c h a r ( 2 5 ) N O T N U L L ,
F i r s t N a m e n v a r c h a r ( 5 0 ) N O T N U L L , L a s t N a m e n v a r c h a r ( 5 0 ) N O T N U L L ,
A d d r e s s L i n e 1 n v a r c h a r ( 2 5 5 ) N O T N U L L , A d d r e s s L i n e 2 n v a r c h a r ( 2 5 5 ) N O T N U L L , C i t y n v a r c h a r ( 5 0 ) N O T N U L L , S t a t e P r o v i n c e n v a r c h a r ( 5 0 ) N O T N U L L , C o u n t r y n v a r c h a r ( 5 0 ) N O T N U L L ,
P o s t a l C o d e n v a r c h a r ( 5 0 ) N O T N U L L ,
C r e a t e D a t e d a t e t i m e N O T N U L L D E F A U L T ( G E T D A T E ( ) ) ,
M o d i f i e d D a t e d a t e t i m e N O T N U L L D E F A U L T ( G E T D A T E ( ) ) )
你 创 建 了 一 个 存 储 过 程 , 其 中 包 括 C u s t o m e r s 表 中 的 A c c o u n t N u m b e r 、 C o u n t r y , 和
S t a t e P r o v i n c e 列 , 有 一 个 参 数 用 来 筛 选 A c c o u n t N u m b e r 列 。 你 需 要 优 化 这 个 存 储 过 程 的
性 能 , 不 改 变 表 的 现 有 结 构 , 你 应 该 使 用 哪 个 T - S Q L 语 句 ?
A . C R E A T E S T A T I S T I C S S T _ C u s t o m e r _ A c c o u n t N u m b e r
O N d b o . C u s t o m e r ( A c c o u n t N u m b e r ) W I T H F U L L S C A N ;
B . C R E A T E C L U S T E R E D I N D E X I X _ C u s t o m e r _ A c c o u n t N u m b e r
O N d b o . C u s t o m e r ( A c c o u n
t N u m b e r ) ;
C . C R E A T E N O N C L U S T E R E D I N D E X I X _ C u s t o m e r _ A c c o u n t N u m b e r
O N d b o . C u s t o m e r ( A c c o u n t N u m b e r ) W H E R E A c c o u n t N u m b e r = ' ' ;
D . C R E A T E N O N C L U S T E R E D I N D E X I X _ C u s t o m e r _ A c c o u n t N u m b e r
O N d b o . C u s t o m e r ( A c c o u n t N u m b e r )
第 4 页
I N C L U D E ( C o u n t r y , S t a t e P r o v i n c e ) ; A n s w e r : D
7 你有一个 Customer 表,需要确保表里的客户数据满足下列需求:未通过身份验证的信用额度必须为 0。
信用额度必须少于 10000。你应使用哪个约束?
答案:CHECK((CreditLimt=0 AND Verified=0) OR (CreditLimt BETWEEN 1 AND 10000 AND Verified=1))
8 . 你 有 一 个 表 A c c o u n t s R e c e i v a b l e 。 表 没 有 索 引 , 表 中 有 7 5 0 0 0 行 数 据 。 创 建 表 的 T - S Q L 语 句 如 下 :
C R E A T E T A B L E A c c o u n t s R e c e i v a b l e ( c o l u m n _ a I N T N O T N U L L , c o l u m n _ b V A R C H A R ( 2 0 ) N U L L ) O N [ P R I M A R Y ] ;
现 有 一 个 分 区 函 数 F G _ A c c o u n t D a t a , 你 需 要 把 A c c o u n t s R e c e i v a b l e 表 从 主 文 件 组 移 动 到
F G _ A c c o u n t D a t a 。 你 应 该 使 用 哪 个 T - S Q L 语 句 ?
A . C R E A T E C L U S T E R E D I N D E X i d x _ A c c o u n t s R e c e i v a b l e O N A c c o u n t s R e c e i v a b l e ( c o l u m n _ a ) O N [ F G _ A c c o u n t D a t a ] ;
B . C R E A T E N O N C L U S T E R E D I N D E X i d x _ A c c o u n t s R e c e i v a b l e O N A c c o u n t s R e c e i v a b l e ( c o l u m n _ a ) O N [ F G _ A c c o u n t D a t a ] ;
C . C R E A T E C L U S T E R E D I N D E X i d x _ A c c o u n t s R e c e i v a b l e O N A c c o u n t s R e c e i v a b l e ( c o l u m n _ a ) O N F G _ A c c o u n t D a t a ( c o l u m n _ a ) ;
D . C R E A T E N O N C L U S T E R E D I N D E X i d x _ A c c o u n t s R e c e i v a b l e O N A c c o u n t s R e c e i v a b l e ( c o l u m n _ a ) O N F G _ A c c o u n t D a t a ( c o l u m n _ a ) ; A n s w e r : C
9 你有含名为 Invoice 表的 SQL Server 2008 数据库 Contoso。这个表的主键是 InvoiceId,并且由
INDENTITY 属性填充。表 Invoice 与表 InvoiceLineItem 表有关联。为了提高数据载入速度,你删除了
Invoice 所有的约束。你发现当删除约束后,InvoiceId=10 的记录也从数据库中删除了。你需要重新将
相同 InvoiceId 值的记录重新插入到 Invoice 表中。你应使用哪个 T-SQL 语句? 答案:SET IDENTITY_INSERT Invoice ON;
INSERT INTO
Invoice(InvoiceId,… VALUES(10,…
SET IDENTITY_INSERT Invoice OFF;
10 你 准 备 开 发 一 个 新 数 据 库 , 这 个 数 据 库 包 含 SalesOrderDetail 表 和 Product 表 。 你 需 要 确 保
SalesOrderDetail 表中已引用的所有产品在 Product 表中有相应的记录。
第 5 页