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

第17部分

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

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

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





…………………………………………………………Page 58……………………………………………………………

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



       BAKER 

       CHARLIE 

       DEAN 

       EXITOR 

       FALCONER 

       GOOBER 

       ABLE 

       BRAVO 

       CHARLIE 

       DECON 

       EXITOR 

       FUBAR 

       GOOBER 



14 rows selected。 

分析 



可以看到  UNION  ALL 与 UNION 一样对表进行了合并  但是它不去掉重复的记录                  可是 

如果我们想知道都有谁同时在两个表中呢                UNION 无法做到这一点        我们需要学习使用 



INTERSECT 



INTERSECT  相交 



INTERSECT 返回两个表中共有的行  看下例           它将返回两个表中有存在的员工 



输入: 



SQL》 SELECT * FROM FOOTBALL 



    2    INTERSECT 

    3    SELECT  *  FROM  SOFTBALL 



输出 



        NAME 

        ABLE 

        CHARLIE 

        EXITOR 

        GOOBER 

分析 



这些记录是两个表中都存在的 



MINUS   相减 

MINUS 返回的记录是存在于第一个表中但不存在于第二个表中的记录  例如 



输入: 



SQL》 SELECT * FROM FOOTBALL MINUS SELECT * FROM SOFTBALL 



输出 



          NAME 

          BRAVO 

          DECON 

          FUBAR 

上例中显示了三个不在垒球队中的足球队员                如果你把语句的次序颠倒  那么你将得到在 



垒球队中但不在足球队中的队员 

输入: 



SQL》 SELECT * FROM SOFTBALL MINUS SELECT * FROM FOOTBALL 



输出 



        NAME 

        BAKER 

        DEAN 



EMAIL wyhsillypig@163。                                          58 


…………………………………………………………Page 59……………………………………………………………

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



         FALCONER 

从属运算  IN and BETWEEN 



这两个运算符对你已经做过的例子提供了更快捷的操作                          如果你想找一个你在 Colorado; 

California;和 Louisiana  的朋友  可以输入 



输入: 



SQL》  SELECT  *  FROM  FRIENDS  WHERE  STATE=  'CA'  OR  STATE  ='CO'  OR  STATE  = 

'LA' 



输出 



LASTNAME     FIRSTNAME    AREACODE     PHONE      ST     ZIP 

MERRICK      BUD          300          555…6666   CO     80212 

MAST         JD           381          555…6767   LA     23456 

PERKINS      ALTON        911          555…3116   CA     95633 

也可以输入 



输入/输出: 

SQL》 SELECT * FROM FRIENDS WHERE STATE IN('CA';'CO';'LA') 



LASTNAME     FIRSTNAME    AREACODE     PHONE      ST     ZIP 

MERRICK      BUD          300          555…6666   CO     80212 

MAST         JD           381          555…6767   LA     23456 

PERKINS      ALTON        911          555…3116   CA     95633 

分析 

第二个实例比第一个更易读和简捷  我想你一会再用以前的方法来工作了吧                                 在 IN   中也 



可以使用数字  例如 



输入/输出: 



SQL》 SELECT * 



    2    FROM  FRIENDS 

    3    WHERE  AREACODE  IN(100;381;204) 



LASTNAME     FIRSTNAME     AREACODE     PHONE      ST    ZIP 

BUNDY        AL             100         555…1111   IL     22333 

MAST         JD            381          555…6767   LA     23456 

BOSS         SIR           204          555…2345   CT     95633 

如果你想要查找符合某一范围的记录  例如 

输入/输出: 



SQL》   SELECT  *  FROM   PRICE  WHERE   WHOLESALE     0。25  AND  WHOLESALE 



  0。75 



             ITEM          WHOLESALE 

             TOMATOES     。34 

             POTATOES     。51 

             BANANAS      。67 

             TURNIPS      。45 

或使用 BEWTEEN      你可以这样写 



输入/输出: 



SQL》SELECT    * FROM   PRICE  WHERE   WHOLESALE     BETWEEN   0。25 AND   0。75 



             ITEM          WHOLESALE 

             TOMATOES     。34 

             POTATOES     。51 

             BANANAS      。67 

             TURNIPS      。45 

看   第二个是不是比第一个更清楚和易读 



EMAIL  wyhsillypig@163。                                                  59 


…………………………………………………………Page 60……………………………………………………………

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



注   如果批发价为 0。25  的商品在表中存在  那么它们也将会被返回  BETWEEN  操作将包 



括边界值 

摘要 



在第三天我们学会了使用最基本的 SELECT 子句和 FROM 子句                 现在我们已经掌握了最为 



常用的操作来使数据库返回的结果满足你的要求  你学会了使用算术                         比较  字符和逻辑 



操作   这为你进一步学习 SQL 打下了良好的基础 



