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

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

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




                                     LE            SHOPPE     76 



                                     LE            SHOPPE     10 



                                     AAA        BIKE          10 



                                     AAA        BIKE          76 



                                     AAA        BIKE          46 



                                     JACKS    BIKE            76 



分析 



     这是一种新型的查询              这里我们第一次使用了 RIGHT  OUTER  JOIN                   它会令 SQL  返 



回右边表集内的全部记录                 如果当 ORDERS。PARTNUM54             则补以空值         下边是一个左 



联合的例子 



INPUT/OUTPUT: 



SELECT P。PARTNUM        P。DESCRIPTION      P。PRICE   O。NAME     O。PARTNUM 



FROM PART P LEFT OUTER JOIN ORDERS O ON ORDERS。PARTNUM = 54 



        PARTNUM        DESCRIPTION          PRICE       NAME            PARTNUM 



        54               PEDALS              54。25      BIKE SPEC       54 



        42             SEATS                 24。50      BIKE SPEC       54 



        46             TIRES                 15。25      BIKE SPEC       54 



        23             MOUNTAIN BIKE        350。45      BIKE SPEC       54 



        76             ROAD BIKE            530。00      BIKE SPEC       54 



        10             TANDEM                1200。00    BIKE SPEC       54 



分析 



                                                                                        133 


…………………………………………………………Page 134……………………………………………………………

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



    与内部联合的结果一样            都是六行      因为你使用的是左联合  PART            表决定返回的行 



数  而 PART 表比 ORDERS 表小        所以 SQL 把其余的行数都扔掉了 



    不要对内部联合和外部联合操太多的心  大多数的 SQL 产品会判断应该在你的查询中 



使用哪一种联合         事实上  如果你在过程中使用它               或在程序内使用这          包括存储过程和 



将在第 13 天提到的        高级 SQL 使用         你无需指明联合类型  解释器会为你选择合适的 



语法形式      如果你指明的联合类型  解释器会用你指明的类型来代替优化的类型 



    在一些解释器中使用+号来代替外部联合                   +号的意思就是— — 显示我的全部内容包括 



不匹配的内容  语法如下 



    SYNTAX 



    SQL》 select e。name e。employee_id ep。salary ep。marital_status from e;ployee_tbl e; 



              employee_pay_tbl  ep 



         where e。employee_id = ep。employee_id(+) and e。name like '%MITH' 



分析 



    这条语句将会联合两个表             标有+号的 employee_id   将会全部显示        包括不满足条件的 



记录 



表的自我联合 



    今天的最后一个内容是经常使用的自我联合  它的语法与联合两个表的语法相似                                    例 



如  表 1 的自我联合可以写成如下格式 



    INPUT 



    SELECT  *    FROM  TABLE1 TABLE1 



    OUTPUT 



                ROW        REMARKS      ROW         REMARKS 



                row 1      Table 1      row 1       Table 1 



                row 1      Table 1      row 2       Table 1 



                row 1      Table 1      row 3       Table 1 



                row 1      Table 1      row 4       Table 1 



                row 1      Table 1      row 5       Table 1 



                row 1      Table 1      row 6       Table 1 



                row 2      Table 1      row 1       Table 1 



                row 2      Table 1      row 2       Table 1 



                                                                           134 


…………………………………………………………Page 135……………………………………………………………

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



               ROW         REMARKS     ROW        REMARKS 



               row 2       Table 1     row 3      Table 1 



               row 2       Table 1     row 4      Table 1 



               row 2       Table 1     row 5      Table 1 



               row 2       Table 1     row 6      Table 1 



    分析 



        如果把这个表的内容全部列出的话它与联合两个有 6                     行的表是相同的  这种联合 



对于检查内部数据的一致性             如果你的零件生产部门的某人犯了迷糊输入了一个已经存在 



的零件号时将会发生什么呢  这对于每一个人来说都是一个坏消息                            发票会开错  你的应 



用程序会崩溃  会耗掉你许多宝贵的时光                 在下表中      重复的 PARTNUM  会导致问题的产 



生 



INPUT/OUTPUT 



SELECT * FROM PART 



        PARTNUM      DESCRIPTION              PRICE 



        54           PEDALS                    54。25 



        42           SEATS                     24。50 



        46           TIRES                     15。25 



        23           MOUNTAIN BIKE             350。45 



        76           ROAD BIKE                 530。00 



        10           TANDEM                    1200。00 



        76           CLIPPLESS SHOE            65。00提示符以及行号 



建立一个子查询 



   简而言之     子查询可以让你把查询的结果与另一个查询绑定在一起                  通用的语法格式 



如下 



SYNTAX 



   SELECT * FROM TABLE1  WHERE TABLE1。SOMECOLUMN = 



   (SELECT SOMEOTHERCOLUMN FROM TABLE2 



   WHERE SOMEOTHERCOLUMN = SOMEVALUE) 



   注意一下第二个查询是如何嵌入到第一个查询之中的                 这里用 ORDERS  和 PART  表来 



举一个实例 



   INPUT 



   SELECT * FROM PART 



   OUTPUT 



       PARTNUM    DESCRIPTION         PRICE 



      54          PEDALS              54。25 



      42          SEATS               24。50 



      46          TIRES               15。25 



                                                               138 


…………………………………………………………Page 139……………………………………………………………

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



        PARTNUM       DESCRIPTION              PRICE 



        23            MOUNTAIN BIKE            350。45 



        76            ROAD BIKE                530。00 



        10            TANDEM                   1200。00 



    INPUT/OUTPUT 



    SELECT * 



    FROM ORDERS 



     ORDEREDON       NAME             PARTNUM       QUANTITY      REMARKS 



     15…MAY…1996      TRUE WHEEL      23            6             PAID 



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