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

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

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





    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             PAID 



     2…SEP…1996       TRUE WHEEL      10            1             PAID 



     30…JUN…1996      TRUE WHEEL      42            8             PAID 



     30…JUN…1996      BIKE SPEC       54            10            PAID 



     30…MAY…1996      BIKE SPEC       10            2             PAID 



     30…MAY…1996      BIKE SPEC       23            8             PAID 



     17…JAN…1996      BIKE SPEC       76            11            PAID 



     17…JAN…1996      LE SHOPPE       76            5             PAID 



     1…JUN…1996       LE SHOPPE       10            3             PAID 



     1…JUN…1996       AAA BIKE        10            1             PAID 



     1…JUL…1996       AAA BIKE        76            4             PAID 



     1…JUL…1996       AAA BIKE        46            14            PAID 



     11…JUL…1996      JACKS BIKE      76            14            PAID 



分析 



    两表的共有字段是 PARTNUM             假如你不知道         或者是不想知道         这个字段      但是你 



又想用 PART 表的 description 字段来工作          这时可以使用子查询  语句如下 



    INPUT/OUTPUT 



    SELECT * FROM ORDERS WHERE PARTNUM = 



    (SELECT PARTNUM FROM PART WHERE DESCRIPTION LIKE 〃ROAD%〃) 



     ORDEREDON       NAME             PARTNUM       QUANTITY      REMARKS 



     19…MAY…1996      TRUE WHEEL      76            3             PAID 



     17…JAN…1996      BIKE SPEC       76            11            PAID 



     17…JAN…1996      LE SHOPPE       76            5             PAID 



     1…JUL…1996       AAA BIKE        76            4             PAID 



     11…JUL…1996      JACKS BIKE      76            14            PAID 



分析 



                                                                              139 


…………………………………………………………Page 140……………………………………………………………

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



    更进一步      如果你使用了在第六天中的概念                  你可以使 PARTNUM       列带有 



DESCRIPTION   这样就会使那些对 PARTNUM 还不太清楚的人看得更明白些                  如下例 



INPUT/OUTPUT 



SELECT O。ORDEREDON   O。PARTNUM   P。DESCRIPTION  O。QUANTITY   O。REMARKS 



FROM ORDERS O   PART P  WHERE O。PARTNUM = P。PARTNUM 



AND O。PARTNUM =(SELECT PARTNUM FROM PART 



WHERE DESCRIPTION LIKE 〃ROAD%〃) 



   ORDEREDON     PARTNUM      DESCRIPTION   QUANTITY    REMARKS 



   19…MAY…1996   76           ROAD BIKE     3          PAID 



   1…JUL…1996    76           ROAD BIKE     4           PAID 



   17…JAN…1996   76           ROAD BIKE     5           PAID 



   17…JAN…1996   76           ROAD BIKE     11          PAID 



   11…JUL…1996   76           ROAD BIKE     14          PAID 



分析 



    查询的第一部分非常熟悉 



    SELECT O。ORDEREDON   O。PARTNUM   P。DESCRIPTION  O。QUANTITY 



    O。REMARKS FROM ORDERS O    PART P 



    这里使用了别名 O 和 P  来指定了在 ORDERS  和 PART  表中你所感兴趣的 5  列  对于 



你要访问的在两个表中的名字唯一的列别名是没有必要的  可是它可以使你的语句更具有 



可读性  你看到的第一个 WHERE 子句内容如下 



    WHERE O。PARTNUM = P。PARTNUM 



    它是将 ORDERS 与 PART 表进行归并的标准语句            如果你没有使用 WHERE 子句  那 



么你将会得到两个表的记录的所有可能的组合  接下来就是子查询语句                          内容如下 



AND O。PARTNUM =(SELECT PARTNUM FROM PART WHERE DESCRIPTION LIKE 〃ROAD%〃) 



增加的限制使你的 PARTNUM  内容必须与你的子查询所返回的结果相等  子查询则非常简 



单  它要求返回以 ROAD%相符的 PARTNUM            使用 LIKE  语句是一种懒人的办法          使得 



你不必键入 ROAD  BIKE     但是这只是你侥幸         如果在 PART   表中加入了一个新的记录名 



字为 ROADKILL 时呢  这时 PART 表的内容如下 



INPUT/OUTPUT 



    SELECT * FROM PART 



            PARTNUM     DESCRIPTION             PRICE 



                                                                     140 


…………………………………………………………Page 141……………………………………………………………

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



             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 



             77           ROADKILL                   7。99 



如果你没有觉察到这些改变而仍然使用原来的查询的话  你将会得到如下信息 



    multiple rows in singleton select 



你没有得到任何结果  SQL 的响应信息可能不会相同  但是你都会同样地得不到任何结果 



想知道为什么会有这样的结果  请想一个 SQL 引擎的处理规则  你需要重新核查一下你的 



子查询  请输入 



    INPUT/OUTPUT 



    SELECT PARTNUM FROM PART WHERE DESCRIPTION LIKE 〃ROAD%〃 



   PARTNUM 



   76 



   77 



    你会把这个结果赋给 O。PARTNUM =            就是这一步导致的错误 



分析 



    PARTNUM  怎么能同时匹配 76 和 77  呢  解释器一定会给你这样的信息的                       因为你是 



一个懒家伙       当你使用 LIKE     子句的时候       你就已经开始了犯错误的道路               如果你想使用 



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