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

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

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






     当 CODE  为 B  时其值为 20 当 CODE 既不是 A  也不是 B  时激活一个名字叫 



     UnknownCode  的异常  表中的内容只有一行 



                                                         409 


…………………………………………………………Page 410……………………………………………………………

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



第 19 天     TRANSACT…SQL 简介 



目标 



   与 TRANSACT…SQL  是对标准 SQL  的补充一样  今天的内容是对前几天内容的补充 



今天的目标是 



   l  知道一种对 SQL 的流行的扩展 



   l  知道 TRANSACT…SQL 的主要特性 



   l  给出一些特殊的例子让你知道如何去使用 TRANSACT…SQL 



TRANSACT…SQL  概貌 



   在第 13 天的  高级 SQL 中我们简要地提到过静态 SQL      在第 13 天的例子中我们也 



描述了如何在第三代编程语言如 C       中写内嵌的 SQL  语句的方法    由于采用这种方法时嵌 



入的 SQL  语句是无法改变的所以它的灵活性就受到了限制          而如果我们采用动态的 SQL 



语言编程来完成相同的工作时       就允许 SQL 代码的条件在运行时改变 



   在本书中我们其实已经讨论过了相关的每一个主题            几乎每一个数据库供应商都在它 



的语言进行了相应的扩展  TRANSACT…SQL 是 SYBASE 和 MICROSOFT SQL SERVER  的 



产品  而 ORACLE  的产品是 PL/SQL 这里的每一种语言可以完成全部的到目前为止我们 



所讨论的每一件事     此外  每一种产品都对标准的 SQL 进行了相应的扩展 



对 ANSI SQL  的扩展 



   为了演示使用这些扩展来创建实际的程序  我们使用了 SYBASE 和 MICROSOFT  SQL 



SERVER  的 TRANSACT…SQL 它具有大多数的在第三代编程语言中具有的结构         对于针 



对 SQL…SERVER  的特性它也提供了许多便利的工具用以进行数据库编程  在其它的数据库 



供应商中也提供了与之类似和更多的特性 



                                                       410 


…………………………………………………………Page 411……………………………………………………………

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



谁需要使用 TRANSACT…SQL 



   任何一个读过本书的人都会使用 TRANSACT…SQL       如果是一个程序员它偶尔会用它 



来写一个查询    如果是开发员则可以用它写应用程序以创建对象如触发机制和存贮过程等 



注  SYBASE 和 MICROSOFT SQL SERVER  的用户如果想开发实际上的关系数据库应用程 



   序就必须使用 TRANSACZT…SQL 的特性 



TRANSACT…SQL  的基本组件 



   对 SQL  的扩展已经超过了 SQL 作为一种过程型语言的限制  例如  TRANSACT…SQL 



可以让你对数据库的事务进行紧密的控制并且可以写出数据库过程程序以把编程人员从冗 



重的代码中解放出来 



      l  在第 19 天我们主要会提到 TRANSACT…SQL 的以下主要特性 



      l  提供了更大范围的数据类型以优化数据的存贮 



      l  程序流控制命令如 IF…THEN 和 LOOP 语句 



      l  在 SQL 语句中使用变量 



      l  使用 PUTATION 生成摘要报告 



      l  对 SQL 语句的诊断和分析特性 



      l  对标准的 SQL 语句提供了许多其它的选项 



数据类型 



   在第 9  天的  创建和操作表   中我们讨论过数据类型  当使用 SQL 创建表时        我们必 



须为每一列指定数据类型 



注  在不同的 SQL 解释器中数据的类型是不同的        因为每一种数据库服务存储数据的方法 



   都是各不相同的     举例来说    ORACLE 有它自己选定的数据类型       而 SYBASE  和 



  MICROSOFT SQL SERVER 则有他们自己的数据类型 



SYBASE 和 MICROSOFT SQL SERVER 支持下列数据类型 



                                                       411 


…………………………………………………………Page 412……………………………………………………………

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



字符串 



    char 用以存储长度固定的字符串 例如 STATE 的缩写— — 你知道这一列只有两个字符 



   Varchar 用以存储长度可变的字符串          如人名  它是无法对其长度进行预先指定的              例 



如  AL RAY 与 WILLIAM STEPHENSON 



    Text 存贮的字符长度几乎是不受限制的例如一种服务的备注和描述字段 



