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

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

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






       是的 



    10    你可以使用在 SELECT 语句中没有出现的列进行排序吗 



     可以  排序时要排序的列不必一定要在 SELECT 语句中出现 



练习答案 



   3   使用上例中的 ORGCHART  表找一下每一个 TEAM  中 SICKLEAVE 天数超过 30  天 



      的人数 



    先来看一下每组有多少个人 



 INPUT: 



       SELECT TEAM; COUNT(TEAM) 



                                                                   540 


…………………………………………………………Page 541……………………………………………………………

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



        FROM ORGCHART 



        GROUP BY TEAM; 



  OUTPUT: 



         TEAM              COUNT 



         COLLECTIONS       2 



         MARKETING         3 



         PR                1 



         RESEARCH          2 



将它与下边的答案比较 



  INPUT: 



        SELECT TEAM; COUNT(TEAM) 



        FROM ORGCHART 



        WHERE SICKLEAVE 》=30 



        GROUP BY TEAM; 



  OUTPUT: 



         TEAM             COUNT 



         COLLECTIONS      1 



         MARKETING        1 



         RESEARCH         1 



输出显示了每一个组中病假数超过 30 天的人 



    4   使用 CHECKS 表     返回如下结果 



           OUTPUT 



       CHECK#           PAYEE       AMOUNT 



       1                MA BELL      150 



        INPUT: 



        SQL》 SELECT CHECK#; PAYEE; AMOUNT 



                  FROM  CHECKS 



                  WHERE  CHECK#  =  1; 



    有多种方法可以完成这个问题               你能找出其它的吗 



                                                                           541 


…………………………………………………………Page 542……………………………………………………………

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



第六天            表的联接 



 问题答案 



6    如果一个表有 50000 行而另一个表有 100000 行时联接的结果会有多少行 



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