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

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

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





     COFFEE MUG                06。95 



     FAR SIDE CALENDAR         10。50 



     NATURE CALENDAR           12。99 



     SQL MAND REFERENCE     29。99 



     BLACK LEATHER BRIEFCASE   99。99 



分析 



   在 HEADING  命令中的管道符号      | 可以强制在它后边的文本跳到下一个输出区  你 



也许会使用多个管道符号  当你的报表受到最大行长的限制时这是很方便的                      注意单价的 



格式是 09。99  最大的允许显示的数字仍然是 99。99       但是现在零会出现在所有的小于 10 的 



数字的前边  你也许会更喜欢这种格式因为它会使美元的格式看起来更整齐一些 



报表与分类汇总 



   如果报表没有汇总和计算还有什么用呢             那只能说明我们是一个失败的程序员             在 



SQL*PLUS 中有一些命令可以让你将报表的数据进行分组并对每一组进行汇总计算 



BREAK  与标准的 SQL  的分组功能有一些不同  如 COUNT          和 SUM     这些函数在 



报表和分类汇总中应用以提供更完备的报表 



BREAK ON 



   BREAK  ON 命令可以把从 SQL    中返回的数据分成一个或多个组  如果你依据用户的 



名字进行分类  那么默认的客户名字将只会打印一次               以后对应的客户名字就以空白代替 



了  下边的 BREAK ON 的基本使用语法 



语法 



   BRE'AK' 'ON column1 ON column2。。。''SKIP n|PAGE''DUP|NODUP' 



   你也可以使用 BREAK ON REPORT  或 BREAK ON ROW    ON REPORT  时会对整个报 



表进行计算     ON ROW 时则是对每一组的行进行计算 



   SKIP  选项可以让你跳过每一组的指定行数或页数  DUP           或 NODUP 可以让你确定是 



                                                             451 


…………………………………………………………Page 452……………………………………………………………

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



否进行双面打印  默认是单面的 



见下例 



输入 



    SQL》 col unit_cost head 'UNIT|COST' for 09。99 



    SQL》 break on customer 



    SQL》 select o。customer; p。product_name; p。unit_cost 



        2    from  orders  o; 



        3              products  p 



        4    where  o。product_id  =  p。product_id 



        5    order  by  customer; 



输出 



     CUSTOMER                        PRODUCT_NAME                    UNITCOST 



    JONESandSONS                     MICKEYMOUSELAMP                 29。95 



                                     NO2PENCILS…20PACK               01。99 



                                     COFFEEMUG                       06。95 



    PARAKEETCONSULTINGGROUP          MICKEYMOUSELAMP                 29。95 



                                     NO2PENCILS…20PACK               01。99 



                                     SQLMANDREFERENCE             29。99 



                                     BLACKLEATHERBRIEFCASE           99。99 



                                     FARSIDECALENDAR                 10。50 



    PLEWSKYMOBILECARWASH             MICKEYMOUSELAMP                 29。95 



                                     BLACKLEATHERBRIEFCASE           99。99 



                                     BLACKLEATHERBRIEFCASE           99。99 



                                     NO2PENCILS…20PACK               01。99 



                                     NO2PENCILS…20PACK               01。99 



    每一个客户只被打印了一次               当打印多个客户名时这个报表是非常易读的                       排序是与 



在你使用 BREAK 时所指定的排序列是相同的 



PUTE 



    在 BREAK  ON  命令中也可以使用 PUTE 命令                它可以让你对整个报表或报表中 



的每个组进行不同的计算 



语法 



                                                                              452 


…………………………………………………………Page 453……………………………………………………………

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



    P'UTE'  function    OF  column_or_alias    ON  column_or_row_or_report 



    常用的一些函数有 



        l  AVG…对每个组的平均值进行计算 



        l  COUNT…计算每个组中的数据的个数 



        l  SUM…计算每个组的总计结果 



    如果你想创建一个报表  它打印 PRODUCT              表的内容并在报表中对产品的平均价格进 



行计算 



输入 



    SQL》 break on report 



    SQL》 pute avg of unit_cost on report 



    SQL》 select * 



        2    from  products; 



输出 



      PRO    PRODUCT_NAME                      UNIT_COST 



      P01    MICKEY MOUSE LAMP                 29。95 



      P02    NO 2 PENCILS 20 PACK             1。99 



      P03    COFFEE MUG                        6。95 



      P04    FAR SIDE CALENDAR                  10。50 



      P05    NATURE CALENDAR                    12。99 



      P06    SQL MAND REFERENCE             29。99 



      P07    BLACK LEATHER BRIEFCASE           99。99 



      Avg                                      27。48 



