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

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

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






是指与个表内的行与本表内的数据相互进行联合  产生的结果行数取决于参加联合的行数 



也就是说内部联合的行数取决于 WHERE            子句的结果      外部联合则是表间的联合  如上例 



中的 ORDERS 表与 PART 表的联合       内部联合的例子如下 



INPUT 



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



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



OUTPUT 



     PARTNUM     DESCRIPTION     PRICE   NAME         PARTNUM 



     54          PEDALS          54。25   BIKESPEC     54 



     42          SEATS           24。50   BIKESPEC     54 



     46          TIRES           15。25   BIKESPEC     54 



     23          MOUNTAIN BIKE   350。45  BIKESPEC     54 



     76          ROAD BIKE       530。00  BIKESPEC     54 



      10         TANDEM          1200。00 BIKESPEC     54 



注  在这里你使用的语法中的 JOIN  ON  不是 ANSI  标准中所指定的            而是我们所使用的解 



释器的附加语法       你可以用它来指明是内部联合还是外部联合                大多数解释器对些都进行 



了类似的扩充  注意这种类型的联合没有 WHERE 子句 



分析 



    结果表明 PART   表中的所有的行都与 PARTNUM  为 54       的行进行了组合  再来看一个 



外部右联合的例子 



INPUT/OUTPUT 



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



RIGHT OUTER JOIN ORDERS O ON ORDERS。PARTNUM = 54 



  PARTNUM     DESCRIPTION        PRICE    NAME              PARTNUM 



                                                                  132 


…………………………………………………………Page 133……………………………………………………………

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



   PARTNUM        DESCRIPTION               PRICE      NAME                    PARTNUM 



                                     TRUE      WHEEL          23 



                                     TRUE      WHEEL          76 



                                     TRUE      WHEEL          10 



                                     TRUE      WHEEL          42 



   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 



                                     BIKE        SPEC         10 



                                     BIKE        SPEC         23 



                                     BIKE        SPEC         76 



                                     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   
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!