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

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

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





EMAIL  wyhsillypig@163。                                            89 


…………………………………………………………Page 90……………………………………………………………

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



                        DEPARTMENT 



    2    FROM  JOB_TBL; 



输出 



NAME________________JOB_______________DEPARTMENT_____ 



ALVIN  SMITH                  VICEPRESIDENT          MARKETING 



是不是变得好多了 



TRANSLATE 



    这一函数有三个参数          目标字符串  源字符串和目的字符串              在目标字符串与源字符 



串中均出现的字符将会被替换成对应的目的字符串的字符 



输入 



SQL》 SELECT FIRSTNAME; TRANSLATE(FIRSTNAME 



      '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 



      'NNNNNNNNNNAAAAAAAAAAAAAAAAAAAAAAAAAA)                        FROM 



CHARACTERS 



      输出 



      FIRSTNAME      TRANSLATE(FIRST 



      kelly          kelly 



      CHUCK          AAAAA 



      LAURA          AAAAA 



      FESTER         AAAAAA 



      ARMANDO        AAAAAAA 



      MAJOR          AAAAA 



      6 rows selected。 



注意    这个函数对大小写是敏感的 



INSTR 



    如果需要知道在一个字符串中满足特定的内容的位置可以使用 INSTR                         它的第一个参 



数是目标字符串        第二个参数是匹配的内容           第三和第四个参数是数字            用以指定开始搜 



EMAIL  wyhsillypig@163。                                             90 


…………………………………………………………Page 91……………………………………………………………

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



索的起点以及指出第几个满足条件的将会被返回                 下例将从字符串的第二个字符开始             搜 



索并返回第一个以 O 开头的字符的位置 



输入 



SQL》SELECT LASTNAME   INSTR  LASTNAME    O   2 1  FROM  CHARACTERS 



输出 



       LASTNAME      INSTR(LASTNAME;'O';2;1) 



       PURVIS        0 



       TAYLOR        5 



       CHRISTINE     0 



       ADAMS         0 



       COSTALES      2 



       KONG          2 



       6 rows selected 



分析 



默认第三个与第四个参数的数值均为               如果第三个数值为负数  那么将会从后向前搜索 



LENGTH 



LENGTH 将返回指定字符串的长度          例如 



输入 



SQL》SELECT FIRSTNAME  LENGTH   RTRIM  FIRSTNAME   FROM CHARACTERS 



输出 



       FIRSTNAME    LENGTH(RTRIM(FIRSTNAME)) 



       kelly        5 



       CHUCK        5 



       LAURA        5 



       FESTER       6 



       ARMANDO      7 



       MAJOR        5 



注意   这里使用了函数 RTRIM       否则 LENGTH 将全部返回 15 



转换函数 



   转换函数有三个       可以使你方便地将数据从一种类型变换为另一种类型                   本节的示例 



EMAIL wyhsillypig@163。                                         91 


…………………………………………………………Page 92……………………………………………………………

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



使用表 CONVERSIONS 



输入 



SQL》 SELECT  *  FROM  CONVERSIONS 



     输出 



     NAME     TESTNUM 



     40       95 



      13      23 



      74      68 



NAME 列为字符串  该列的宽度为 15          TESTNUM 列为数字 



TO_CHAR 



该函数的最初功能是将一个数字转换为字符型  不同的解释器可能会使用它来转换其它的 



数据类型     例如日期型转换为字符型或者是拥有更多的参数                  下例展示了该函数的基本功 



能 



输入 



SQL》 SELECT  TESTNUM   TO_CHAR   TESTNUM   FROM   CONVERT 



     输出 



     TESTNUM     TO_CHAR(TESTNUM) 



      95         95 



     23          23 



      68         68 



稍安勿燥     下例可以证明它确实已经将 TESTNUM 转换为字符型了 



输入 



SQL》SELECT   TESTNUM   LENGTH  TO_CHAR   TESTNUM    FROM   CONVERT 



输出 



TESTNUM     LENGTH(TO_CHAR(TESTNUM)) 



95          2 



23          2 



68          2 



分析 



如果对数字使用 LENGTH 函数将会返回错误  注意 TO_CHAR 与在先前进过的 CHR 不同 



EMAIL wyhsillypig@163。                                           92 


…………………………………………………………Page 93……………………………………………………………

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



CHR 返回字符集中给定数字位置的一个字符或符号 



TO_NUMBER 



该函数与 TO_CHAR   函数相对应  显而易见  它是将一个字符串型数字转换为数值型               例 



如 



输入 



SQL》 SELECT NAME TESTNUM TESTNUM*TO_NUMBER NAME  FROM CONVERT 



输出 



NAME    TESTNUM   TESTNUM*TO_NUMBER(NAME) 



40      95        3800 



13      23        299 



74      68        5032 



分析 



   如果该函数没有将 NAME 转换为数值的话将会返回一个错误信息 



其它函数 



   这里有三个函数可能对你是有用处的 



GREATEST 与 LEAST 



   这两个函数将返回几个表达式中最大的和最小的  例如 



输入 



SQL》 SELECT GREATEST  ALPHA   BRAVO   FOXTROT    DELTA 



     FROM  CONVERT 



输出 



     GREATEST 



     FOXTROT 



     FOXTROT 



     FOXTROT 



分析 



   注意 GREATEST 将会返回在字母表中最靠后的字符开头的字符串             虽然看起来似乎没 



EMAIL wyhsillypig@163。                                    93 


…………………………………………………………Page 94……………………………………………………………

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



有必要使用 FROM     子句   可是如果 FROM    子句没有的话     你将会收到一个错误信息  每 



一个 SELECT 语句都需要 FROM 子句      由于给定的表有三行  所以结果返回了三个 



输入 



SQL》 SELECT LEAST  34 567  3 45 1090 FROM   CONVERT 



输出 



     LEAST(34 567 3  45 1090) 



     3 



     3 



     3 



就像你看到的那样  这两个函数也可以对数字进行处理 



USER 



   该函数返回当前使用数据库的用户的名字 



输入 



SQL》 SELECT USER  FROM  CONVERT 



输出 



     USER 



     PERKINS 



     PERKINS 



     PERKINS 



   只有我一个人在使用这个数据库  看            SELECT  又一次对表中的每一行都返回了结果 



该函数与在今天早些时候提及的日期函数类似  甚至尽管 USER                不是表中确实存在的列 



但 SELECT 仍然检索了表中的每一行 



总结 



   好长的一天啊      我们一共学习了 47  个函数      你无需记住每一个函数        只需要知道它们 



的大致类型  算术函数        日期/ 时间函数    字符函数  转换函数       其它函数     而当你写一 



个查询的时候你有一个明确的目标就够了 



EMAIL wyhsillypig@163。                                       94 


…………………………………………………………Page 95……………………………………………………………

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



问与答 



问  为什么在 ANSI 标准中定义的函数这么少  而不同的解释器又都定义了这么多的函数 



答  ANSI 标准是一个非常宽松的标准  而且如果对所有的解释器生产厂家来说过多的限 



   制会使其走向破产的道路       另一方面  如果 A  公司对 SQL  补充了一个用于统计的函 



   数包而销路特别好的话  那么 B 公司和 C 公司一定也会跟着做的 



问  我认为你对 SQL 的介绍太简单了  我的工作时应该如何去使用这些函数呢 



答  这个问题与一个都三角的教师所提出的问题类似             事实上我也不知道如何却求一个等 



   腰三角形的面积     所以   我的回答是    根据你的职业而定      你的工作中需要用到哪些 



   函数你就去使用它      而其它的对你来说则是没有必要掌握的           这一观点也适用于你的 



   查询 



校练场 



   1  哪个函数是用来将给定字符串的第一个字母变成大写而把其它的字符变成小写的 



   2  哪此函数的功能就如同它的名字含义一样 



   3  下边的查询将如何工作 



     SQL》 SELECT COUNT(LASTNAME) FROM CHARACTERS; 



   4  下边的查询是干什么的 



     SQL》 SELECT SUM(LASTNAME) FROM CHARACTERS; 



   5  哪个函数可以将 FIRSTNAME 列与 LASTNAME 列合并到一起 



   6  在下边的查询中    6 是什么意思 



        输入 



        SQL》 SELECT COUNT(*) FROM TEAMSTATS; 



        输出 



        COUNT(*) 



        6 



   7  下列语句将输出什么 



        SQL》 SELECT SUBSTR LASTNAME;1;5 FROM NAME_TBL; 



EMAIL wyhsillypig@163。                                 95 


…………………………………………………………Page 96……………………………………………………………

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



练习 



     1   用今天的 TEAMSTARTS 表来写一个查询                 用来显示谁的中球率低于 0。25               中球率 



        的计算方法为 hits/ab 



    2    用今天的 CHARACTERS 表来写一个查询                 要求返回下边的结果 



         INITIALS__________CODE 



         K。A。P。                            32 



         1 row selected。 



EMAIL   wyhsillypig@163。                                                          96 


…………………………………………………………Page 97……………………………………………………………

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



第五天             SQL  中的子句 



目标 



     今天的主题是子句 — — 它不是你在渡假时的赠品                            而是你所学习的 SELECT             语句的一 



个组成部分  在今天结束以后我们将学会以下子句 



     l   WHERE 



     l    STARTING WITH 



     l    ORDER BY 



     l    GROUP BY 



     l   HAVING 



     为了对这些子句有一个大致的印象  请看一下 SELECT 语句的通用语法表达式 



语法 



     SELECT 'DISTINCT | ALL' { * 



                                             |  {  'schema。'{table  |  view  |  snapshot}。* 



                                             |  expr  }    '  'AS'  c_alias  ' 



                                           ';  {  'schema。'{table  |  view  |  snapshot}。* 



                                             |  expr  }  '  'AS'  c_alias  '    '  。。。  } 



     FROM 'schema。'{table | view | snapshot}'@dblink' 't_alias' 



           '; 'schema。'{table | view | snapshot}'@dblink' 't_alias' ' 。。。 



                 'WHERE  condition  ' 



           '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' 

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