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

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

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




和 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) 



     7》 go 



     向其中输入下表的数据 



Name                Team      Won    Lost    Era 

Tom Madden          1         7      5       3。46 

Bill Witter         1         8      2       2。75 



Jeff Knox           2         2      8       4。82 



Hank Arnold         2         13      1      1。93 



Tim Smythe          3         4      2       2。76 



TEAM  表 



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



输入 



     1》 use BASEBALL 



     2》 go 



     1》 create table TEAMS ( 



     2》 TEAM_ID int; 



     3》 CITY char(30); 



                                                                                       415 


…………………………………………………………Page 416……………………………………………………………

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



    4》 NAME char(30); 



    5》 WON int; 



    6》 LOST int; 



    7》 TOTAL_HOME_ATTENDANCE int; 



    8》 AVG_HOME_ATTENDANCE int) 



    9》 go 



Team_ID      City         Name          Won          Lost 



1            Portland     Beavers       72           63 



2            Washington   Representatives 50         85 



3            Tampa        Sharks        99           36 



定义局部变量 



    每一个编程语言都为你提供了一种方法使你可以创建局部                        或全局     变量以存储一些 



数据  TRANSACT…SQL     当然也不例外  在 TRANSACT…SQL        中定义变量是非常容易的事 



情   关键是你必须要使用 DECLARE 关键字  语法的形式如下 



语法 



    declare @variable_name data_type 



    如果你想定义一个字符串来存储 PLAYER 的名字  那么你可以使用下边的语句 



    1》 declare @name char(30) 



    2》 go 



    注意在变量之前有一个@符号  这个符号在查询中用以标识变量 



定义全局变量 



    如果你对 TRANSACT…SQL      看得更多     你会知道@@提示符会优先于系统级的变量 



这个语法用以表明在 SQL SERVER 中定义的存储信息的全局变量 



    在使用存储过程的时候你可以自己定义全局变量是非常有用的                         SQL  SERVER  也提供 



了几种系统全局变量  对于数据库的系统用户来说它可能是有用的                           下表中给出了这些变 



量的全部清单       你可以在 SQL SERVER SYSTEM10 的文档中找到它 



变量名                作用 

@@char_convert      如果字符转换成功时其值为0 

@@client_csid      客户机所使用字符集的ID 



                                                                       416 


…………………………………………………………Page 417……………………………………………………………

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



@@client_csname   客户机的字符集的名字 

@@connections     从SQL Server启动以来的登录次数 

@@cpu_busy        从SQL Server启动以来的CPU     忙  的时间总数 

@@error           错误的状态 

@@identity        插入到确定列中的最后一个值 

@@idle            从SQL Server启动以来的总时间数 

@@io_busy         SQL Server用于I/O操作的时间 

@@isolation       当前的Transact…SQL程序的隔离级别 

@@langid          定义了本地语言的ID号 

@@language        定义了本地语言的名称 

@@maxcharlen      字符的最大长度 

@@max_connections 可与SQL SERVER进行连接的最大数量 

@@ncharsize       Average length of a national character。 

@@nestlevel       当前进程的嵌套级别 

@@pack_received   从SQL Server启动以来的读入的数据包的数量 

@@pack_sent       从SQL Server所发出的输出包的数量 

@@packet_errors   从SQL Server启动以来产生错误的数量 

@@procid          当前正在运行的存储过程的ID号 

@@rowcount        上一个命令所涉及的行数 

@@servername      本地local SQL Server的名字 

@@spid            当前正在处理的进程ID号 

@@sqlstatus       存储状态信息 

@@textsize        由SELECT语句所返回的文本映像的最大长度 

@@thresh_hysteresis  Change in free space required to activate a threshold。 

@@timeticks       Number of microseconds per tick。 

@@total_errors    在读写过程中产生的错误数 

@@total_read      在SQL Server启动以来读磁盘的次数 

@@total_write     在SQL Server启动以来写磁盘的次数 

@@tranchained     在Transact…SQL程序中当前事务的模式 

