Tag: 免试预览模式: 普通 | 列表

SQLSEREVER测试题

SQLSEREVER测试题(上)


一 SQLSERVER管理部分


1 请讲出身份验证模式与登录帐号的关系及如何用各种帐号进行登录,并画出示意图
2 请讲出登录帐号、数据库用户及数据库角色之间的关系,并画出示意图
3 请讲出数据库用户、数据库角色与数据库对象之间的关系,并画出直接对用户授权与间接对用户授权(系统权限与对象权限)的方法
4 请讲出服务器角色、数据库角色、标准角色与应用程序角色的区别与验证其权限的方法
5 请讲出数据库还原模型对数据库的影响
6 有一个执行关键任务的数据库,请设计一个数据库备份策略
7 请使用文件与文件组恢复的方式恢复数据库
8 请使用事务日志恢复数据库到一个时间点
9 请设计作业进行周期性的备份数据库
10 如何监控数据库的阻塞,并实现数据库的死锁测试
11 如何监控数据库的活动,并能使用索引优化向导生成索引
12 理解数据库框图的作用并可以设计表与表之间的关系

 

SQL代码
  1. SQLSEREVER测试题(中)  
  2.   
  3. 二 SQLSERVER的实现部分  
  4.   
  5. 1 有订单表,需要实现它的编号,格式如下:200211030001……200222039999等  
  6.   
  7.   
  8.   
  9.   
  10.   
  11. 2 有表T1,T2,现有一事务,在向表T1添加数据时,同时也必须向T2也添加数据,如何实现该事务  
  12.   
  13.   
  14.   
  15.   
  16.   
  17. 3 如何向T1中的编号字段(code varchar(20))添加一万条记录,不充许重复,规则如下:编号的数据必须从小写的a-z之间取值  
  18.   
  19.   
  20.   
  21.   
  22.   
  23. 4 如何删除表中的重复数据,请使用游标与分组的办法  
  24.   
  25.   
  26.   
  27.   
  28.   
  29. 5 如何求表中相邻的两条记录的某字段的值之差  
  30.   
  31.   
  32.   
  33.   
  34.   
  35. 6 如何统计数据库中所有用户表的数据,显示格式如下:  
  36.   
  37. 表名      记录数  
  38.   
  39.   sales      23  
  40.   
  41.   
  42.   
  43.   
  44.   
  45. 7 如何删除数据库中的所有用户表(表与表之间有外键关系)  
  46.   
  47.   
  48.   
  49.   
  50.   
  51. 8 表A editor_id       lb2_id  
  52.    123           000  
  53.    123           003  
  54.    123           003  
  55.    456           007  
  56.    456           006  
  57. 表B  lb2_id         lb2_name  
  58.     000           a  
  59.     003           b  
  60.     006           c  
  61.     007           d  
  62. 显示 a   共1条 (表A内lb2_id为000的条数)  
  63.    b   共2条(表A内lb2_id为003的条数)  
  64.   
  65.   
  66.   
  67.   
  68.   
  69. 9 人员情况表(employee):里面有一字段文化程度(wh):包括四种情况(本科以上,大专,高中,初中以下),现在我要根据年龄字段查询统计出:表中文化程度为本科以上,大专,高中,初中以下,各有多少人,占总人数多少。  
  70.   
  71. Select wh AS 学历,age as 年龄, Count(*) AS 人数,  
  72.   
  73.       Count(*) * 100 /(Select Count(*) FROM employee) AS 百分比  
  74.   
  75. FROM employee GROUP BY wh,age  
  76.   
  77. 学历      年龄    人数      百分比  
  78.   
  79. 本科以上  20      34          14  
  80.   
  81. 大专      20      33          13  
  82.   
  83. 高中      20      33          13  
  84.   
  85. 初中以下  20      100        40  
  86.   
  87. 本科以上  21      50          20  
  88.   
  89.   
  90.   
  91.   
  92.   
  93. 10 现在有三个表student:(FID  学生号,FName  姓名),  
  94.   
  95. subject:(FSubID  课程号,FSubName 课程名),   
  96.   
  97. Score(FScoreId  成绩记录号,FSubID    课程号,FStdID    学生号,FScore    成绩)  
  98.   
  99. 怎么能实现这个表:  
  100.   
  101. 姓名  英语  数学  语文  历史  
  102.   
  103. 张萨  78    67    89    76  
  104.   
  105. 王强  89    67    84    96   
  106.   
  107.   
  108.   
  109.   
  110.   
  111. Select a.FName AS 姓名,  
  112.   
  113.       英语 = SUM(CASE b.FSubName WHEN '英语' THEN c.FScore END),  
  114.   
  115.       数学 = SUM(CASE b.FSubName WHEN '数学' THEN c.FScore END),  
  116.   
  117.       语文 = SUM(CASE b.FSubName WHEN '语文' THEN c.FScore END),  
  118.   
  119.       历史 = SUM(CASE b.FSubName WHEN '历史' THEN c.FScore END)  
  120.   
  121. FROM Student a, Subject b, Score c  
  122.   
  123. Where a.FID = c.FStdId AND b.FSubID = c.FsubID GROUP BY a.FName  
  124.   
  125.   
  126.   
  127.   
  128.   
  129. 11 原始表的数据如下:  
  130.   
  131. PID PTime    PNo  
  132.   
  133. 111111    2003-01-28 04:30:09       
  134.   
  135. 111111    2003-01-28 18:30:00  
  136.   
  137. 222222    2003-01-28 04:31:09       
  138.   
  139. 333333    2003-01-28 04:32:09       
  140.   
  141. 111111    2003-02-09 03:35:25       
  142.   
  143. 222222    2003-02-09 03:36:25       
  144.   
  145. 333333    2003-02-09 03:37:25       
  146.   
  147.   
  148.   
  149.   
  150.   
  151. 查询生成表  
  152.   
  153. PDate        111111        222222    333333      ......  
  154.   
  155. 2003-01-28    04:30:09    04:31:09      04:32:09    ......  
  156.   
  157. 2003-01-28    18:30:00  
  158.   
  159. 2003-02-09    03:35:25    03:36:25      03:37:25    ......  
  160.   
  161.   
  162.   
  163.   
  164.   
  165. 12  表一(AAA)  
  166.   
  167. 商品名称mc  商品总量sl  
  168.   
  169.   A        100  
  170.   
  171.   B        120  
  172.   
  173. 表二(BBB)  
  174.   
  175. 商品名称mc  出库数量sl  
  176.   
  177.   A        10  
  178.   
  179.   A        20  
  180.   
  181.   B        10  
  182.   
  183.   B        20  
  184.   
  185.   B        30  
  186.   
  187.   
  188.   
  189.   
  190.   
  191. 用一条SQL语句算出商品A,B目前还剩多少?  
  192.   
  193. 一  
  194.   
  195.   
  196. declare @AAA table (商品名称  varchar(10), 商品总量  int)  
  197.   
  198. insert into @AAA values('A',100)  
  199.   
  200. insert into @AAA values('B',120)  
  201.   
  202.   
  203.   
  204.   
  205.   
  206. declare @BBB table (商品名称 varchar(10), 出库数量 int)  
  207.   
  208. insert into @BBB values('A', 10)  
  209.   
  210. insert into @BBB values('A', 20)  
  211.   
  212. insert into @BBB values('B', 10)  
  213.   
  214. insert into @BBB values('B', 20)  
  215.   
  216. insert into @BBB values('B', 30)  
  217.   
  218.   
  219.   
  220.   
  221.   
  222. select TA.商品名称,A-B AS 剩余数量 FROM  
  223.   
  224. (select 商品名称,sum(商品总量) AS A  
  225.   
  226. from @AAA  
  227.   
  228. group by 商品名称)TA,  
  229.   
  230. (select 商品名称,sum(出库数量) AS B  
  231.   
  232. from @BBB  
  233.   
  234. group by 商品名称)TB  
  235.   
  236. where TA.商品名称=TB.商品名称  
  237.   
  238. 二  
  239.   
  240.   
  241. select 商品名称,sum(商品总量) 剩余数量 from (select * from @aaa union all select 商品名称,-出库数量 from @bbb) a group by 商品名称  
  242.   
  243.   
  244.   
  245.   
  246.   
  247. 13 优化这句SQL语句  
  248.   
  249. Update tblExlTempYear  
  250.   
  251. SET tblExlTempYear.GDQC = tblExlTempMonth.GDQC  
  252.   
  253. FROM tblExlTempYear,tblExlTempMonth  
  254.   
  255. where tblExlTempMonth.GDXM=tblExlTempYear.GDXM and tblExlTempMonth.TXDZ=tblExlTempYear.TXDZ  
  256.   
  257.   
  258.   
  259.   
  260.   
  261. (1)、加索引:  
  262.   
  263. tblExlTempYear(GDXM,TXDZ)  
  264.   
  265. tblExlTempMonth (GDXM,TXDZ)  
  266.   
  267. (2)、删除无用数据  
  268.   
  269. (3)、转移过时数据  
  270.   
  271. (4)、加服务器内存,升级服务器  
  272.   
  273. (5)、升级网络系统  
  274.   
  275.   
  276.   
  277.   
  278.   
  279. Update tblExlTempYear  
  280.   
  281. SET tblExlTempYear.GDQC = tblExlTempMonth.GDQC  
  282.   
  283. FROM tblExlTempYear (index indexY),tblExlTempMonth (index indexM)  
  284.   
  285. where tblExlTempMonth.GDXM=tblExlTempYear.GDXM and tblExlTempMonth.TXDZ=tblExlTempYear.TXDZ  
  286.   
  287.   
  288.   
  289.   
  290.   
  291. 14 品种    日期    数量  
  292.   
  293. P0001  2002-1-10  10  
  294.   
  295. P0001  2002-1-10  11  
  296.   
  297. P0001  2002-1-10  50  
  298.   
  299. P0001  2002-1-12  9  
  300.   
  301. P0001  2002-1-12  8  
  302.   
  303. P0001  2002-1-12  7  
  304.   
  305. P0002  2002-10-10  5  
  306.   
  307. P0002  2002-10-10  7  
  308.   
  309. P0002  2002-10-12  0.5  
  310.   
  311. P0003  2002-10-10  5  
  312.   
  313. P0003  2002-10-12  7  
  314.   
  315. P0003  2002-10-12  9  
  316.   
  317.   
  318.   
  319.   
  320.   
  321. 结果要先按照品种汇总,再按照日期汇总,结果如下:  
  322.   
  323. P0001  2002-1-10    71  
  324.   
  325. P0001    2002-1-12  24  
  326.   
  327. P0002    2002-10-10  12  
  328.   
  329. P0002    2002-10-12  0.5  
  330.   
  331. P0003    2002-10-10  5  
  332.   
  333. P0003    2002-10-12  16  
  334.   
  335.   
  336.   
  337.   
  338.   
  339. SQL SERVER能做出这样的汇总吗…  
  340.   
  341.   
  342.   
  343.   
  344.   
  345. 15 在分組查循中with{cube|rollup}的區別是什么?  
  346.   
  347. 如:  
  348.   
  349.   use pangu  
  350.   
  351.   select firm_id,p_id,sum(o_price_quantity)as sum_values  
  352.   
  353.   from orders  
  354.   
  355.   group by firm_id,p_id  
  356.   
  357.   with cube  
  358.   
  359.   與  
  360.   
  361.   use pangu  
  362.   
  363.   select firm_id,p_id,sum(o_price_quantity)as sum_values  
  364.   
  365.   from orders  
  366.   
  367.   group by firm_id,p_id  
  368.   
  369.   with rollup  
  370.   
  371.   的區別是什么?  
  372.   
  373.   
  374.   
  375.   
  376.   
  377. CUBE 和 ROLLUP 之间的区别在于:  
  378.   
  379. CUBE 生成的结果集显示了所选列中值的所有组合的聚合。  
  380.   
  381. ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合。  
  382.   
  383. 例如,简单表 Inventory 中包含:  
  384.   
  385. Item                Color                Quantity                   
  386.   
  387. -------------------- -------------------- --------------------------  
  388.   
  389. Table                Blue                124                         
  390.   
  391. Table                Red                  223                         
  392.   
  393. Chair                Blue                101                         
  394.   
  395. Chair                Red                  210                         
  396.   
  397.   
  398.   
  399.   
  400.   
  401.   
  402.   
  403.   
  404.   
  405.   
  406.   
  407.   
  408.   
  409.   
  410. 下列查询将生成小计报表:  
  411.   
  412. Select CASE WHEN (GROUPING(Item) = 1) THEN 'ALL'  
  413.   
  414.             ELSE ISNULL(Item, 'UNKNOWN')  
  415.   
  416.       END AS Item,  
  417.   
  418.       CASE WHEN (GROUPING(Color) = 1) THEN 'ALL'  
  419.   
  420.             ELSE ISNULL(Color, 'UNKNOWN')  
  421.   
  422.       END AS Color,  
  423.   
  424.       SUM(Quantity) AS QtySum  
  425.   
  426. FROM Inventory  
  427.   
  428. GROUP BY Item, Color WITH ROLLUP  
  429.   
  430.   
  431.   
  432.   
  433.   
  434. Item                Color                QtySum                     
  435.   
  436. -------------------- -------------------- --------------------------  
  437.   
  438. Chair                Blue                101.00                     
  439.   
  440. Chair                Red                  210.00                     
  441.   
  442. Chair                ALL                  311.00                     
  443.   
  444. Table                Blue                124.00                     
  445.   
  446. Table                Red                  223.00                     
  447.   
  448. Table                ALL                  347.00                     
  449.   
  450. ALL                  ALL                  658.00                     
  451.   
  452. (7 row(s) affected)  
  453.   
  454. 如果查询中的 ROLLUP 关键字更改为 CUBE,那么 CUBE 结果集与上述结果相同,只是在结果集的末尾还会返回下列两行:  
  455.   
  456. ALL                  Blue                225.00                     
  457.   
  458. ALL                  Red                  433.00                     
  459.   
  460. CUBE 操作为 Item 和 Color 中值的可能组合生成行。例如,CUBE 不仅报告与 Item 值 Chair 相组合的 Color 值的所有可能组合(Red、Blue 和 Red + Blue),而且报告与 Color 值 Red 相组合的 Item 值的所有可能组合(Chair、Table 和 Chair + Table)。对于 GROUP BY 子句中右边的列中的每个值,ROLLUP 操作并不报告左边一列(或左边各列)中值的所有可能组合。例如,ROLLUP 并不对每个 Color 值报告 Item 值的所有可能组合。ROLLUP 操作的结果集具有类似于 COMPUTE BY 所返回结果集的功能;然而,  
  461.   
  462. ROLLUP 具有下列优点: ROLLUP 返回单个结果集;COMPUTE BY 返回多个结果集,而多个结果集会增加应用程序代码的复杂性。ROLLUP 可以在服务器游标中使用;COMPUTE BY 不可以。有时,查询优化器为 ROLLUP 生成的执行计划比为 COMPUTE BY 生成的更为高效。  
  463.   
  464.   
  465.   
  466.   
  467.   
  468. 16 假如我有两个表  
  469. 表1(电话号码,是否存在)  
  470. 表2(电话号码,是否拨打)  
  471. 想查找表1中的电话号码是否在表2中存在,如果存在就更新表1中的是否存在字段为1。  
  472.   
  473.   
  474.   
  475.   
  476.   
  477.     Update 表1 SET 是否存在=1  
  478. Where EXISTS(Select * FROM 表2 Where 表2.电话号码 = 表1.电话号码)  
  479.   
  480.   
  481. 17 用存储过程调用外部程序.  
  482. 不过要做成com控件  
  483. 用sp_OACreate存储过程)  
  484. DECLARE @object int  
  485. DECLARE @hr int  
  486. DECLARE @src varchar(255), @desc varchar(255)  
  487. EXEC @hr = sp_OACreate 'SQLDMO.SQLServer', @object OUT  
  488. IF @hr <> 0  
  489. BEGIN  
  490. EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT  
  491. Select hr=convert(varbinary(4),@hr), Source=@src, Description=@desc  
  492. RETURN  
  493. END   

 

Tags: SQL 免试

分类:MSSQL | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 43