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

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

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





第三天        表达式       条件语句与运算 



问题答案 



应用下表的内容来回答下列问题 



       LASTNAME    FIRSTNAME   AREACODE   PHONE      ST   ZIP 



       BUNDY       AL          100         555…1111  IL   22333 



       MEZA        AL          200         555…2222  UK 



       MERRICK     BUD         300         555…6666  CO   80212 



       MAST        JD          381         555…6767  LA   23456 



       BULHER      FERRIS      345         555…3223  IL   23332 



       PERKINS     ALTON       911         555…3116  CA   95633 



       BOSS        SIR         204         555…2345  CT   95633 



1   写一下查询  返回数据库中所有名字以 M 开头的每一个人 



    SELECT * FROM FRIENDS WHERE LASTNAME LIKE 'M%'; 



2   写一个查询  返回数据库 ST 为 LA 且 FIRSTNAME  以AL 开头的人 



    SELECT * FROM FRIENDS  WHERE STATE = 'IL'  AND FIRSTNAME = 'AL'; 



3   给你两个表  PART1 和 PART2     你如何才能找出两个表中的共有元素  请写出查询 



    使用 INTERSECT   切记  INTERSECT 将返回两个查询中的公共行 



    SELECT PARTNO FROM PART1 



    INTERSECT 



    SELECT PARTNO FROM PART2; 



4   WHERE a 》= 10 AND a  SELECT (FIRSTNAME || 'FROM') NAME; STATE 



    2    FROM  FRIENDS 



    3    WHERE  STATE  =  'IL'  AND 



    5    LASTNAME  =  'BUNDY' 



OUTPUT 



                           NAME                  ST 



                           AL                  FROM IL 



     仍使用上表  返回以下结果 



NAME                                                   PHONE 



MERRICK;                    BUD                        300…555…6666 



MAST;                       JD                         381…555…6767 



BULHER;                     FERRIS                     345…555…3223 



INPUT: 



SQL》SELECT LASTNAME || ';' || FIRSTNAME NAME; 



    2                AREACODE  ||  '…'  ||  PHONE  PHONE 



    3  FROM  FRIENDS 



  4 WHERE AREACODE BETWEEN 300 AND 400; 



第四天          函数       对获得数据的进一步处理 



问题答案 



    8   哪个函数是用来将给定字符串的第一个字母变成大写而把其它的字符变成小写的 



        INITCAP 



    9   哪些函数的功能就如同它的名字含义一样 



        Group 函数了 aggregate  函数都是 



    10      下边的查询将如何工作 



      SQL》 SELECT COUNT(LASTNAME) FROM CHARACTERS; 



      它将返回表中的总记录数 



                                                                              538 


…………………………………………………………Page 539……………………………………………………………

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



    11      下边的查询是干什么的 



      SQL》 SELECT SUM(LASTNAME) FROM CHARACTERS; 



      由于LASTNAME 是字符串类型  所以这个查询将不会工作 



    12      哪个函数可以将 FIRSTNAME 列与 LASTNAME 列合并到一起 



        CONCAT   函数和||符号都可以 



    13      在下边的查询中          6 是什么意思 



          INPUT: 

          SQL》 SELECT COUNT(*) FROM TEAMSTATS; 



          OUTPUT: 



          COUNT(*) 



          6 



          6 是指表中的记录个数 



    14      下列语句将是否会工作 



      SQL》 SELECT SUBSTR LASTNAME;1;5 FROM NAME_TBL; 



      由于在lastname;1;5 周围没有括号  所以它会认为这是列的别名                       正确的语句如下 



      SQL》 SELECT SUBSTR(LASTNAME;1;5) NAME FROM NAME_TBL; 



练习答案 



    3   用今天的 TEAMSTARTS 表来写一个查询               用来显示谁的中球率低于 0。25              中球率 



       的计算方法为 hits/ab 



      INPUT: 

          SQL》 SELECT NAME FROM TEAMSTATS 



              2    WHERE  (HITS/AB)  《  。25; 



      OUTPUT: 

            NAME 



            HAMHOCKER 



            CASEY 



    4   用今天的 CHARACTERS 表来写一个查询                要求返回下边的结果 



        INITIALS__________CODE 



        K。A。P。                            32 



         1 row selected。 



        SQL》 select substr(firstname;1;1)||'。'|| 



                                substr(middlename;1;1)||'。'|| 



                                substr(lastname;1;1)||'。'  INITIALS;  code 



                                                                               539 


…………………………………………………………Page 540……………………………………………………………

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



                 from  characters 



                 where  code  =  32; 



第五天       SQL  中的子句 



问题答案 



   6   哪种子句的作用与 LIKE      %  相似 



     STARTING WITH 



   7   GROUP BY 子句的功能是什么       哪种子句的功能与它类似 



   GROUP  BY 子句可以将其它函数返回的数据进行分组  它与 ORDER  BY 子句在行为 



上类似  ORDER BY 子句是将查询的结果像 GROUP BY 子句一样根据给出的列进行排序 



    8  下面的查询会工作吗 



   INPUT 



        SQL》SELECT NAME   AVG   SALARY   DEPARTMENT   FROM   PAY_TBL 



       WHERE DEPARTMENT='ACCOUNTING'    ORDER   BY  NAME 



       GROUP   BY  DEPARTMENT   SALARY 



        语法不正确  GROUP BY 必须在 ORDER  BY 之前  而且所有选择的列也必需在 



    GROUP BY 中给出 



   9   在使用 HAVING 子句时是否要同时使用 GROUP BY 子句 



       是的 



    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 语句 



问题答案 



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'; 



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



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