@@trancount       事务的嵌套级别 

@@transtate       当一个语句运行后当前事务的状态 

@@version         当前SQL Server的版本日期 



使用变量 



    使用 DELCARE   关键字你也可以在一行中同时定义多个变量  尽管在稍后你在看你的 



代码的时候可以能糊涂          见下例 



    1》 declare @batter_name char(30); @team int; @average float 



   2》 go 



   接下来的部分将会说明如何使用变量进行有用的程序操作 



使用变量来存储数据 



   变量只有在当前的语句块中有效             在 TRANSACT…SQL  中如果你想运行一个语句块 



                                                                   417 


…………………………………………………………Page 418……………………………………………………………

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



你需要使用 GO 语句  在 ORACLE 中的分号有相同的作用 变量只能在当前事务中被引用 



    你不能使用= 来简单地初始化变量             你可以试一下下边的语句  你将会发现它会返回 



错误 



输入 



    1》 declare @name char(30) 



    2》 @name = 〃Billy Brewster〃 



    3》 go 



    你将会收到一个错误信息告诉你第二行的语法是不正确的                       正确的初始化变量的方法 



是使用 SELECT 语句      你已经会使用这个命令了            现在用正确的语法来重复上边的例子 



输入 



    1》 declare @name char(30) 



    2》 select @name = 〃Billy Brewster〃 



    3》 go 



    这个语句将会正确的执行           如果你在 GO  语句之前又插入了其它的语句                那么该变量 



就可以在其它的语句中使用 



将数据存入局部变量 



    变量经常用来存储从数据库中获得的数据  它们也可以在通常的 SQL 语句中使用  如 



SELECT   INSERT  UPDATE 和 DELETE   下例中给出了使用方法 



例 19    1 



    这个例子将会返回在 BASEBALL 表中的在 Portland  Beavers。 的平均击球成功率最高的 



PLAYER 的名字 



输入 



    1》 declare @team_id int; @player_name char(30); @max_avg float 



    2》 select @team_id = TEAM_ID from TEAMS where CITY = 〃Portland〃 



    3》 select @max_avg = max(AVERAGE) from BATTERS where TEAM = @team_id 



    4》 select @player_name = NAME from BATTERS where AVERAGE = @max_avg 



                                                                      418 


…………………………………………………………Page 419……………………………………………………………

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



    5》 go 



    在本例中分成了三个查询以给出变量的使用演示 



PRINT 命令 



    TRANSACT…SQL  的另一个有用的功能就是 PRINT          它可以让你向显示设备上输出信 



息  该命令的语法格式如下 



语法 



    PRINT character_string 



    尽管 PRINT 命令只可以输入字符串  但是在 TRANSACT…SQL  中提供了很多的函数可 



以让你把其它的数据类型转化为字符串  而且还可以逆向转换 



例 19    2 



    本例重复了上边的例子  但是在最后则可以将 PLAYER 的名字打印出来 



输入 



    1》 declare @team_id int; @player_name char(30); @max_avg float 



    2》 select @team_id = TEAM_ID from TEAMS where CITY = 〃Portland〃 



    3》 select @max_avg = max(AVERAGE) from BATTERS where TEAM = @team_id 



   4》 select @player_name = NAME from BATTERS where AVERAGE = @max_avg 



    5》 print @player_name 



    6》 go 



    注意在 WHERE 子句     或其它的子句       中也可以使用变量  就好象它们是常量一样 



流控制 



    对于 TRANSACT…SQL   的最为强大的功能也许就是它具有程序流的控制功能  如果你 



使用其它的语言如 C        COBOL  PASCAL   VISUAL  BASIC  编过程序  那么你也许会见过 



类似于 IF     THEN 或循环的控制命令  这一部分包括了一些主要的程序流控制命令 



                                                                   419 


…………………………………………………………Page 420……………………………………………………………

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



BEGIN             END 语句 



     TRANSACT…SQL  使用 BEGIN  和 END  来标记一个程序语句块的开始和结束  在其它 

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