数据库系统原理-第8章-语法及流程控制_第1页
数据库系统原理-第8章-语法及流程控制_第2页
数据库系统原理-第8章-语法及流程控制_第3页
数据库系统原理-第8章-语法及流程控制_第4页
数据库系统原理-第8章-语法及流程控制_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SQLServer2000编程—语法与流程控制Transact-SQL语言的特点Transact-SQL语言是微软对SQL语言的扩展。Transact-SQL语言是一种交互式查询语言,具有功能强大、简单易学的特点。Transact-SQL语言有4个特点:一是一体化的特点,集数据定义语言、数据操纵语言、数据控制语言和附加语言元素为一体。二是两种使用方式,交互式和嵌入到高级语言的使用方式。前者适合于非数据库专业人员使用,后者适合于数据库专业开发人员使用。三是非过程化语言,只需要提出“干什么”,不需要指出“如何干”,语句的操作过程由系统自动完成。四是,类似于人的思维习惯,容易理解和掌握。Transact-SQL语言的组成元素数据控制语言语句数据定义语言语句数据操纵语言语句附加的语言元素数据控制语言语句安全性管理是分布式数据库系统的重要特征。安全性管理就是确保数据库中的数据和操作不能被未授权的用户使用和执行。数据控制语言语句就是用来进行安全性管理,它可以确定哪些用户可以查看或修改数据、或执行数据库中的操作等,这些语句主要包括GRANT、DENY、REVOKE等语句。语句功能说明GRANT授予权限可把语句许可或对象许可的权限授予其他用户和角色REVOKE收回权限与GRANT的功能相反,但不影响该用户或角色从其他角色中作为成员继承许可权限DENY收回权限,并禁止从其他角色继承许可权限功能与REVOKE相似,不同之处:除收回权限外,还禁止从其他角色继承许可权限数据定义语言语句数据定义语言语句用来执行数据库的任务、创建数据库以及数据库中的各种对象,这些语句包括CREATE、ALTER、DROP等语句。在MicrosoftSQLServer2000系统中,数据库及其对象包括数据库、表、缺省、规则、视图、触发器、存储过程等。这些对象的创建、修改和删除等管理都可以通过使用CREATE、ALTER、DROP等语句来完成。语句功能说明CREATE创建数据库或数据库对象不同数据库对象,其CREATE语句的语法形式不同ALTER对数据库或数据库对象进行修改不同数据库对象,其ALTER语句的语法形式不同DROP删除数据库或数据库对象不同数据库对象,其DROP语句的语法形式不同数据操纵语言语句数据操纵语言语句,用来在数据库中操纵各种对象,检索和修改数据,这些语句包括SELECT、INSERT、UPDATE、DELETE等。这些语句都是操纵数据库的最常用到的语句。语句功能说明SELECT从表或视图中检索数据是使用最频繁的SQL语句之一INSERT将数据插入到表或视图中

UPDATE修改表或视图中的数据既可修改表或视图的一行数据,也可修改一组或全部数据DELETE从表或视图中删除数据可根据条件删除指定的数据附加的语言元素附加的语言元素不是ISOSQL-3的标准内容,而是Transact-SQL语言为了编程而增加的语言元素。这些语言元素包括变量、运算符、函数、流程控制语言和注释等等。下面就要介绍这些Transact-SQL语法的要素一、批处理命令批处理是多条Transact-SQL语句构成的集合。SQLServer将批处理语句进行编译形成一个可执行单元,称为执行计划。执行计划中的语句一次执行每一条语句,如果在编译过程中出现语法错误,那么批处理中所有的语句均无法正常执行。如果在运行阶段出现错误时,一般都会中断当前以及其后语句的执行,只有在少数情况下,如违反约束时,仅中断当前出错的语句而继续执行其他语句。在建立批处理时,应该遵循以下规则:不能在批处理中引用其他批处理中所定义的变量。CREATEDEFAULT、CREATEPROCEDURE、CREATERULE、CREATETRIGGER和CREATEVIEW语句不能在批处理中与其它语句组合使用。不允许在一个批处理中更改表结构、并引用新的字段。如果EXECUTE语句是批处理中的第一句,则不需要EXECUTE关键字。如果EXECUTE语句不是批处理中的第一条语句,则需要EXECUTE关键字。EXECUTE/EXEC用于执行用户定义的函数、系统存储过程、用户自定义存储过程或一个扩展的存储过程。在一个Transact-SQL批处理内部,EXEC能控制一个字符串的运行一个完整的批处理需要使用GO语句作为结束标记。GO实际上并不是Transact-SQL语句,向SQLServer描述由Transact-SQL语句组成的批处理二、注释

