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

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

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





输入 



    SQL》 select DISTINCT amount from checks; 



输出 



EMAIL  wyhsillypig@163。                                            38 


…………………………………………………………Page 39……………………………………………………………

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



        AMOUNT 



        25 



        25。1 



        98 



        50 



        200。32 



        245。34 



6 rows selected 



分析 



    注意只有六行数据被选择              这是因为你使用了 DISTINCT           所有只有不重复的数据才 



会被显示 ALL 是在 SELECT  中默认的关键字 你几乎从来也不会用到 ALL                          因为 SELECT 



与 SELECT ALL 是等价的 



    试一下这个例子         作为你对 SQL 的第一次  也是唯一的一次                 实际体验 



    输入 



    SQL》 SELECT ALL AMOUNT 



        FROM CHECKS; 



       输出 



       AMOUNT 



              150 



           245。34 



           200。32 



               98 



              150 



               25 



             25。1 



       7rowsselected。 



    它的结果与 SELECT         是相同的  谁还会再去用这个多余关键字呢 



总结 



    关键字 SELECT      可以检索数据库并从中返回数据                 你可以用一个很长的语句并使用 



SELECT  *来检索数据库中的所有表             而且你可以对指定表格的结果进行重新排序                      而关键 



EMAIL  wyhsillypig@163。                                                    39 


…………………………………………………………Page 40……………………………………………………………

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



字 DISTINCT 则会强制性地要求返回的结果中不能有重复数据                  明天我们将学习如何使您 



的查询更具有选择性 



问与答 



 问  这些数据是从哪里来的         我们是如何得到它的 



 答  数据是按照第 8 天所讲述的方法创建的            与数据库的联接是依靠你所使用的 SQL             它 



    以传统的命令行方式与数据库进行会话  该数据库原来属于服务器或客户机范畴                           但 



    最近它已经被移植到了 PC 机上 



 问  可是我用不到这些数据库  那我还可以用 SQL 干什么 



 答  你也可以在编程语言中使用 SQL          一般的编程语言都支持内嵌的 SQL           例如 COBOL 



    你可以在它的环境中写 SQL  并编译  而 Microsoft  公司则提供了应用程序接口函数以 



    允许编程人员在 Visual  Basic  C  或 C++ 中使用 SQL   Sybase  and  Oracle  提供的库也 



    允许你在编程时使用 SQL       Borland 公司则将 SQL 置于 Delphi 中 本书中也将讨论 SQL 



   在编程中的应用 



校练场 



   在校练场里我们提出了一些问题以帮助你巩固自己所学  这些练习可以提高你在学习 



中的经验  请试着回答和练习附录五             问答与练习  中的内容  在开始明天的工作之前要 



确保你已经知道了这些问题的答案 



    1  下列语句所返回的结果是否相同 



      SELECT * FROM CHECKS; 



      select    *    from    checks 



   2   为什么下列查询不会工作 



      a。 Select *               b。 Select * from checks 



      c。 Select amount name payee FROM checks; 



    3   



       A   select * 



           From   checks 



       B   select *  from   checks 



EMAIL wyhsillypig@163。                                          40 


…………………………………………………………Page 41……………………………………………………………

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



         C  select   *   from    checks 



         / 



练习 



1   使用今天早些时候的 CHECKS  表的数据来写一个查询                      返回表中的 number  和 remark 



    列中的数据 



2   将练习 1 中的查询再写一遍以使得remark 列出现在第一位 



3   使用 CHECKS 表      写一个查询来返回其中的不重复数据 



EMAIL  wyhsillypig@163。                                                    41 


…………………………………………………………Page 42……………………………………………………………

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



第三天       表达式       条件语句与运算 



目标 

在第二天我们学习了使用 SELECT 语句和 FROM 语句来对数据进行有趣味性           也是非常有 



用的  运算   在今天我们将对昨天学习的进行进一步的扩充           我们将把新的方法应用到查 



询  表和行中    引进新的子句和被称为运算的批量处理方法  在第三天的阳光下  你将学 



会 



知道什么叫作表达式以及如何来使用它们 

知道什么叫作条件语句以及如何来使用它们 



熟悉基本的子句 WHERE 的使用 



可以用算术    比较  字符和逻辑表达式来建立一个运算 



学会将多种不同的运算结合在一起使用 



注  在今天的学习中我们来使用 PERSONAL  ORACLE7  来进行应用举例      其它的 SQL  环 

境在命令运算以及结果显示上与它稍有不同  但在遵循 ANSI          标准的基础上它们的结果应 



该是相同的 



表达式 



表达式的定义非常简单      表达式可以返回一个值       表达式的类型非常广泛      它以包括各种 



类型的数据如数字     字符   以逻辑型等  其实在下列子句      如 SELECT  和 FROM 中所占 

成分中表达式最大  在下边的例子中 amount  就是一个表达式  它可以返回 amount  列中的 



数据 



SELECT amount FROM checks 



而在下列语句中 NAME    ADDRESS PHONE  ADDRESSBOOK 是表达式 



SELECT NAME; ADDRESS; PHONE 

FROM ADDRESSBOOK 



现在  请检查一下下边的表达式 



WHERE NAME = 'BROWN' 

