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

第14部分

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

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

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



TOMATOES     。34            。49 

POTATOES     。51            。66 

BANANAS      。67            。82 

TURNIPS      。45            。60 

CHEESE       。89            1。04 

APPLES       。23            。38 

分析 



真棒  你不但可以创建一个新列             而且还可以对它安自己的需要进行重命名                 你可以按语 

法列名    别名来对任何一个列进行重命名  注意在列名与别名之间有空格 



例如  输入 



SQL》  SELECT   ITEM  PRODUCE    WHOLESALE    WHOLESALE    0。25   RETAIL 



  FROM   PRICE 



重命名的列如下 



   PRODUCE      WHOLESALE      RETAIL 



EMAIL  wyhsillypig@163。                                             44 


…………………………………………………………Page 45……………………………………………………………

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



   TOMATOES     。34            。49 

   POTATOES     。51            。66 

   BANANAS      。67            。82 

   TURNIPS      。45            。60 

   CHEESE       。89            1。04 

   APPLES       。23            。38 



注   一些 SQL 解释器使用的语法为           列名  =   别名     所以前一个例子要写成如下格式 



SQL》    SELECT  ITEM   PRODUCE 



WHOLESALE 



WHOLESALE    0。25 RETAIL 

FROM PRICE 



请检查你的 SQL 解释器以确认它采用哪一种语法 



你大概想知道当不在命令行状态时应如何使用别名吧                       很清楚  你知道报表生成器是如何 



工作的吗      总有一天     当有人让你写一个报表的生成器时  你就会记住它而且不用却重复 



Dr  Codd 和 IBM  已经做过的工作 

到现在为止      你已经看到了两种加号的用法  第一种用法是在 SELECT                    子句中使用+号以 



执行对数据的运算并将结果显示出来 第二种用法是在 WHERE 子句中使用加号 在WHERE 



中使用操作符可以在当你对数据有特定条件时具有更大的灵活性 



在一些解释器中        加号还同时肩负着进行字符运算的责任  在稍后的几天中你将会看到这 



一点 

减法    — 



减号也有两种用途         第一种用途是作为负号使用            你可以使用 HILOW 表来验证这项功能 



SQL》 SELECT   *  FROM   HILOW 



输出 



STATE    HIGHTEMP     LOWTEMP 

CA       …50          120 

FL       20           110 

LA       15           99 

ND       …70          101 

NE       …60          100 

例如    这里对数据进行这样的运算 



SQL》 SELECT  STATE    HIGHTEMP   LOWS     LOWTEMP    HIGHS  FROM   HILOW 



STATE    LOWS     HIGHS 

CA       50       …120 

FL       …20      …110 

LA       …15      …99 

ND       70       …101 

NE       60       …100 

第二种用法      很明显     是作为减号从某一列中减去另一列  例如 



SQL》 SELECT   STATE 



HIGHTEMP    LOWS 



LOWTEMP    HIGHS 



(LOWTEMP    HIGHTEMP)   DIFFERENCE 

FROM   HILOW 



   STATE    LOWS    HIGHS     DIFFERENCE 

   CA       …50      120      170 

   FL       20       110      90 



EMAIL  wyhsillypig@163。                                              45 


…………………………………………………………Page 46……………………………………………………………

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



   LA       15      99       84 

  ND        …70     101      171 

  NE        …60     100      160 

注意这里使用了别名来对输入的错误进行更正  这只不过是一种暂时的补救方法  虽然这 



不是永久的解决办法  你是以后  第 21  天             常见的 SQL  错误及其解决方案  会看到如何 



对数据以及输入进行更正           在那里你将学会如何对错误的数据进行更正 

该查询不只是修正         至少看起来是这样         错误的数据      而且还创建了一个新列以获得每个 



记录的最高与最低的差价 



如何你在一个字符型字段中意外地使用了减号  你将会看到如下信息 



SQL》    SELECT    STATE  FROM   HILOW 



ERROR   ORA…01722  invalid number 



No  rows  selected 

在不同的解释器中错误的号码可能会不同  但是结果是相同的 



除法 



除法只有一种显而易见的应用  在 PRICE 表中它的应用如下 



输入 

SQL》 SELECT * FROM PRICE 



输出: 



     ITEM         WHOLESALE 

     TOMATOES     。34 

     POTATOES     。51 

     BANANAS      。67 

     TURNIPS      。45 

     CHEESE       。89 

     APPLES       。23 



rows  selected。 

在下边的例句中你可以成功地将销售价折半 



输入/输出 



SQL》  SELECT ITEM  WHOLESALE     (WHOLESALE/2)  SALEPRICE  2  FROM  PRICE 



ITEM        WHOLESALE     SALEPRICE 

TOMATOES    。34           。170 

POTATOES    。51           。255 

BANANAS     。67           。335 

TURNIPS     。45           。225 

CHEESE      。89           。445 

APPLES      。23           。115 

6  rows selected。 

在这个 SELECT    语句中除法的作用是显而易见的              只不过将商品半价销售有点太难以理解 



了 



乘法    * 



乘法的运算也非常直观          再以 Price 表为例 

输入 



SQL》  SELECT   *  FROM   PRICE 



输出 



ITEM         WHOLESALE 

TOMATOES     。34 

POTATOES     。51 

BANANAS      。67 



EMAIL  wyhsillypig@163。                                             46 


…………………………………………………………Page 47……………………………………………………………

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



TURNIPS       。45 

CHEESE        。89 

APPLES        。23 



6  rows  selected。 

将表中的价格下调 10%可以用如下方法来实现 



输入/输出: 

SQL》SELECT    ITEM   WHOLESALE      WHOLESALE     *  0。9  NEWPRICE 



          FROM PRICE 



ITEM           WHOLESALE       NEWPRICE 

TOMATOES      。34              。306 

POTATOES      。51              。459 

BANANAS       。67              。603 

TURNIPS       。45              。405 

CHEESE        。89              。801 

APPLES        。23              。207 



6  rows  selected。 

通过这些操作您可以在 SELECT 语句中进行复杂的运算 



取模  % 



取模运算将返回一个除法的余数部分                   以REMAINS 表举例如下 



输入 



SQL》   SELECT   *  FROM    REMAINS 

输出 



     NUMERATOR       DENOMINATOR 

     10              5 

     8               3 

     23              9 

     40               17 

     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 在这里比使用=更恰当  它将会返回所有存在

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

你可能喜欢的