注释是程序代码中不执行的文本字符串。在SQLServer中,可以使用两种类型的注释字符:一种是ANSI标准的注释符“--”,它用于单行注释;另一种是与C语言相同的注释符号,即“/**/”。注释语句嵌于行内的注释语句块注释语句SELECTproductname

,(unitsinstock-unitsonorder)--

计算存货

,supplierID

FROMproductsGO/*这部分代码检索产品表的所有行并且显示单价,增加了10%的单价和产品名称。

*/USEnorthwindSELECTunitprice,(unitprice*1.1),productname

FROMproductsGO示例2示例1三、标识符标准标识符:第一个字符必须是字母(a~z

或A~Z),第一个字符后可以是数字、字母或各种符号特殊标识符:当标识符的第一个字符是符号时,代表它有特殊用处以@开头的标识符代表局部变量或参数以@@开头的标识符代表全局变量或参数以#开头的标识符代表临时表或存储过程以##开头的标识符代表一个全局临时对象限定标识符当对象名称包含空格时当保留关键字被用作对象名或对象部分的名字时限定标识符限定标识符可以用中括号表示的括号标识符([])

用双引号表示的引用标识符(“”)SELECT*FROM[含空格的表名]SELECT*FROM“含空格的表名”标识符的命名原则使用短的名字尽量使用有意义的名字使用简单明了的命名约定使用能够区分出对象类型的标识符视图存储过程保持对象名和用户名的一致性sales表和sales角色四、数据类型数字型:包括各种整数如int、tinyint、smallint

和bigint日期型:包括datetime

和smalldatetime字符型:包括char、nchar、varchar

和nvarchar二进制型:在存储与结构上与字符型数据相似,包括binary和varbinary惟一标识符(GUID):代表一个全局的特殊标识符,是一个16位16进制的值SQL变量:代表SQLServer所支持的各种数据类型图像和文本:属于大型二进制对象结构(BLOB),代表定长或变长的数据类型表:代表一个表结构,在SQLServer2000中,可以把表保存在字段中游标:用于存储过程的编程中,也会和低层客户接口同时使用。游标从不用于数据定义语言(DDL)语句中用户自定义数据类型:基于系统数据类型,由数据库管理员生成五、常量常量,也称为字面值或标量值,是表示一个特定数据值的符号,在运行过程中其值不会变的量。常量的格式取决于它所表示的值的数据类型。包括:字符型常量,整型常量,实型常量,日期常量等。Example:

‘Thisis…’1212.3‘2002-09-09’六、变量变量对于一种语言来说是必不可少的组成部分。变量有两种形式,局部变量:用户自己使用DECLARE语句定义,名字前要有一个标记符“@”。全局变量:系统提供的,引用全局变量时,名字前要有两个标记符“@@”。局部变量局部变量只具有局部作用范围

只能在定义它的语句、批处理或过程中使用用

DECLARE@

语句定义局部变量用SET或SELECT@语句给局部变量赋值【例】创建局部变量@var1、@var2,并赋值,然后输出变量的值。DECLARE@var1varchar(20),@var2varchar(40)SET@var1='中国'/*一个SET语句只能给一个变量赋值*/SET@var2=@var1+'是一个伟大的国家'select@var1,@var2go

【例】创建一个名为sex的局部变量,并在SELECT语句中使用该局部变量查找表student中所有女同学的学号、姓名。DECLARE@sexchar(2)SET@sex='女'SELECTSNO,SNAMEFROMstudentWHERESSEX=@sexGO【例】使用查询给变量赋值。DECLARE@studentchar(8)SET@student=(SELECTSNAMEFROMstudentWHERESNO='200215121')SELECT@studentGO

