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

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

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






     5;000;000;000  行 



7    下边的联接属于哪一种类型的联接 



SELECT E。NAME ; E 。EMPLOYEE_ID; EP 。SALARY FROM EMPLOYEE_TBL E; EMPLOYEE_PAY_TBL EP 



WHERE E 。EMPLOYEE_ID = EP 。EMPLOYEE_ID 



这是一个等值联接               你可以从中发现所以存在于两个表中的雇员 ID 



8    下边的查询语句能否工作 



    A 。 SELECT NAME; EMPLOYEE_ID; SALARY FROM EMPLOYEE_TBL E; EMPLOYEE_PAY_TBL EP 



         WHERE  EMPLOYEE_ID = EMPLOYEE_ID AND NAME LIKE '%MITH'; 



不会      列句和表名不正确  要注意使用列和表的别名 



                                  select  e。name;  e。employee_id;  ep。salary 



                                  from  employee_tbl  e; 



                                            employee_pay_tbl  ep 



                                  where  name  like  '%MITH'; 



    B。 SELECT E。NAME ; E。EMPLOYEE_ID; EP。SALARY FROM EMPLOYEE_TBL E; EMPLOYEE_PAY_TBL EP 



      WHERE NAME LIKE  '%MITH'; 



不会  在 WHERE 子句中没有联接命令 



                                    select  e。name;  e。employee_id;  ep。salary 



                                    from  employee_tbl  e; 



                                              employee_pay_tbl  ep 



                                    where  e。employee_id  =  ep。employee_id 



                                      and  e。name  like  '%MITH'; 



    C。 SELECT E。NAME ; E。EMPLOYEE_ID; EP。SALARY FROM EMPLOYEE_TBL E;EMPLOYEE_PAY_TBL EP 



       WHERE  E 。EMPLOYEE_ID = EP 。EMPLOYEE_ID AND E。NAME LIKE '%MITH'; 



     正确的 



                                                                                                 542 


…………………………………………………………Page 543……………………………………………………………

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



9   是否在联接语句中 WHERE 子句中的第一个条件应该是联接条件 



    联接命令应该在条件的前边 



10       联接是否限制为一列             是否可以有更多的列 



       可以 



练习答案 



    4    在表的自我联接这部分             最后的一个例子返回了两个结果  请重写这个查询使它对 



        多余的记录只返回一个结果 



        INPUT/OUTPUT: 



        SELECT F。PARTNUM; F。DESCRIPTION; 



        S。PARTNUM;S。DESCRIPTION 



        FROM PART F; PART S 



        WHERE F。PARTNUM = S。PARTNUM 



        AND F。DESCRIPTION  S。DESCRIPTION 



        AND F。DESCRIPTION 》 S。DESCRIPTION 



PARTNUM           DESCRIPTION         PARTNUM            DESCRIPTION 



76                ROAD BIKE                      76      CLIPPLESS SHOE 



    5    重写下边的查询使它更可读和简炼 



         INPUT: 



         select orders。orderedon; orders。name; part。partnum;part。price; part。description 



         from orders; part 



         where orders。partnum = part。partnum and orders。orderedon 



         between '1…SEP…96' and '30…SEP…96' order by part。partnum 



答   select o。orderedon ORDER_DATE; o。name NAME; p。partnum PART#; 



                      p。price  PRICE;  p。description  DESCRIPTION 



          from  orders  o;  part  p 



          where  o。partnum  =  p。partnum 



                      and  o。orderedon  like  '%SEP%' 



          order  by  ORDER_DATE; 



    6    使用 ORDERS 表和 PART 表         返回下边的结果 



                                                                                    543 


…………………………………………………………Page 544……………………………………………………………

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



    OUTPUT 



          ORDEREDON      NAME            PARTNUM      QUANTITY 



          2…SEP…96       TRUE WHEEL      10           1 



