友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
一世书城 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

SQL 21日自学通(V3.0)(PDF格式)-第101章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






执行了       也 BREAK 命令一样           COUNTINUE      也应该在 IF  条件语句中出现                 如例 19。9 所 



示 



例 19。9 



注意     这里的 COUNTINUE 也是放在 IF 之中的 



输入 



                                                                                           425 


…………………………………………………………Page 426……………………………………………………………

SQL 21  日自学通(V1。0)                                                               翻译人     笨猪 



     1》 declare @COUNT int 



     2》 select @COUNT = 1 



     3》 while (@COUNT 《 10) 



     4》 begin 



     5》            select  @COUNT  =  @COUNT  +  1 



     6》            if  (@COUNT  =  8) 



     7》            begin 



     8》                        continue 



     9》            end 



     10》          else 



     11》          begin 



     12》                      print  〃LOOP  AGAIN!〃 



     13》          end 



     14》 end 



     15》 print 〃LOOP FINISHED!〃 



分析 



     除了用 COUNTINUE  替换了 BREAK 以外  例 19。9 与 19。8 是一样的                         与当 COUNT=8 



时即出循环不同  本例只是跳到的循环的起使部分继续执行 



使用 WHILE 循环在表中翻阅 



     SQL  SERVER  与与其它的数据库系统都有一个特殊类型的对象— — 游标                                    它可以让你 



一次一行地翻阅表中的记录  参见第 13 天                        但是  有一些数据库系统  包括 SQL SERVER 



PER…SYSTEM  10      都不支持翻阅游标的使用  在例 19。10  中我们给出了如果系统不支持游 



标是如何使用 WHILE 循环来实现简单的游标功能 



例 19。10 



     你可以使用 WHILE  循环来一次一个地翻阅表中的记录                               TRANSACT…SQL       所存储的 



ROWCOUNT 数值可以告诉 SQL  SERVER 一次从查询中返回一条记录                                  如果你使用的是其 



它的数据库产品              那么你需要确认一下该产品是否有与之类似的设置                                       通过设置 



                                                                                          426 


…………………………………………………………Page 427……………………………………………………………

SQL 21  日自学通(V1。0)                                                        翻译人    笨猪 



ROWCOUNT     的值为 1      默认值为 0      也就是不受限制           SQL  SERVER  可以一次只从查询 



中返回一条记录  你可以使用这条记录来进行你想要的任何操作                                  当将一个表的内容存入 



临时表然后将其删除时              你就可以一次选择一行              在你工作结束后将它删除               当表中的所 



有行都被选择出以后            你就将表中的所有行都删除了                  所以我们说它只实现了非常简单的 



游标功能       现在让我们来运行一个这个例子 



输入 



    1》 set rowcount 1 



    2》 declare @PLAYER char(30) 



    3》 create table temp_BATTERS ( 



    4》 NAME char(30); 



    5》 TEAM int; 



    6》 AVERAGE float; 



    7》 HOMERUNS int; 



    8》 RBIS int) 



    9》 insert temp_BATTERS 



    10》 select * from BATTERS 



    11》 while exists (select * from temp_BATTERS) 



    12》 begin 



    13》            select  @PLAYER  =  NAME  from  temp_BATTERS 



    14》            print  @PLAYER 



    15》            delete  from  temp_BATTERS  where  NAME  =  @PLAYER 



    16》 end 



    17》 print 〃LOOP IS DONE!〃 



分析 



    注意     当你设置了 ROWCOUNT          的数值以后  你只是改变了从 SELECT  语句中返回的 



行数    如果 DELETE 命令的 WHERE 子句返回了 5 条记录的话  那么 5 行都将被删除                               同 



时也要注意 ROWCOUNT           也可以在循环重设           因此  在这个循环中           你可以通过重新设置 



ROWCOUNT  的值来查询数据库中的一些其它的信息 



                                                                                  427 


…………………………………………………………Page 428……………………………………………………………

SQL 21  日自学通(V1。0)                                      翻译人  笨猪 



TRANSACT…SQL  中的通配符 



   在 SQL  中使用通配符的内容是在第 3       天的  表达式     条件与操作    中介绍的  LIKE 



可以让你在 SQL 语句中使用通配符  通配符的使用增加了灵活性  在 TRANSACT…SQL  中 