用SELECT语句赋值语法格式:SELECT{@local_variable=expression}[,…n]全局变量全局变量:用两个@标识,由SQLServer提供,用户不能创建全局变量设置变量提供SQLServer当前各种特性和参数的设置信息统计变量提供SQLServer自启动后的运行信息系统变量提供最近对表操作的信息一些常用的全局变量:@@CONNECTIONS:返回自上次启动SQLServer以来连接或试图连接的次数。@@MAX_CONNECTIONS:返回SQLServer上允许的同时用户连接的最大数。@@ERROR:返回最后执行的T-SQL语句的错误代码。@@TRANCOUNT:返回当前连接的活动事务数。@@VERSION:返回SQLServer当前安装的日期、版本和处理器类型。@@SERVERNAME:返回运行SQLServer的本地服务器名称。@@SERVICENAME:返回SQLServer正在其下运行的注册表键名。若当前实例为默认实例,则返回MSSQLServer;若当前实例是命名实例,则该函数返回实例名。@@SPID:返回当前用户进程的服务器进程标识符(ID)。@@ROWCOUNT:返回受上一语句影响的行数。@@NESTLEVEL:返回当前存储过程执行的嵌套层次(初始值为0)。@@LANGUAGE:返回当前使用的语言名。@@OPTIONS:返回当前SET选项的信息。@@CPU_BUSY:返回自上次启动SQLServer以来CPU的工作时间,单位为毫秒(基于系统计时器的分辨率)。@@IDLE:返回SQLServer自上次启动后闲置的时间,单位为毫秒(基于系统计时器的分辨率)。@@IDENTITY:返回最后插入的标识值。INSERTINTOjobs(job_desc,min_lvl,max_lvl)VALUES('Accountant',12,125)SELECT@@IDENTITYAS'Identity'

使用全局变量时应该注意以下几点:①全局变量不是由用户的程序定义的,它们是在服务器级定义的。②用户只能使用预先定义的全局变量。③引用全局变量时,必须以“@@”开头。④局部变量的名称不能与全局变量的名称相同,否则会在应用程序中出现不可预测的结果。七、函数在Transact-SQL语言中,函数被用来执行一些特殊的运算以支持SQLServer的标准命令。Transact-SQL编程语言提供了三种函数:㈠行集函数:行集函数可以在Transact-SQL语句中当作表引用。㈡聚合函数:聚合函数用于对一组值执行计算并返回一个单一的值。㈢标量函数:标量函数用于对传递给它的一个或者多个参数值进行处理和计算,并返回一个单一的值。系统函数聚集函数标量函数行集函数SELECT*

FROMOPENQUERY

(OracleSvr,'SELECTname,idFROMowner.titles')

USEnorthwindSELECTAVG(unitprice)ASAvgPriceFROMproductsGOUSEnorthwindSELECTDB_NAME()AS'database‘GOSQLServer中最常用的几种函数字符串函数日期和时间函数数学函数转换函数系统函数聚合函数用户自定义函数1字符串函数字符串函数可以对二进制数据、字符串和表达式执行不同的运算,大多数字符串函数只能用于char和varchar数据类型以及明确转换成char和varchar的数据类型,少数几个字符串函数也可以用于binary和varbinary数据类型。此外,某些字符串函数还能够处理text、ntext、image数据类型的数据。字符串函数的分类:基本字符串函数:UPPER、LOWER、SPACE、REPLICATE、STUFF、REVERSE、LTRIM、RTRIM。字符串查找函数:CHARINDEX、PATINDEX。长度和分析函数:DATALENGTH、RIGHT、SUBSTRING。转换函数:ASCH、CHAR、STR、SOUNDEX、DIFFERENCE。1.Upper功能:返回将小写字符数据转换为大写的字符表达式。

语法:UPPER(character_expression)其中,character_expression由字符数据组成的表达式。可以是常量、变量,也可以是字符或二进制数据的列,它的返回类型为varchar。2.Lower功能:将大写字符数据转换为小写的字符表达式。语法:LOWER(character_expression)其中,character_expression是字符或二进制数据表达式。character_expression

可以是常量、变量或列。Upper()和Lower()函数举例USEpubsGOSELECTlower(SubString(title,1,20))AS书名小写,upper(Substring(title,1,20))AS书名大写,LOWER(UPPER(SUBSTRING(title,1,20)))AsLowerUpperFROMtitlesWHEREpricebetween11.00and20.00USEpubsGOSELECTRTRIM(au_lname)+','+SPACE(5)+LTRIM(au_fname)FROMauthorsORDERBYau_lname,au_fname

GO3.Space功能:返回由重复的空格组成的字符串。语法:SPACE(integer_expression)integer_expression是表示空格个数的正整数。如果integer_expression

为负,则返回空字符串。举例:DECLARE@string_to_trimvarchar(60)SET@string_to_trim='前面有五个空格'SELECT'现在没有空格:'+