分析 



    你可以通过对报表的分组和对平均价格的计算来得到你想要的信息 



    还记得 CLEAR    命令吗     现在清除上一次的计算结果并再运行一次                  这次你想计算的 



是每个客户的付费情况           由于你不想再见到平均值  所以你应该清除计算的结果 



输入 



    SQL》 clear pute 



输出 



    putes cleared 



    现在  将上一次的 BREAK  清除  在这种情况下你其实不需要 BREAK                     因为你还是想 



                                                                         453 


…………………………………………………………Page 454……………………………………………………………

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



要对报表进行 BREAK 的 



输入 



    SQL》 clear break 



输出 



    breaks cleared 



    然后你按照你的需要对它们重新进行 BREAK                        和计算      你也许需要重新格式化 



COST_UNIT   列以使得当你进行求和时它可以接受更大的数字                         你需要给它更大的显示空 



间  这样它们看起来才会漂亮  所以你需要在十进数的左边增加一些空间 



输入 



    SQL》 col unit_cost hea 'UNIT|COST' for 099。99 



    SQL》 break on report on customer skip 1 



    SQL》 pute sum of unit_cost on customer 



    SQL》 pute sum of unit_cost on report 



    现在    我们来看一下在缓冲区中的上一个语句 



输入 



    SQL》 l 



输出 



        1    select  o。customer;  p。product_name;  p。unit_cost 



        2    from  orders  o; 



        3              products  p 



        4    where  o。product_id  =  p。product_id 



      5* order by customer 



    现在你可以验证情况是否如你所期望的那样  你可以运行它 



输入 



    SQL》 / 



输出 



                                                                           UNIT 

CUSTOMER                           PRODUCT_NAME 

                                                                           COST 



JONESandSONS                       MICKEY MOUSE LAMP                       029。95 



                                   NO 2 PENCILS…20PACK                     001。99 



                                                                               454 


…………………………………………………………Page 455……………………………………………………………

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



                                 COFFEEMUG                              006。95 



sum                                                                     038。89 



PARAKEET CONSULTING GROUP        MICKEY MOUSE LAMP                      029。95 



                                 NO 2 PENCILS…20PACK                    001。99 



                                 SQL MAND REFERENCE                  029。99 



                                 BLACK LEATHER BRIEFCASE                099。99 



                                 FAR SIDE CALENDAR                      010。50 



sum                                                                     172。42 



PLEWSKY MOBILE CARWASH           MICKEYMOUSELAMP029。95 



                                 BLACK LEATHER BRIEFCASE                099。99 



                                 BLACK LEATHER BRIEFCASE                099。99 



                                 NO 2 PENCILS…20PACK                    001。99 



                                 NO 2 PENCILS…20PACK                    001。99 



                                                                       UNIT 

CUSTOMER                         PRODUCT_NAME 

                                                                        COST 



sum                                                                     233。91 



sum                                                                     445。22 



分析 



    这个例子对每个客户的付款情况进行了计算总对所以客户的付款情况进行了汇总 



    现在你应用明白的基本的列格式命令                 数据分组命令和对每一组执行计算的内容了 



在 SQL*PLUS  中使用变量 



    尽管没有进行事实上的程序设计语言中                   但是你仍然可以在你的 SQL  语句中定义变 



量  在 SQL*PLUS    中你可以使用一些特定的选项  将在这一部分中讲述                       来在你的程序中 



设定参数来接受用户的输入 



    置换变量      & 



    在 SQL  脚本中&表示变量的值            如果变量没有进行预定义  那么用户会收到输入数值 



的提示 



输入 



    SQL》  select  *      from  &TBL 



    1    / 



    Enter value for tbl: products 



    用户输入数值〃products。〃 



                                                                           455 


…………………………………………………………Page 456……………………………………………………………

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



输出 



    old      2:  from  &TBL 



    new      2:  from  products 



        PRO     PRODUCT_NAME                       UNIT_COST 



        P01   MICKEY MOUSE LAMP                    29。95 



        P02   NO 2 PENCILS 20 PACK               1。99 



        P03   COFFEE MUG                           6。95 



        P04   FAR SIDE CALENDAR                    10。5 



        P05   NATURE CALENDAR                      12。99 



        P06   SQL MAND REFERENCE                29。99 



        P07     BLACK  LEATHER  BRIEFCASE          99。99 