可供使用的通配符如下 



   l   下划线可以代表任何单个的字符 例如 _MITH 就是查询 5 个字符并且是以 MITH 



       结尾的 



   l   百分号可以代表一个或多个字符          例如  WILL%通配符可以返回 WILLIAMS      和 



      WILL 



   l   中括号可以匹配在括号内的字符  例如  'ABC'可以查询包括 A             B C 的字符串 



   l  如果在中括号中使用了脱字符^          那就是说匹配所有的字符但不包括中括号中给出 



       的  例如   '^ABC'表示查询所有的字符      除了 A  B  C 



使用 PUTE 来生成摘要报告 



   TRANSACT…SQL 也具有生成摘要报告的能力  其命令为 PUTE            它的语法与它 



在 SQL*PLUS  的语法极为相似  见第 20 天的     SQL*PULS 



   下边的查询将会产生关于所有击球手的报告  包括每个击球手的本垒数和所有击球手 



总的本垒数 



输入 



   select  name;  homeruns    from  batters    pute  sum(homeruns) 



分析 



   在上一个例子中      PUTE 独自对报告进行了估算        然而 PUTE  BY  则可以对 



整个报告进行分组评估        如下例所示 



语法 



   PUTE FUNCTION(expression) 'BY expression' 



     where the FUNCTION might include SUM; MAX; MIN; etc。 and 



     EXPRESSION is usually a column name or alias。 



                                                             428 


…………………………………………………………Page 429……………………………………………………………

SQL 21  日自学通(V1。0)                                                 翻译人    笨猪 



日期转换 



    SYBASE 与 MICROSOFT SQL SERVER 可以向表中插入不同格式的日期  它们也可以 



用不同的格式来表达日期  在这一部分将告诉你如何使用 SQL  SERVER                         的 CONVERT    来 



实现多种形式的日期显示方法 



语法 



    CONVERT (datatype '(length)'; expression; format) 



    在 SQL SERVER 中使用 CONVERT  时有下列日期格式是可用的 



                 Format code  Format picture 

                 100          mon dd yyyy hh:miAM/PM 

                 101          mm/dd/yy 

                 102          yy。mm。dd 

                 103          dd/mm/yy 

                 104          dd。mm。yy 

                 105          dd…mm…yy 

                 106          dd mon yy 

                 107          mon dd; yy 

                 108          hh:mi:ss 

                 109          mon dd; yyyy hh:mi:ss:mmmAM/PM 

                 110          mm…dd…yy 

                 111          yy/mm/dd 

                 112          yymmdd 



输入 



    select 〃PayDate〃 = convert(char(15); paydate; 107) from payment_table where customer_id = 012845 



输出 



    PayDate 



    May 1; 1997 



分析 



    在上例中使用的 CONVERT  转换格式中的 107              从上表中可以知道          107 将以 MON 



DD   YY 的形式显示日期 



SQL SERVER 的诊断工具—  — SET 命令 



    TRANSACT…SQL    提供了一系列的 SET         命令可以让你打开不同的选项以帮助分析 



TRANSACT…SQL 的语句  这里给出了一些常见的 SET 命令 



    l   SET STATISTICS IO ON 可以让服务器返回请示的物理和逻辑页数 



                                                                           429 


…………………………………………………………Page 430……………………………………………………………

SQL 21  日自学通(V1。0)                                  翻译人  笨猪 



   l  SET STATISTICS TIME O 可以让服务器返回语句的运行时间 



   l  SET SHOWPLAN ON  可以让服务器返回当前正在运行的计划中的查询 



   l  SET NOEXEC ON 可以让服务器编译设计过的查询但不运行 



   l  SET PARSONLY ON 可以让服务器对所设计的查询进行语法检查  但并不运行 



   TRANSACT…SQL 也提供下边的命令来帮助你对输出的显示进行控制 



   l  SET ROWCOUNT N 可以让服务器只返回查询中的前 N 行 



   l  SET NOCOUNT ON 不必报告查询所返回的行数 



注  如果你对 TRANSACT…SQL 的语句调整比较关心 SQL     那么请参见第 15 天的  对 SQL 



   语句的优化以提高性能 



总结 



   今天所讨论的主题增加了你对使用 SQL  编程的一些知识          
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!