LTRIM(@string_to_trim)GO4.Ltrim()功能:删除起始空格后返回字符表达式。语法:LTrim(character_expression)character_expression是字符或二进制数据表达式。举例:DECLARE@string_to_trimvarchar(60)SET@string_to_trim='后面有四个空格'SELECT'现在没有空格:'+CHAR(13)+RTRIM(@string_to_trim)GO5.RTrim功能:截断所有尾随空格后返回一个字符串。语法:RTrim(character_expression)

character_expression是字符或二进制数据表达式。SELECTSTUFF('abcdef',2,3,'ijklmn')GO6.STUFF功能:删除指定长度的字符并在指定的起始点插入另一组字符。语法:STUFF(character_expression,start,length,character_expression)character_expression

由字符数据组成的表达式

Start是一个整型值,指定删除和插入的开始位置。

Length是一个整数,指定要删除的字符数。7.REVERSE功能:返回字符表达式的反转。语法:REVERSE(character_expression)

举例:selectReverse('abcd')举例:USEpubsGOSELECTlength=DATALENGTH(pub_name),pub_nameFROMpublishersORDERBYpub_nameGOselectdatalength('abcd')8.DATALENGTH功能:返回任何表达式所占字节数。语法:DATALENGTH(expression)expression是任何类型的表达式。9.SubString功能:返回字符、binary、text或image表达式的一部分。语法:SUBSTRING(expression,start,length)expression是字符串、二进制字符串、text、image列或包含列的表达式。不要使用包含聚合函数的表达式。Start是一个整数,指定子串的开始位置。Length是一个整数,指定子串的长度(要返回的字符数或字节数)。举例:(1)在字符串上使用SUBSTRINGUSEpubsSELECTau_lname,SUBSTRING(au_fname,1,1)FROMauthorsORDERBYau_lname(2)在text、ntext和image数据上使用SUBSTRINGUSEpubsSELECTpub_id,SUBSTRING(logo,1,10)ASlogo,SUBSTRING(pr_info,1,10)ASpr_infoFROMpub_infoWHEREpub_id='1756'SELECTSUBSTRING('abcdefgh',1,5)10.STR功能:由数字数据转换来的字符数据。语法:STR(float_expression[,length[,decimal]])float_expression

是带小数点的近似数字(float)数据类型的表达式。不要在STR函数中将函数或子查询用作float_expression。Length是总长度,包括小数点、符号、数字或空格。默认值为10。Decimal是小数点右边的位数。举例:(1).SELECTSTR(123.45,6,1)(2).SELECTSTR(123.45,2,2)注意:当表达式超出指定长度时返回**11.LEFT功能:返回从字符串左边开始指定个数的字符。语法:LEFT(charexpression,intexpression)。Charexpression字符或二进制数据表达式,可以是常量、变量或列。intexpression是正整数,如果为负,则返回空字符串。举例:(1)selectleft('abc123',5)(2)USEpubsGOSELECTLEFT(title,5)FROMtitlesORDERBYtitle_idGO2日期和时间函数日期和时间函数用于对日期和时间数据进行各种不同的处理和运算,并返回一个字符串、数字值或日期和时间值。在SQLServer2000中,日期和时间函数的类型如表所示。表日期和时间函数的类型函数参数DATEADD(datepart,number,date)DATEDIFF(datepart,date1,date2)DATENAME(datepart,date)DATEPART(datepart,date)DAY(date)GETDATE()MONTH(date)YEAR(date)1.GetDate()功能:返回当前系统日期和时间。语法:GETDATE()

举例:selectGetDate()as当前日期和时间2.Day()功能:返回代表指定日期的天的日期部分的整数。语法:DAY(date)

举例:

selectday(GetDate())as当前日

selectday('2004/09/28')注意:常量字符串加‘’3.Month()功能:返回代表指定日期月份的整数。语法:Month(date)

举例:selectMonth(GetDate())as当前月

selectMonth('2004/09/28')注意:常量字符串加‘’4.Year()功能:返回代表指定日期年份的整数。语法:Year(date)

举例:selectYear(GetDate())as当前年份

selectYear('2004/09/28')3数学函数数学函数用于对数字表达式进行数学运算并返回运算结果。数学函数可以对SQLServer提供的数字数据(decimal、integer、float、real、money、smallmoney、smallint和tinyint)进行处理。1.Floor()功能:返回小于或等于所给数字表达式的最大整数。语法:FLOOR(numeric_expression)举例:SELECTFLOOR(123.45),FLOOR(-123.45),FLOOR($123.45)2.Round()功能:返回数字表达式并四舍五入为指定的长度或精度。语法:ROUND(numeric_expression,length[,function])

