八宝书库 > 文学其他电子书 > SQL 21日自学通(V3.0)(PDF格式) >

第23部分

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

小说: SQL 21日自学通(V3.0)(PDF格式) 字数: 每页4000字

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






           'GROUP BY expr '; expr' 。。。 'HAVING condition' ' 



           '{UNION | UNION ALL | INTERSECT | MINUS} SELECT mand ' 



                 'ORDER  BY  {expr|position}  'ASC  |  DESC' 



                 ' {expr|position} 'ASC | DESC'' 。。。' 



     注    根据我对 SQL  的经验  ANSI 标准确实只是 ANSI  的  建议                           上述的语法格式在 



大多数的 SQL 引擎下都能够工作  但是你可以发现它们之间存在着一些差别 



EMAIL    wyhsillypig@163。                                                                97 


…………………………………………………………Page 98……………………………………………………………

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



    你无需对这些复杂的语法花费太多的精力                 因为许多人发现语法表比关于新应用的示 



例更容易让人困惑         本书采用简单的例子展现其特点              不过   如果我们在今天看一下有关 



它的语法表述会使我们对今天的学习更容易理解 



    不要对语法的精确内容太担心             对于不同的解释器它们是不同的  所以               我们应该把 



精力放到关系上  在最前边的是 SELECT 语句  我们在前几天已经多次使用过了  SELECT 



之后应该是 FROM       在每次输入 SELECT      语句时它也应该输入          明天我们将学习 FROM 



语句的新用法       之后是 WHERE     GROUP  BY   HAVING 和 ORDER  BY   其余的子句  包 



括 UNION   UNION  ALL  INTERSECT 和 MINUS 在表中已经在第 3  天时讲过了  每一个 



子句的在数据的选择和操作时都扮演着它的重要角色 



    注  在今天的例子中我们使用两种 SQL  解释器               一种仍然是 SQL     的命令行形式  它 



属于 Personal  Oracle7 而另外一种则不是  它是 BORLAND  公司的 ISQL             你可以发现 



输出的结果会随着解释器的不同而不同 



WHERE  子句 



    仅使用 SELECT 和 FROM 子句       你会受到表中的每一行数据均返回的限制  例如                  只 



在 CHECKS 表中使用这两个关键字           你将会得到表中的全部行  共 7 行 



    INPUT 



    SQL》SELECT   * FROM    CHECKS 



    OUTPUT 



        CHECK#     PAYEE            AMOUNT      REMARKS 



         1         Ma  Bell         150         Have sons next time 



        2          Reading R。R。     245。34      Train to Chicago 



        3          Ma  Bell         200。32      Cellular Phone 



        4          Local Utilities  98          Gas 



        5          Joes Stale Dent 150         Groceries 



         16        Cash  25         Wild        Night Out 



         17        Joans Gas        25。1        Gas 



    使用 WHERE    子句将会使你更具有选择性           要想找到你所填写的支票中所有超过 100 



元的  你可以这样写 



    INPUT 



EMAIL  wyhsillypig@163。                                             98 


…………………………………………………………Page 99……………………………………………………………

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



    SQL》SELECT   *  FROM   CHECKS    WHERE   AMOUNT     100 



    WHERE 子句只返回了符合条件的四条记录 



    OUTPUT 



         CHECK#     PAYEE            AMOUNT      REMARKS 



         1          Ma Bell          150         Have sons next time 



         2          Reading R。R      245。34      Train to Chicago 



         3          Ma Bell          200。32      Cellular Phone 



         5          Joes Stale  Dent 150        Groceries 



    使用 WHERE    也可以解决一些其它的难题             下表给出了姓名和位置  你可以提出这样 



的问题— — Waldo 住在哪儿 



    INPUT 



    SQL》SELECT   *  FROM   PUZZLE 



                       OUTPUT 



                      NAME          LOCATION 



                       TYLER        BACKYARD 



                       MAJOR        KITCHEN 



                       SPEEDY       LIVING ROOM 



                       WALDO        GARAGE 



                       LADDIE      UTILITY CLOSET 



                       ARNOLD       TV ROOM 



    INPUT 



    SQL》SELECT   LOCATION    AS  〃WHERE'S WALDO?〃   FROM    PUZZLE 



         WHERE    NAME = 'WALDO' 



    OUTPUT 



    WHERE'S WALDO? 



    GARAGE 



    好了 我答应以后不再写像这样粗俗的语句了 我已经把它们收录于 SQL BATHROOM 



HUMOR    — — 这是一本每个人都想得到的书              不过  这个查询显示出了在 WHERE  中用 



于条件的列并没有在 SELECT          语句中出现      本例中你所选择的是 LOCATION          列而条件列 



是 NAME    这是完全合法的        同时  我们也应该注意到 SELECT  语句中我们使用了 AS 



它是一个可以选择的参数            用以指定 LOCATION     的别名  你以后将不会看到 AS            因为它 



