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

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

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




     1024             16 

     85              34 



6  rows  selected。 

你也可以用 NUMERATOR % DENOMINATOR 的结果来建立一个新列 

输入/输出 



SQL》   SELECT   NUMERATOR       DENOMINATOR        NUMERATOR%DENOMINATOR 



REMAINDER     FROM REMAINS 



NUMERATOR              DENOMINATOR           REMAINDER 

10                     5                     0 

8                      3                     2 

23                     9                     5 

40                      17                   6 

1024                    16                   0 

85                     34                    17 

6   rows   selected。 

在一些 SQL  解释器中取模运算符为 MOD                见第 4  天    函数— — 返回数据的再加工            下边 



的语句所得到的结果与上边的语句相同 



SQL》 SELECT NUMERATOR      DENOMINATOR      MOD   NUMERATOR     DENOMINATOR 



REMAINDER     FROM    REMAINS 

优先级别 



在这一部分的例子中主要讲述在 SELECT  语句中的优先级别                        数据库 PRECEDENCE       的内 



容如下 



EMAIL  wyhsillypig@163。                                                    47 


…………………………………………………………Page 48……………………………………………………………

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



SQL》  SELECT   *  FROM   PRECEDENCE 



      N1   N2    N3    N4 

      1    2     3     4 

      13   24    35    46 

      9     3    23    5 

      63   2     45    3 

      7    2     1     4 

用 PRECEDENCE 来做如下例子 



输入/输出 



SQL》  SELECT 

2  N1+N2*N3/N4 

3  (N1+N2)*N3/N4 



4  N1+(N2*N3)/N4 

5  FROM   PRECEDENCE 



      N1+N2*N3/N4    (N1+N2)*N3/N4   N1+(N2*N3)/N4 



      2。5            2。25            2。5 

      31。26          28。15           31。26 

      22。8           55。2            22。8 

      93             975             93 

      7。5            2。25            7。5 

看到了吗      第一例与最后一例的结果是相同的                   如果你把第四列改写成为 N1+N2* 



(N3/N4) 那么其结果与上边的例子是相同的 

比较运算 



顾名思义       比较运算就是将两个表达式进行比较并返回三个数值中的一个 



True;False;Unknow;请等一下  Unknow  True 和 False 的意义无需说明  但是什么是 Unknow 



呢 



    为了便于理解什么是 Unknow         你需要理解一下什么是 NULL           在数据库领域内 NULL 

的意义就是在一个字段之中没有数据  这与在该字段中数据为零或为空的不是同一个概念 



为零或为空是一种特殊的数值  而 NULL  则表示在这个字段之中什么也没有  如果你想进 



行 Field=9 的比较而 Field  字段是空的  那么比较的结果就会返回 Unknow                由于 Unknow 



是一种不正常的状态  所以大多数 SQL  都会置其为无效并提供一种叫 IS  NULL                      的操作来 



测试 Null  的存在 

输入 



SQL》  SELECT   *  FROM   PRICE 



输出 



     ITEM         WHOLESALE 

     TOMATOES     。34 

     POTATOES     。51 

     BANANAS      。67 

     TURNIPS      。45 

     CHEESE       。89 

     APPLES       。23 

     ORANGES 

请注意 WHOLESALE      字段在 ORANGES     处没有输出  这说明在这里的数值是空的                由于 

这里的 WHOLESALE      字段的属性为数字         所以空值在这里是显而易见的             但是如果空值 



是出现在 ITEM 列中  那么要将空值与空白值区分开来就是非常重要的了 



请试着找一下空值 



输入/输出: 



EMAIL  wyhsillypig@163。                                              48 


…………………………………………………………Page 49……………………………………………………………

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



SQL》  SELECT  * FROM   PRICE WHERE   WHOLESALE   IS NULL 



    ITEM       WHOLESALE 

    ORANGES 

如你所见到的      WHOLESALE  字段中的 ORANGES    是唯一的一个空值        因为它是不可见 



的  可是当你使用  =      这个比较运算符时会有什么结果呢 

输入/输出: 



SQL》  SELECT  * FROM   PRICE WHERE   WHOLESALE   = NULL 



No  rows selected 

分析 



你没有得到任何记录因为比较运算在这里返回的结果为 FALSE                      所以使用 WHERE 