举例:SELECTROUND(123.9994,3),ROUND(123.9995,3)

3.power()功能:返回给定表达式乘指定次方的值。语法:POWER(numeric_expression,y)举例:selectpower(3,2)4.rand()功能:返回0到1之间的随机float值。语法:rand(seed)举例:selectrand()4转换函数一般情况下,SQLServer会自动处理某些数据类型的转换。例如,如果比较char和datetime表达式、smallint和int表达式、或不同长度的char表达式,SQLServer可以将它们自动转换,这种转换被称为隐性转换。但是,无法由SQLServer自动转换的或者是SQLServer自动转换的结果不符合预期结果的,就需要使用转换函数做显示转换。转换函数有两个:CONVERT和CAST。CONVERT和CAST函数将某种数据类型的表达式显式转换为另一种数据类型。CAST和CONVERT提供相似的功能。语法CAST(expressionASdata_type)CONVERT(data_type[(length)],expression)举例USEpubsSELECTtitle,ytd_salesFROMtitlesWHERECAST(ytd_salesASchar(20))LIKE'15%'ANDtype='trad_cook‘USEpubsGOSELECTSUBSTRING(title,1,30)ASTitle,ytd_sales

FROMtitlesWHERECONVERT(char(20),ytd_sales)LIKE'3%'GO5聚合函数主要包括AVG,COUNT,MAX,MIN,SUM等。聚合函数对一组值执行计算并返回单一的值。除COUNT函数之外,聚合函数忽略空值。聚合函数经常与SELECT语句的GROUPBY子句一同使用。举例USEpubsGO--AggregatefunctionsSELECTtype,SUM(price),SUM(advance)FROMtitlesWHEREtypeLIKE'%cook'GROUPBYtypeORDERBYtypeGO6用户自定义函数内置函数。用户自定义函数的可带参数,也可不带,但数据类型不能是时间戳(timestamp)、游标(cursor)和表(table)。1.函数定义利用createfunction语句创建函数。2.函数调用函数调用形式:所有者名.函数名(实参1,…实参n)3.用户函数的删除利用dropfunction语句进行函数的删除。八、运算符

运算符类别所包含运算符赋值运算符=(赋值)算术运算符+(加)、-(减)、*(乖)、/(除)、%(取模)按位运算符&(位与)、|(位或)、^(位异或)字符串串联运算符(连接)比较运算符=(等于)、>(大于)、>=(大于等于)、<(小于)、<=(小于等于)、<>(或!=不等于)、!<(不小于)、!>(不大于)逻辑运算符all(所有)、and(与)、any(任意一个)、between(两者之间)、exists(存在)、in(在范围内)、like(匹配)、not(非)、or(或)、some(任意一个)一元运算符、+(正)、-(负)、~(取反)九、表达式各种符号和运算符的组合对单个数据进行操作表达式结果的数据类型由表达式中的成员决定USEnorthwindSELECTOrderID,ProductID,(UnitPrice*Quantity)asExtendedAmountFROM[OrderDetails]WHERE(UnitPrice*Quantity)>10000GO示例十、流控制的语言元素语句级:流程控制语句是指那些用来控制程序执行和流程分支的命令,在SQLServer2000中,流程控制语句主要用来控制SQL语句、语句块或者存储过程的执行流程。BEGIN…END块IF…ELSE块WHILE块行级CASE语句DECLARE@ntinyintSET@n=5IF(@nBETWEEN4and6)BEGINWHILE(@n>0)BEGINSELECT@nAS'Number',CASEWHEN

(@n%2)=1

THEN‘ODD'

ELSE‘EVEN'

ENDAS'Type'SET@n=@n-1ENDENDELSEPRINT'NOANALYSIS‘GO示例流控制的语言元素(续)CASE的派生函数COALESCE

返回表达式列表中第一个非NULL表达式NULLIF

如果两个表达式相等返回NULL,否则返回第一个表达式ISNULL

如果第一个表达式为非NULL,返回第一个表达式,否则返回第二个表达式COALECSE(表达式1,表达式2,…,表达式n)NULLIF(表达式1,表达式2)ISNULL(表达式1,表达式2)IF…ELSE语句

IF…ELSE语句是条件判断语句,其中,ELSE子句是可选的,最简单的IF语句没有ELSE子句部分。IF…ELSE语句用来判断当某一条件成立时执行某段程序,条件不成立时执行另一段程序。SQLServer允许嵌套使用IF…ELSE语句,而且嵌套层数没有限制。IF…ELSE语句的语法形式IFBoolean_expression