是多余的  ACCESS  中则不可省略— — 译者             在大多数 SQL 解释器中我们只需输入 



EMAIL  wyhsillypig@163。                                               99 


…………………………………………………………Page 100……………………………………………………………

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



    INPUT 



    SQL》SELECT     LOCATION     〃WHERE'S    WALDO?〃    FROM   PUZZLE    WHERE 



NAME='WALDO' 



    这里没有使用 AS        但它的结果与上例是完全一样的 



    WHERE 是使用频度仅次于 SELECT 和 FROM  的语句 



STARTING WITH 子句 



    STARTING  WITH 子句附加于 WHERE  子句上  它的作用与 LIKE                  exp%  相似    试 



比较下边的两个查询 



    INPUT 



    SELECT    PAYEE   AMOUNT      REMARKS     FROM    CHECKS   WHERE     PAYEE 



LIKE('Ca%') 



    OUTPUT 



                   PAYEE      AMOUNT       REMARKS 



                   Cash       25           Wild Night Out 



                   Cash       60           Trip to Boston 



                   Cash       34           Trip to Dayton 



再看看下边的查询 



INPUT 



SELECT   PAYEE   AMOUNT     REMARKS     FROM   CHECKS    WHERE    PAYEE   STARTING 



WITH('Ca') 



OUTPUT 



                     PAYEE     AMOUNT       REMARKS 



                     Cash      25           Wild Night Out 



                     Cash      60           Trip to Boston 



                     Cash      34           Trip to Dayton 



    结果是相同的  你甚至可以同时使用它们  例如 



    INPUT 



    SELECT   PAYEE   AMOUNT     REMARKS     FROM    CHECKS 



    WHERE    PAYEE   STARTING    WITH('Ca') OR   REMARKS     LIKE  'G%' 



    OUTPUT 



EMAIL  wyhsillypig@163。                                                   100 


…………………………………………………………Page 101……………………………………………………………

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



                  PAYEE               AMOUNT        REMARKS 



                  Local Utilities     98            Gas 



                  Joes Stale  Dent   150           Groceries 



                  Cash                25            Wild Night Out 



                  Joans Gas           25。1          Gas 



                  Cash                60            Trip to Boston 



                  Cash                34            Trip to Dayton 



                  Joans Gas           15。75         Gas 



    警告     STARTIN      WITH  为许多 SQL  解释器所支持             在你喜欢上它之前请先检查你 



的 SQL 解释器是否支持它 



ORDER BY 子句 



    在有些时候你可能会希望查询输出的结果按一定的排序规则来显示                                      可是     正如你所 



知道的      SELECT FROM 语句只会给你一个列表                  除非你已经定义了关键字  见第 10 天 



  创建视图和索引             否则你查询的结果是依据它们在输入时的次序排列的  请看下表 



    INPUT 



    SQL》SELECT      *  FROM     CHECKS 



    OUTPUT 



            CHECK#           PAYEE          AMOUNT           REMARKS 



                 1          Ma Bell            150       Have sons next time 



                 2        Reading R。R。       245。34        Train to Chicago 



                 3          Ma Bell          200。32         Cellular Phone 



                 4        Local Utilities      98                Gas 



                 5      Joes Stale  Dent      150            Groceries 



                 16           Cash             25          Wild Night Out 



                 17        Joans Gas          25。1               Gas 



                 9        Abes Cleaners       24。35         X…Tra Starch 



                 20       Abes Cleaners        10。5         All Dry Clean 



                 8            Cash             60           Trip to Boston 



                 21           Cash             34           Trip to Dayton 



分析 



    请相信我  数据输出的情况的确是按照它们被输入的先后次序排序的  在第 8 天的  数 



据操作      中我们将知道如何使用 INSERT               来创建一个新的表            那时你就可以试一下            看看 



EMAIL   wyhsillypig@163。                                                         101 


…………………………………………………………Page 102……………………………………………………………

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



数据是不是如你所猜想的那样来排序 



    ORDER  BY 子句为你提供了对输出的结果进行排序的方法  例如  将记录按 CHECKS 



号进行排序  语句如下 



    INPUT 



    SQL》SELECT      *  FROM    CHECKS     ORDER     BY   CHECK# 



    OUTPUT 



          CHECK#      PAYEE             AMOUNT        REMARKS 



          1           MaBell             150          Have next sonstime 



          2           Reading  R。R。     245。34        Train  to  Chicago 



          3           Ma   Bell         200。32        Cellular Phone 



          4           Local  Utilities  98            Gas 



          5           Joes  Stale                    Dent   150  Groceries 



          8           Cash              60            Trip to Boston 



          9           Abes   Claeners   24。35         X…Tra   Starch 



          16          Cash              25            Wild Night  Out 



          17          Joans  Ga

返回目录 上一页 下一页 回到顶部 0 0

你可能喜欢的