问与答 

问  如果我不想使用命令行的 SQL 那么学习这些东西对我有什么用 



答   不论你使用内嵌 SQL  的 COBOL 还是微软的 ODBC           它们所使用的 SQL  结构都是一 



样的   所以你现在学习的东西将会更有助于你以后的学习 



问  既然 SQL 是一种标准  那为什么又种是让我检查一下自己的解释器呢 



答   我们所使用的是 ANSI1992     标准  但大多数供应商对它进行了修改以使它更适用于自 

己的数据库  我们是以 ANSI1992 标准为基础的  但在具体使用时要注意它们的不同 



校练场 



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



       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 

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



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



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



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

    2    FROM  FRIENDS 



    3    WHERE  STATE  =  'IL'  AND 

    5    LASTNAME  =  'BUNDY' 



输出 



NAME               ST 

AL                  FROM IL 

仍使用上表  返回以下结果 



NAME        PHONE 

MERRICK;    BUD      300…555…6666 

MAST;       JD       381…555…6767 

BULHER;     FERRIS   345…555…3223 



EMAIL wyhsillypig@163。                                           60 


…………………………………………………………Page 61……………………………………………………………

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



EMAIL   wyhsillypig@163。                                                              61 


…………………………………………………………Page 62……………………………………………………………

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



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



目标 



   在今天我们将学习函数       在 SQL  中的函数可以执行一些储如对某一些进行汇总或或将 



一个字符串中的字符转换为大写的操作  在今天结束之际               您将学会以下内容 



   l  汇总函数 



   l   日期与时间函数 



   l  数学函数 



   l  字符函数 



   l  转换函数 



   l  其它函数 



   这些函数将大大加强你对这一周的早些时间所学习的 SQL 的基本功能所获得的数据的 



操作能力    开始的五个汇总函数  COUNT      SUM  AVG  MAX  MIN  是由 ANSI 标准 



所制定的    大多数的 SQL 解释器都对汇总函数进行了扩充          其中有一些今天会提到  在有 



些解释器这汇总函数的名称与这里所提到的不一样 



汇总函数 



   这是一组函数  它们返回的数值是基于一列的            因为你不会对单个的记录求它的平均 



数   这一部分的例子将使用 TEAMSTATS 表 



   输入 



   SQL》SELECT    FROM  TEAMSTATS 



   输出 



  NAME        POS AB  HITS WALKS SINGLES DOUBLES TRIPLES HR SO 



  JONES       1B  145 45   34    31     8      1      5   10 



  DONKNOW     3B  175 65   23    50     10     1      4   15 



  WORLEY      LF  157 49   15    35     8      3      3   16 



  DAVID       OF  187 70   24    48     4      0      17  42 



  HAMHOCKER   3B  50   12  10    10     2      0      0   13 



EMAIL wyhsillypig@163。                                    62 


…………………………………………………………Page 63……………………………………………………………

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



   CASEY        DH  1    0    0      0      0        0      0   1 



COUNT 



   该函数将返回满足 WHERE 条件子句中记录的个数  例如你想知道都有哪一个球员的 



击球数小于 350     可以这样做 



   输入/输出 



   SQL》 SELECT  COUNT(  ) FROM   TEAMSTATS   WHERE   HITS/AB 。35 



          COUNT(  ) 



          4 



   为了使这段代码更易读  可以使用别名 



   输入/输出 



   SQL》SELECT  COUNT(   ) NUM_BELOW_350   FROM   TEAMSTATS 



       WHERE   HITS/AB 。35 



          NUM_BELOW_350 



          4 



   如果我们用列名来替换掉括号中的星号时会结果与原来有什么不同呢  试一下 



   SQL》  SELECT  COUNT(NAME)   NUM_BELOW_350   FROM   TEAMSTATS 



         WHERE   HITS/AB     。35 



          NUM_BELOW_350 



          4 



   结果是一样的 因为你所选择的NAME 列与 WHERE 子句并不相关 如果你在使用 count 



时无 WHERE 子句  那么它将会返回表中的所有记录的个数 



   输入/输出 



   SQL》  SELECT  COUNT(  )  FROM  TEAMSTATS 



        COUNT(   ) 



        6 



SUM 



    SUM  就如同它的本意一样  它返回某一列的所有数值的和                 如果想知道队员总打点的 



总和是多少  试一下 



EMAIL wyhsillypig@163。                                          63 


…………………………………………………………Page 64……………………………………………………………

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



    输入 



    SQL》SELECT   SUM(SINGLES)   TOTAL_SINGLES   FROM    TEAMSTATS 



    输出 



           TOTAL_SINGLES 



           174 



    如果想得到多个列的和  可按如下所做 



    输入/输出 



    SQL》     SELECT

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

你可能喜欢的