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

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

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





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