SWHLESALE IS NULL 在这里比使用=更恰当  它将会返回所有存在空值的记录 



这个例子也是对使用        =  进行的比较操作进行的完全展示  这之中的 WHERE              子句就不 



用多说了     下面简要说一下等号 



在今天的早些时候你已经看到了在一些 SQL  解释器中等号可以在 SELECT                  子句中用以给 



搜索字段赋以别名       而在 WHERE   子句中它则用于比较操作         并且它是从多个记录中捡选 

所需要数值的一种有效手段          试一下 



输入 



SQL》  SELECT  * FROM   FRIENDS 



输出 



   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 

现在让我们来找一下 JD。MAST       的记录信息(在我们的这个表中这很容易             但是你的朋友可 



能不只这些  也许像这样的记录你有成千上万) 



输入/输出 



SQL》  SELECT  * FROM   FRIENDS WHERE   FIRSTNAME  =  'JD' 



      LASTNAME    FIRSTNAME   AREACODE   PHONE    ST   ZIP 

      MAST        JD          381         555…6767 LA  23456 

结果如我们所愿  再试一下 

输入/输出 



SQL》  SELECT  * FROM   FRIENDS WHERE   FIRSTNAME  =  'AL' 



      LASTNAME    FIRSTNAME  AREACODE    PHONE    ST   ZIP 

      BUNDY       AL         100         555…1111 IL   22333 

      MEZA        AL         200         555…2222 UK 



注  你应该看到在这里        =  号返回了多个记录       注意第二个记录的邮政编码  ZIP         是空 



的  邮政编码是一个字符型字段  你将在第 8 天学习如何创建和组装一个表                     这个特殊的 



空字段表明在字符型字段中空字段与空白字段是不同的 

此外还有一个关于敏感性的问题  试一下 



输入/输出 



SQL》  SELECT  * FROM   FRIENDS WHERE   FIRSTNAME  =  BUD 



      FIRSTNAME 

      BUD 



EMAIL wyhsillypig@163。                                        49 


…………………………………………………………Page 50……………………………………………………………

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



1  row selected 

再试一下 

输入/输出 



SQL》  select * from friends where firstname = Bud 



No  rows selected 

分析 



   尽管 SQL 对大小写是不敏感的  但是数据库中的数据对大小写却是敏感的                    大多数公 

司在存储数据时采用大写以保证数据的一致性  所以你应该永远采用大写或小写来存储数 



据  大小写的混合使用会对你精确地查找数据造成障碍 



大于与大于等于 



大于操作的使用方法如下 



输入: 

SQL》  SELECT  * FROM  FRIENDS  WHERE   AREACODE  》  300 



输出 



LASTNAME    FIRSTNAME   AREACODE   PHONE     ST   ZIP 

MAST        JD          381        555…6767  LA   23456 

BULHER      FERRIS      345        555…3223  IL   23332 

分析 



   这个操作将显示所有比区号比 300 大的记录  但是不包括 300              如果要包括 300    应写 



成如下方式 



输入/输出 

SQL》  SELECT  * FROM  FRIENDS  WHERE   AREACODE》=300 



      LASTNAME    FIRSTNAME  AREACODE    PHONE    ST  ZIP 

      MERRICK     BUD        300         555…6666 CO  80212 

      MAST        JD         381         555…6767 LA  23456 

      BULHER      FERRIS     345         555…3223 IL  23332 

当然  你使用 AREACODE》299 时会得到相同的结果 

注  在这个语句中 300 没有使用引号  对于数字型字段是不需要加引号的 



小于与小于等于 



如你所料  它们的使用方法与大于和大于等于操作相同  但结果相反 



输入 



SQL》  SELECT  * FROM  FRIENDS  WHERE   STATE《 LA 

输出 



      LASTNAME    FIRSTNAME  AREACODE    PHONE    ST  ZIP 

      BUNDY       AL          100        555…1111 IL  22333 

      MERRICK     BUD        300         555…6666 CO  80212 

      BULHER      FERRIS     345         555…3223 IL  23332 



注  为什么 STATE 会变成 ST  呢  这是因为这一列只有两个字符宽  所以结果只会返回两 



个字符    如果列为 COWS    那么它将会显示成 CO       而 AREACODE   和 PHONE 所在列的 



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