答   Select o。orderedon ORDEREDON; o。name NAME; 



                  p。partnum  PARTNUM;  o。quanity  QUANITY 



        from  orders  o;part  p 



        where  o。partnum  =  p。partnum 



                  and  o。orderedon  like  '%SEP%'; 



还有许多种写法 



第 7 天        子查询         内嵌的 SELECT 语句 



问题答案 



1  在嵌套查询部分        有一个例子中子查询返回了以下几个数值 



         LE SHOPPE 



         BIKE SPEC 



         LE SHOPPE 



         BIKE SPEC 



         JACKS BIKE 



    其中有一些结果是重复的            为什么在最终的结果中没有出现重复 



    由于查询调用了子查询  所以在最后的结果中没有出现重复 



        SELECT ALL C。NAME; C。ADDRESS; C。STATE;C。ZIP 



        FROM CUSTOMER C 



        WHERE C。NAME IN 



    只会返回 NAME 的州为 IN  的记录  这里不要为 IN 在复杂语句里的简写所迷糊 



2  下面的话是对还是错 



      4   汇总函数如 SUM      AVG   COUNT   MAX    MIN  都返回多个数值        不对  它们 



         都返回多个数值 



      5   子查询最多允许嵌套两层            不对  嵌套层数的限制是根据你的解释器而定的 



      6   相关子查询是完全的独立查询              不对  相关子查询中你使用外部引用 



                                                                          544 


…………………………………………………………Page 545……………………………………………………………

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



3  下边的子查询中哪一个是使用 ORDERS 表和 PART 表工作的 



    INPUT/OUTPUT 



    SQL》 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 



INPUT/OUTPUT 



SQL》 SELECT * FROM ORDERS 



     ORDEREDON        NAME             PARTNUM      QUANITY        REMARKS 



     15…MAY…96        TRUE WHEEL       23           6              PAID 



     19…MAY…96        TRUE WHEEL       76           3              PAID 



     2…SEP…96         TRUE WHEEL       10           1              PAID 



     30…JUN…96        BIKE SPEC        54            10            PAID 



     30…MAY…96        BIKE SPEC        10           2              PAID 



     30…MAY…96        BIKE SPEC        23           8              PAID 



     17…JAN…96        BIKE SPEC        76            11            PAID 



     17…JAN…96        LE SHOPPE        76           5              PAID 



     1…JUN…96         LE SHOPPE        10           3              PAID 



     1…JUN…96         AAA BIKE         10           1              PAID 



     1…JUN…96         AAA BIKE         76           4              PAID 



     1…JUN…96         AAA BIKE         46            14            PAID 



     11…JUL…96        JACKS BIKE       76            14            PAID 



    A   SQL》 SELECT * FROM ORDERS WHERE PARTNUM = 



             SELECT PARTNUM FROM PART 



             WHERE DESCRIPTION = 'TRUE WHEEL'; 



             不对  在子查询的周围没有括号 



    B  SQL》 SELECT PARTNUM FROM ORDERS WHERE PARTNUM = 



             (SELECT * FROM PART 



             WHERE DESCRIPTION = 'LE SHOPPE') 



      不会     SQL 引擎在=操作后边关联表所的所有了 



                                                                               545 


…………………………………………………………Page 546……………………………………………………………

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



    C  SQL》 SELECT NAME; PARTNUM FROM ORDERS WHERE EXISTS 



           (SELECT * FROM ORDERS 



           WHERE NAME = 'TRUE WHEEL') 



         对的    这个查询是正确的 



练习答案 



    应用 ORDERS 表来写一个查询 返回所以字母顺序排列在 JACKS BIKE 之后的NAMES 



和 ODEREDON 数据 



INPUT/OUTPUT: 



    SELECT NAME; ORDEREDON 



    FROM ORDERS 



    WHERE NAME 》 



           (SELECT NAME 



           FROM ORDERS 



           WHERE NAME ='JACKS BIKE') 



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