分析 



    在这个交互式查询中 PRODUCT  替换了原来的&TBL 



DEFINE 



    在 SQL  的脚本中你可以使用 DEFINE 来对一个变量赋值                     如果在你的 SQL  脚本中定 



义了变量      那么在运行时用户不会像你使用&时那样被提示输入数值  在下一个例子中使 



用与上一个例子相同的 SELECT 语句  但是这次 TBL  的值是在脚本中定义的 



输入 



    SQL》 define TBL=products 



    SQL》 select * from &TBL; 



输出 



    old      2:  from  &TBL 



    new      2:  from  products 



PRO       PRODUCT_NAME                  UNIT_COST 



P01     MICKEY MOUSE LAMP               29。95 



P02     NO 2 PENCILS 20 PACK          1。99 



P03     COFFEE MUG                      6。95 



P04     FAR SIDE CALENDAR               10。5 



P05     NATURE CALENDAR                 12。99 



P06     SQL MAND REFERENCE           29。99 



P07     BLACK LEATHER BRIEFCASE         99。99 



                                                                              456 


…………………………………………………………Page 457……………………………………………………………

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



分析 



    这两个查询的结果是相同的               下边的部分将向您介绍对于脚本参数的另外一种向用户 



提示的办法 



ACCEPT 



    ACCEPT  可以在运行时允许用户向变量中输入数值  它所作的工作与没有 DEFINE                              的 



&相同  但它的可控性更好             它可以给用户一个更好友好的提示 



    下边的例子将从清除缓冲区开始 



输入 



    SQL》 clear buffer 



输出 



    buffer cleared 



    然后我们使用 INPUT        命令来向缓冲区中输入 SQL  语句               如果你输入语句时没有从 



INPUT  开始    你开始会被提示为 NEWTITLE           输入一个值        当然  你也可以建立一个新文 



件并在其中输入你的语句 



输入 



    SQL》 input 



      1  accept newtitle prompt 'Enter Title for Report: ' 



        2    ttitle  center  newtitle 



        3    select  * 



        4    from  products 



        5 



    SQL》 save prod 



输出 



    File 〃prod。sql〃 already exists。 



    Use another name or 〃SAVE filename REPLACE〃。 



分析 



    咦  这个文件怎么已经存在了              这就是说你已经有一个叫 PROD。SQL              的文件了  如果 



你不想保留它         你可以使用覆盖选项来保存缓冲区中的内容                        注意在上一个语句中的 



                                                                             457 


…………………………………………………………Page 458……………………………………………………………

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



PROMPT     它将会向用户显示文本信息以准确地告诉用户应该输入什么 



输入 



     SQL》 save prod replace 



输出 



    Wrote file prod 



     现在你可以使用 START 命令来运行这个文件了 



输入 



     SQL》 start prod 



    Enter Title for Report: A LIST OF PRODUCTS 



输出 



                                                        A  LIST  OF  PRODUCTS 



       PRO PRODUCT_NAME                          UNIT_COST 



       P01 MICKEY MOUSE LAMP                       29。95 



       P02 NO 2 PENCILS 20 PACK                    1。99 



       P03 COFFEE MUG                               6。95 



       P04 FAR SIDE CALENDAR                         10。5 



       P05 NATURE CALENDAR                          12。99 



       P06 SQL MAND REFERENCE                   29。99 



       P07 BLACK LEATHER BRIEFCASE                 99。99 



    7 rows selected。 



分析 



     你输入的文字成了当前报表的题头 



     下边的例子向你显示了你如果替换在语句中的任何变量的值 



输入 



     SQL》 input 



      1  accept prod_id prompt 'Enter PRODUCT ID to Search for: ' 



        2    select  * 



        3    from  products 



        4    where  product_id  =  '&prod_id' 



        5 



     SQL》 save prod1 



                                                                                     458 


…………………………………………………………Page 459……………………………………………………………

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



输出 



    Created file prod1 



输入 



    SQL》 start prod1 



    Enter PRODUCT ID to Search for: P01 



输出 



    old      3: where product_id = '&prod_id' 



    new      3:  where  product_id  =  'P01' 



                                              A  LIST  OF  PRODUCTS 



    PRO PRODUCT_NAME           UNIT_COST 



    P01 MICKEY MOUSE LAMP      29。95 



分析 



    你可以在许多的需要中见到变量的使用                 例如    为你想要重新定向输出的文件命名或 
返回目录 上一页 下一页 回到顶部 9 9
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!