{sql_statement|statement_block}

[ELSE

{sql_statement|statement_block}]例:下面的示例显示带有语句块的IF条件。如果书的平均价格不低于$15,那么就显示文本:平均价格超过$15.USEpubsGOIF(SELECTAVG(price)FROMtitlesWHEREtype='mod_cook')<$15

BEGINPRINT‘以下是现代烹调类的书籍:'PRINT''SELECTSUBSTRING(title,1,35)ASTitleFROMtitlesWHEREtype='mod_cook'ENDELSE

PRINT'平均价格超过$15.'

IF…ELSE语句在实际程序中,IF…ELSE语句中不止包含一条语句,而是一组的SQL语句。为了可以一次执行一组SQL语句,这时就需要使用BEGIN…END语句将多条语句封闭起来。其语法格式为:BEGIN

sql_statement

|statement_block

END

CASE函数

CASE函数可以计算多个条件式,并将其中一个符合条件的结果表达式返回。CASE函数按照使用形式的不同,可以分为简单CASE函数和搜索CASE函数。简单CASE函数:

CASEinput_expression

WHENwhen_expression

THENresult_expression

[...n]

[ELSEelse_result_expression]

END【例】根据系统时间判断当前日期所对应的星期值并且输出结果。在查询分析器中运行如下命令:DECLARE@dtDATETIMESET@dt=DATEPART(w,GETDATE())SELECTCASE@dtWHEN1THEN'星期天' WHEN2THEN'星期一' WHEN3THEN'星期二' WHEN4THEN'星期三' WHEN5THEN'星期四' WHEN6THEN'星期五' WHEN7THEN'星期六'

END该实例中,首先通过DATEPART函数获得当前时间所对应的星期数,范围为1至7,其中1代表星期天,7代表星期六,构造一个条件分支。然后将系统的星期数值通过CASE函数转换为相应的字符串信息并显示结果。例:显示各读者可借书的数量。USELibraryGOSELECTRname,rt.TypenameAS类型,限借阅量=

CASEr.TypeID

WHEN3THEN'可以借x本书!' WHEN2THEN'可以借y本书!' WHEN1THEN'可以借z本书!' ELSE'无规定'ENDFROMReaderr,ReaderType

rtWHEREr.TypeID=rt.TypeIDGOCASE搜索函数:

CASE

WHENBoolean_expressionTHENresult_expression

[...n]

[

ELSE

else_result_expression]

END【例】取得系统时间,并且判断当前时间在一天中所处的时间段,并且在查询分析器中输出提示信息。在查询分析器中运行如下命令:DECLARE@sjDATETIMESET@sj=DATEPART(hh,GETDATE())SELECTCASEWHEN@sj>=20and@sj<24THEN'晚上'WHEN@sj>=14and@sj<20THEN'下午'WHEN@sj>=12and@sj<14THEN'中午'WHEN@sj>=10and@sj<12THEN'早晨'WHEN@sj>=0and@sj<10THEN'临晨'END本例中首先通过DATEPART函数取得当前时间中的小时数,并保存在@sj变量中,然后构造CASE函数,用于确定不同的条件分支。将变量@sj分别与CASE函数中的条件依次进行比较,直到满足条件时输出结果。例:USELibraryGOSELECTRname,rt.TypenameAS类型,限借阅量=CASEWHENr.TypeID=3THEN'可以借x本书!'WHENr.TypeID=2THEN'可以借y本书!'WHENr.TypeID=1THEN'可以借z本书!'ELSE'无规定'ENDFROMReaderr,ReaderType

rtWHEREr.TypeID=rt.TypeIDGOWHILE..CONTINUE..BREAK语句

WHILE…CONTINUE…BREAK语句用于设置重复执行SQL语句或语句块的条件。只要指定的条件为真,就重复执行语句。其中,CONTINUE语句可以使程序跳过CONTINUE语句后面的语句,回到WHILE循环的第一行命令。BREAK语句则使程序完全跳出循环,结束WHILE语句的执行。

WHILEBoolean_expression

sql_statement|statement_block

[BREAK]

sql_statement|statement_block

[CONTINUE]【例】利用循环计算1+2+3+…+99+100的值。在查询分析器中运行如下命令:DECLARE@sumint,@iintSET@sum=0SET@i=1WHILE@i<=100BEGINSET@sum=@sum+@i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论