这里   NAME  =  'BROWN' 是一个条件语句 这是一个逻辑形表达式的实例         NAME  = 



'BROWN'将根据=号来返回值 TRUE 或 FALSE 

条件 



如果你想在数据库中查找一个或一组特定的信息            你需要使用一个或更多的条件  条件可 



以包含在WHERE 子句中  在上一个例子中       条件就是 



NAME = 'BROWN' 

如果你想知道在你们单位中上一个月有谁的工作时间超过了 100  个小时             你可能会写出下 

边的条件语句 



NUMBEROFHOURS 》 100 

条件语句可以让你建立一个选择查询  在大多数情况下            条件中包括变量     常量和比较运 



算  在第一个例子中的变量是 NAME       常量是'BROWN'  而比较运算符则为=     在第二个 



例子中变量为 NUMBEROFHOURS;常量为 100    而比较运算符则是》     当您准备写一个条 

件查询时你需要知道两个元素  WHERE 子句和运算 



WHERE 子句 



Where 子句的语法如下 



WHERE  



EMAIL wyhsillypig@163。                               42 


…………………………………………………………Page 43……………………………………………………………

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



   Select From 和 Where 在 SQL 中最常使用的三个子句  Where  只是当你的查询具有更大的 



   选择性  没有 Where 子句  你可以用查询做得最多的有用工作是显示选定表中的所有记录 

   例如 



   输入 



   SQL》 SELECT * FROM BIKES 



   这将会将 BIKES 表中的所有数据按行列出 



   输出 



NAME         FRAMESIZE  POSITION   MILESRIDDEN  TYPE 



TREK 2300    22。5       CARBONFIBER   3500         RACING 

BURLEY       22         STEEL         2000         TANDEM 

GIANT        19         STEEL         1500         MUTER 

FUJI         20         STEEL         500          TOURING 

SPECIALIZED  16         STEEL         100          MOUNTAIN 

CANNONDALE   22。5       ALUMINUM      3000         RACING 

   假若你想要一台特定型号的自行车           你应该键入 



   SQL》 SELECT    FROM  BIKES  WHERE  NAME  =   BURLEY 



   你将只会收到一个记录 

   输出 



NAME         FRAMESIZE  POSITION   MILESRIDDEN TYPE 



BURLEY       22         STEEL         2000        TANDEM 

   分析 



       这个简单的例子显示出了你可以在数据库返回的数据中加以条件限制 



   运算 



   运算是你需要对从数据库中返回的数据进行数学处理时所用到的元素                    运算可以归为六组 



   数值型    比较型  字符型  逻辑型和备注型以及混合型 

   数值型运算 



   数值型运算有加      减   乘  除和取模  前四个不用多说        取模将返回一个除法结果中商的 



   余数部分    这里有两个例子 



   5%2=1 



   6%2=0 

   对于有小数的数据不能应用取模运算            如实数 



   如果你在进行数据运算时应用了几个运算符而没有在其中使用括号                    那么运算进行的次序 



   将是先乘后除再模后加减         举例来说    表达式  2*6+9/3 其结果将是 12+3=15   但是   表 



   达式 2*  6+9 /3 结果则为 2*15/3=10 注意在这里你使用了括号        有时表达式不会按你所 



   想像的那样得出期望的结果 

   加法(+) 



   你可以在许多场合下使用加号          下面的语句将显示一个价格表 



   输入   SQL》 SELECT * FROM PRICE 



   输入如下右 



   现在请输入 



   SQL》SELECT  ITEM WHOLESALE   WHOLESALE  0。15 FROM PRICE  OUTPUT 



   ITEM        WHOLESALE 

   TOMATOES    。34 

   POTATOES    。51 

   BANANAS     。67 



   EMAIL wyhsillypig@163。                                     43 


…………………………………………………………Page 44……………………………………………………………

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



ITEM         WHOLESALE 

TURNIPS      。45 

CHEESE       。89 

APPLES       。23 

这里对于下列产品的每一个价格数据加了 15 分 



ITEM         WHOLESALE      WHOLESALE+0。15 

TOMATOES     。34            。49 

POTATOES     。51            。66 

BANANAS      。67            。82 

TURNIPS      。45            。60 

CHEESE       。89            1。04 

APPLES       。23            。38 

分析 

请不要忽视最后一列 WHOLESALE+0。15          它在原始的数据库表中没有 切记 你在 SELECT 



中使用了*号  这将会显示出所有的列               SQL  允许你创建一个虚拟列或对已有的列进组合 



和修改后产生的派生列 



请再输入一次刚才的语句 



SQL》 SELECT * FROM PRICE 

右面是从表中返回的结果 



ITEM         WHOLESALE 

TOMATOES     。34 

POTATOES     。51 

BANANAS      。67 

TURNIPS      。45 

CHEESE       。89 

APPLES       。23 

分析 



输出的结果有时原始数据并没有被改变                而标题为 WHOLESALE+0。15      的列也不是表中的 

固有列  事实上       由于这个列标题太不容易为人所注意  所以你应该在它的上边再花一些 



工夫 



请输入 



SQL》 SELECT   ITEM  WHOLESALE     WHOLESALE    0。15 RETAIL 



        FROM PRICE 

其结果如右 



ITEM         WHOLESALE      RETAIL 

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