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

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

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


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



                                                                                         534 


…………………………………………………………Page 535……………………………………………………………

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



附件 F     问题与练习答案 



第一天     SQL 简介 



问题答案 



1 为什么说 SQL 是一种非过程型语言 



   SQL 决定了应该做什么而不是如何去做  数据库必需实现 SQL 的要求  这种特性在交 



叉平台和交叉语言开发环境中非常有利 



2 我如何知道一种数据库系统是不是关系型数据库系统 



   根据 Dr。 Codd's 12 我们知道共有 13 条 的规则 



3 我可以用 SQL 来做什么 



   SQL  可以让你选择  插入  修改和删除数据库中的信息       执行系统安全功能和设置用 



户对表和数据库的访问权限       对应用程序的在线事务过程进行控制        创建存储过程和触发 



机制以减少应用程序代码并可以在不同的数据库中传输数据 



4 把数据清楚地分成一个个唯一集的过程叫什么名字 



   标准化  它可以减少数据的冗余度和数据库结构的复杂性 



练习答案 



   确认一下你所使用的数据库系统是否是一个关系型数据库系统             你自己回答 



第二天      查询 — — SELECT 语句的使用 



问题答案 



4    下列语句所返回的结果是否相同 



     SELECT * FROM CHECKS; 



     select    *    from    checks 



                                                     535 


…………………………………………………………Page 536……………………………………………………………

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



           这两条语句只有大小写是不同的                 一般来说 SQL  对于大小写是不敏感的                 所 



       以它们返回相同的结果  但是涉及到具体的数据时应该注意大小写 



5      为什么下列查询不会工作 



       a。   Select * 



      没有 FROM 子句  对于是个 SELECT 语句来说 SELECT 和 FROM 都是必须的 



      b。 Select * from checks 



      没有分号  它是用来标明语句是否结束的 



      c。 Select amount name payee FROM checks; 



      你需要在每个列名之间使用逗号                 Select amount; name; payee FROM checks; 



3  下列的查询中哪一个可以工作 



       a。 select * 



      from checks; 



      b。 select * from checks; 



      c。 select * from checks 



      / 



      它们都可以工作 



练习答案 



1  使用今天早些时候的 CHECKS            表的数据来写一个查询             返回表中的 number      和 remark 



    列中的数据 



    SELECT CHECK#; REMARKS FROM CHECKS 



2  将练习 1 中的查询再写一遍以使得remark 列出现在第一位 



    SELECT REMARKS; CHECK# FROM CHECKS 



3   使用 CHECKS 表      写一个查询来返回其中的不重复数据 



    SELECT DISTINCT REMARKS FROM CHECKS 



                                                                              536 


…………………………………………………………Page 537……………………………………………………………

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



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



问题答案 



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



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