友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
第三电子书 返回本书目录 加入书签 我的书架 我的书签 TXT全本下载 『收藏到我的浏览器』

SQL 21日自学通(V3.0)(PDF格式)-第74部分

快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!




    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  编程的一些知识           关于基本的 SQL   内容你已 



经在前些天学习过了      它为你进行数据库编程打下了一个良好的基础  但是             这些内容只 



是基本的东西     SQL  过程语言的概念已经在昨天解释过了         今天你又学习了一种基本的 



SQL 这对于你—  — 数据库程序员 — — 在访问数据库时提供了强大的功能 



   在 SYBASE 和 MICROSOFT  的 SQL  SERVER 中的 TRANSACT…SQL 提供了许多你可 



以在第三代编程语言和第四代编程语言中可以找到的编程结构  这包括 IF               条件与 WHILE 



循环以及局部和全局变量的定义能力 



   需要明白的是今天所介绍的内容只是 TRANSACT…SQL        的基本特性和技术  并对所有 



你可用的工具有了一个感性的认识  对于它的更详细的内容你需要参见 MICROSOFT  SQL 



SERVER 的 TRANSACT…SQL 文档 



问与答 



问  在 SQL 中是否提供了 FOR 循环 



答  像 FOR 循环  WHILE 循环以及 CASE 分支等都是对 ANSI 标准的 SQL  的扩展  所以 



   对于不同的数据库系统它们的使用方法有很大的不同 例如 在 ORACLE 中提供了 FOR 



   循环  而在 TRANSACT…SQL  中就没有提供  当然  可以在 WHILE 循环都使用一个变 



   量来模拟 FOR 循环 



                                                         430 


…………………………………………………………Page 431……………………………………………………………

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



问  如果我写一个 GUI   风格的 WINDOWS  或 MACINTOSH  应用程序   其中有对话框 



   之类的元素  这时我是否可以使用 PRINT 语句来向用户输出信息 



答  SQL 与平台是完全独立的  所以 PRINT 语句不能将信息输出至对话框中          如果你想输 



   出信息给用户  你的 SQL  过程将会返回一个预定义的值来表示成功或失败            而用户则 



   可以从查询的状态中得到通知        PRINT 命令在调试时最有用     因为在存储过程中的 



  PRINT 命令将不会总是向屏幕输出 



校练场 



问  在 ORACLE 的 PL/SQL  中与在 TRANSACT…SQL  中 SQL  字的使用方法与 ANSI  标准 



   的 SQL 是完全相同的  对不对 



问  静态的 SQL 比动态的 SQL 灵活性差  尽管它的性能要比动态的好  对不对 



练习 



1  如果你没有使用 SYBASE 或 MICROSOFT  的 SQL  SERVER 那么请你比较一个你的产 



  品对 SQL 的扩展与今天所讲的有何不同 



2  写一组 SQL 语句  它可以对一些已知的条件进行检测        如果条件为真  执行一些操作 



  否则的话执行另一些操作 



                                                       431 


…………………………………………………………Page 432……………………………………………………………

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



第 20 天     SQL*PLUS 



目标 



   今天你将会学习 SQL*PLUS   这种 SQL 是针对 ORACLE  的 RDBMS 的  在今天的结 



束  你将会明白 SQL*PLUS  的下述内容 



   l  如何使用 SQL*PLUS  的缓存 



   l  如何格式化报表 



   l  如何操作日期 



   l  如何创建交互式查询 



   l  如何构建高级报表 



   l  如何使用强大的 DECODE 函数 



简介 



   我们介绍 SQL*PLUS 的原因是由于 ORACLE  数据库在关系数据库市场中所处的优势 



地位以及 SQL*PLUS  为用户提供的强大功能及灵活性          SQL*PLUS 在许多方面与 



TRANSACT…SQL 类似 见第 19 天  TRANSACT…SQL  简介 它们都实现了 ANSI  标准 



的 SQL 它仍是所有 SQL 解释器的骨架     的大部能力 



   SQL*PLUS 命令可以增强 SQL 会话能力并对从数据库返回的查询的结果进行格式上的 



增强  它也可以像一个专业化的报表生成器对报表进行格式化            SQL*PLUS 对 ANSI 标准 



的 SQL 和 PL/SQL 进行了补充以帮助关系型数据库程序员们取得满意的数据格式 



SQL*PLUS 缓存 



   SQL*PLUS 缓存是为你特定的 SQL 会话所指定的命令存储区域       这些命令包括大多数 



最近执行过的命令以及你用于定制 SQL 会话的如格式化命令和变量赋值之类的命令               缓存 



就像随机存储器一样  这里给出了一些对缓存的最常用的命令 



   l  LIST line_number — — 可以列出缓存中的命令并可以通过行号将它指定为当前行 



                                                      432 


…………………………………………………………Page 433……………………………………………………………

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



    l   CHANGE/old_value/new_value — — 将缓存当前行的旧数值改为新数值 



    l   APPEND text — — 向缓存所在的当前行中追加文本 



    l   DEL — — 将缓存中的当前行删除 



    l   SAVE newfile — — 将缓存中的 SQL 语句保存到文件中 



    l   GET filename — — 将某文件中的内容送到缓存中 



    l   / — — 运行缓存中的语句 



    让我们用一个简单的 SQL 语句来开始 



输入 



    SQL》 select * from products where unit_cost 》 25; 



输出 



      PRO         PRODUCT_NAME                       UNIT_COST 



      P01        MICKEY MOUSE LAMP                   29。95 



      P06        SQL MAND REFERENCE               29。99 



      P07         BLACK  LEATHER  BRIEFCASE          99。99 



    LIST 命令可以列出在缓存中最近执行过的命令                     输出是非常简单的 



    SQL》 list 



        1    select  * 



        2    from  products 



      3* where unit_cost 》 25 



分析 



    注意  在每一行的前边都有一个数字                   这个数字对于缓存来说非常重要                 它就像一个 



指针一样可以让你通过 SQL*PLUS 来对指定行进行修改                       SQL*Plus  buffer 不是全屏幕编辑 



的  当你按下回车后  你不能使用游标来回到上一行                         如下例所示 



输入 



    SQL》 select * 



        2    from  products 



        3    where  unit_cost  》  25 



      4   / 



注   与 SQL 命令一样        你在 SQL*PLUS  中既可以用大写字符也可以用小写字符 



                                                                               433 


…………………………………………………………Page 434……………………………………………………………

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



技巧    SQL*PLUS  中的大部分命令都可以缩写  例如 LIST 可以缩写为 L 



你可以在 L 后边加上一个数字来跳转到缓存中的指定行 



输入 



    SQL》 l3 



      3* where unit_cost 》 25 



分析 



    注意 3  后边有一个星号        星号表明了当前的行号  在今天的例子中你应该注意星号 



如果一行被标为
返回目录 上一页 下一页 回到顶部 1 1
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!