数字类型 



    int 存储的整型数值范围为…2;147;483;647 到+2;147;483;647 



    Smallint 存储的整型数值的范围为…32;768 到 32;767 



    Tinyint 存储的整型数值的范围为 0 到 255 



    Float 可以存储有精度要求的浮点数         数值范围为+2。23E…308 和+1。79E308 



    Real 可以存储的数据的精度为 1。18E…38 to +3。40E38 



日期类型 



    datetime 可以存储的数值从 Jan 1; 1753 到 Dec 31; 9999 



    Smalldatetime 可以存储的数值从 Jan 1; 1900 到 Jun 6; 2079 



货币类型 



money  的存储数值上限为+922;337;203;685;477。5808 



smallmoney 的存储数值上限为+214;748。3647 



在向表中输入 MONEY 数值类型时要使用美元符号               例如 



    insert payment_tbl (customer_id; paydate; pay_amt) 



   values (012845; 〃May 1; 1997〃; 2099。99) 



二进制串 



binary 存储着长度固定的二进制串 



                                                                   412 


…………………………………………………………Page 413……………………………………………………………

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



Varbinary 存储着长度可变的二进制串 



Image 则用于存储非常大的二进串类型  例如图形和图像 



位   逻辑数据类型 



   bit 数据类型经常用在表中对某行数据进行标识  存储在 bit              数据类型中的数据只有 0 



和 1  例如  如果 1 代表符合某个条件  那么 0 就表示不符合这个条件  在下例中使用了 bit 



数据类型来创建了一个包括个人测试成绩的表格 



   create table test_flag 



   ( ind_id int not null; 



     test_results int not null; 



     result_flag bit not null) 



分析 



   在这里  result_flag  列被定义为 bit 类型  因为这时只需要返回是及格还是不及格  如 



果及格就为 1 否则为 0 



   在今天的余下的时间里           你应该注意在确定的表格中数据类型的使用以及如果写 



TRANSACT…SQL 代码 



注 在今天的例子中的代码既可以是大写也可以是小写 尽管在大多数的 SQL 解释器中 SQL 



   的关键字大小写是不敏感的  但是你还是应该检查你的解释器以进行最终的确定 



使用 TRANSACT…SQL 来访问数据库 



   好了    说得够多了     如果你想运行今天的实例          你需要在名字为 BASEBALL       的数据 



库中创建下边的表 



BASEBALL 数据库 



   BASEBALL  数据库使用了三个表来对 BASEBALL         的信息进行追踪  这三个表分别是 



BATTER  PITCHERS 和 TEAM 表   在今天的剩余时间中我们将一直使用这个例子 



                                                                 413 


…………………………………………………………Page 414……………………………………………………………

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



BASEBALL 表 



    NAME char(30) 



    TEAM int 



    AVERAGE float 



    HOMERUNS int 



    RBIS int 



    这个表可以使用下边的 TRANSACT…SQL 语句来创建 



输入 



     1》 create database BASEBALL on default 



    2》 go 



     1》 use BASEBALL 



    2》 go 



     1》 create table BATTERS ( 



    2》 NAME char(30); 



    3》 TEAM int; 



    4》 AVERAGE float; 



    5》 HOMERUNS int; 



    6》 RBIS int) 



    7》 go 



分析 



    在第 1  行创建了数据库  你创建了名字为 BASEBALL                      的数据库  然后在它的下面用 



创建了一个 BASEBALL 的表 



     向表中输入下表的数据 



注  在上例中的每个 TRANSACT…SQL  语句之后的 GO  命令并不是 TRANSACT…SQL                            的组 



    成部分  它只是将 SQL 语句从前端送到的服务上 



Name             Team   Average   Homeruns   RBIs 

Billy Brewster    1     0。275     14         46 

John Jackson      1     0。293     2          29 



Phil Hartman      1     0。221     13         21 



Jim Gehardy       2     0。316     29         84 



                                                                                  414 


…………………………………………………………Page 415……………………………………………………………

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



Tom Trawick        2      0。258     3           51 

Eric Redstone      2      0。305     0           28 



PITCHERS 表 



可以用下边的 TRANSACT…SQL 语句来创建 PITCHERS 表 



     INPUT: 



     1》 use BASEBALL 



     2》 go 



     1》 create table PITCHERS ( 



     2》 NAME char(30); 



     3》 TEAM int; 



     4》 WON int; 



     5》 LOST int; 



     6》 ERA float) 



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