《SQL语言补充课件》由会员分享,可在线阅读,更多相关《SQL语言补充课件(68页珍藏版)》请在金锄头文库上搜索。
1、数据库设计与应用数据库设计与应用SQL语言补充语言补充PPT课件课件T-SQL语言SQL语言补充语言补充PPT课件课件T-SQL其它语言元素其它语言元素注释变量运算符函数流程控制语句SQL语言补充语言补充PPT课件课件1. 注释注释T-SQL提供两种类型的注释字符:一种是ANSI标准的注释符“-”,用于单行注释;另一种是与C语言相同的程序注释符号,即“/*/”,用于注释多行文字。注释是程序代码中不执行的文本字符串。SQL语言补充语言补充PPT课件课件2.变量1.变量变量变量名必须是一个合法的标识符。1)标识符)标识符(1)常规标识符不允许使用不允许使用T-SQL的保留字,且不允许嵌入空格的保留
2、字,且不允许嵌入空格或其他特殊字符。或其他特殊字符。(2)分隔标识符包含在双引号(“)或者方括号()内的常规标识符或不符合常规标识符规则的标识符。若标识符中若标识符中有空格,必须使用双引号有空格,必须使用双引号或方括号或方括号。SQL语言补充语言补充PPT课件课件(2 2)变量的分类)变量的分类Transact-SQL语言包括两种形式的变量:用户自己定义的局部变量;系统提供的全局变量。SQL语言补充语言补充PPT课件课件1.局部变量局部变量局部变量是一个能够拥有特定数据类型的对象,它的作用范围仅限在程序内部。局部变量必须先定义才能被引用。使用DECLARE命令定义局部变量,引用局部变量时必须在
3、其名称前加上标志“”。局部变量用于保存单个数据值,供控制流语句测试以及保存由存储过程返回的数据值等。例如,保存运算的中间结果,作为循环变量等。SQL语言补充语言补充PPT课件课件1)局部变量的定义局部变量的定义在批处理或过程中用DECLARE语句声明局部变量。语法格式:语法格式:DECLARElocal_variabledata_type,.n2.局部变量的使用局部变量的使用local_variable指定局部变量的名称;datatype设置局部变量的数据类型及大小。局部变量可以为除text,ntext,image类型以外的任何数据类型。所有局部变量在声明后均初始化为所有局部变量在声明后均初始
4、化为NULL,可以使用SELECT或SET设定相应的值。SQL语言补充语言补充PPT课件课件2)局部变量赋值(局部变量赋值(SET或或SELECT语句)语句)将DECLARE语句创建的局部变量设置为给定表达式的值。SET语句语法格式:语句语法格式:SETlocal_variableexpression【例例1】创建局部变量var1、var2,并赋值,然后输出变量的值。DECLAREvar1,var2char(20)SETvar1中国中国/*一个一个SET语句只能给一个变量赋值语句只能给一个变量赋值*/SETvar2var1+是一个伟大的国家是一个伟大的国家SELECTvar1,var2/*输出
5、变量的值输出变量的值*/GoSQL语言补充语言补充PPT课件课件【例例3】使用查询给变量赋值。USEXSCJDECLAREstudentchar(8)SETstudent=(SELECT姓名姓名FROMXS)GO/*该语句若该语句若XS表中只有一条记录,可正常执行,否则将出错表中只有一条记录,可正常执行,否则将出错。*/【例例2】创建一个名为sex的局部变量,并在SELECT语句中使用该局部变量查找表XS中所有女同学的学号、姓名。USEXSCJDECLAREsexbitSETsex=0SELECT学号学号,姓名姓名FROMXSWHERE性别性别=sexGOSQL语言补充语言补充PPT课件课件S
6、ELECT赋值语句的语法格式:赋值语句的语法格式:SELECTlocal_variable=expression,n说明如下:说明如下:1)SELECT语句通常用于将单个值返回到变量中,若有多个值时,将返回的最后一个值赋给变量;2)若无返回行,则变量将保留当前值;3)若expression不返回值,则变量设为NULL;4)一个SELECT语句可以初始化多个局部变量。SELECT语句也可用于局部变量的查看,格式如下:SELECT local_variable PRINT local_variable也可用于局部变量的查看SQL语言补充语言补充PPT课件课件【例例4】在XS表中不存在符合要求的结果
7、,因此对该表的查询不返回结果,变量var1将保留原值。USEXSCJDECLAREvar1nvarchar(30)SELECTvar1=刘丰刘丰SELECTvar1=姓名姓名/*将姓名列的值赋给变量将姓名列的值赋给变量*/FROMXSWHERE学号学号=64122312111SELECTvar1ASNAME/*var1为为刘丰刘丰*/SQL语言补充语言补充PPT课件课件3)局部游标变量的定义与赋值)局部游标变量的定义与赋值(1)局部游标变量的定义语法格式:语法格式:DECLAREcursor_variable_nameCURSOR,.nCURSOR表示该变量为游标变量。表示该变量为游标变量。(
8、2)游标变量的使用步骤定义游标变量给游标变量赋值打开游标利用游标读取行(记录)使用结束后关闭游标删除游标的引用。SQL语言补充语言补充PPT课件课件(3)局部游标变量的赋值:利用SET语句赋值语法格式:语法格式:SETcursor_variable=cursor_variable|/*将一个已存在的并且赋值的将一个已存在的并且赋值的游标变量的值赋给另一局部游标变量游标变量的值赋给另一局部游标变量*/cursor_name|/*将一个已申明的游标名赋给指定的局部游标变量将一个已申明的游标名赋给指定的局部游标变量*/CURSOR子句子句/*申明一个游标,同时将其赋给指定的局部游标变量申明一个游标,
9、同时将其赋给指定的局部游标变量*/SQL语言补充语言补充PPT课件课件【例例5】使用游标变量USEXSCJDECLARECursorVarCURSOR /*定义游标变量定义游标变量*/SETCursorVar=CURSORSCROLLDYNAMIC/*给游标变量赋值给游标变量赋值*/FORSELECT学号学号,姓名姓名FROMXSWHERE姓名姓名LIKE王王%OPENCursorVar /*打开游标打开游标*/FETCHNEXTFROMCursorVar/*游标指向第一行记录游标指向第一行记录*/WHILEFETCH_STATUS=0/*FETCH_STATUS保存保存FETCH语句的执行状
10、态,其值为语句的执行状态,其值为0表示上一条执行成功;为表示上一条执行成功;为-1表示表示FETCH语句失败或此行不在结果集中;为语句失败或此行不在结果集中;为-2表示被提取的行不存在(已删除)。表示被提取的行不存在(已删除)。*/BEGINFETCHNEXTFROMCursorVar/*通过游标读行记录通过游标读行记录*/ENDCLOSECursorVar/*关闭游标关闭游标*/DEALLOCATECursorVar/*删除对游标的引用删除对游标的引用*/SQL语言补充语言补充PPT课件课件3.全局变量的使用全局变量的使用全局变量由系统提供且预先声明,是SQLServer系统内部使用的变量,
11、其作用范围并不仅限于某一程序,而是任何程序均可以随时调用。通常存储SQLServer的配置设定值和统计数据。用户可以在程序中用全局变量来测试系统的设定值或者是Transact-SQL命令执行后的状态值。SQL语言补充语言补充PPT课件课件使用全局变量时应该注意以下几点:使用全局变量时应该注意以下几点:全局变量不是由用户的程序定义的,而是在服务器级定义的。用户只能使用预先定义的全局变量。引用全局变量时,必须以标记符“”开头。局部变量的名称不能与全局变量的名称相同,否则会在应用程序中出现不可预测的结果。SQL语言补充语言补充PPT课件课件SQLServer支持的全局变量主要包括:支持的全局变量主要
12、包括:CONNECTIONS:返回自最近一次启动SQLServer以来连接或试图连接的次数。ERROR:返回最后执行SQL语句的错误代码。ROWCOUNT:返返回回上上一一次次语语句句影影响响的的数数据据行行的的行数行数。SERVERNAME:返回运行SQLServer的本地服务器的名称。VERSION:返回SQLServer当前安装的日期、版本和处理器类型。全全 局局 变变 量量 的的 查查 看看 语语 句句 同同 局局 部部 变变 量量 : SELECTvariableSQL语言补充语言补充PPT课件课件SQLServer2000的运算符主要有以下六大类:算术运算符位运算符比较运算符逻辑运
13、算符字符串串联运算符赋值运算符2运算符与表达式运算符与表达式SQL语言补充语言补充PPT课件课件1算术运算符算术运算符算术运算符有:+(加)、-(减)、*(乘)、/(除)和%(求模)五种运算。+(加)和(减)运算符也可用于对datetime及smalldatetime值进行算术运算。【例例6】求学生的年龄。USEXSCJSETNOCOUNTONDECLAREstartdatedatetimeSETstartdate=getdate()/*当前日期当前日期*/SELECTstartdate出生时间出生时间AS年龄年龄FROMXSSQL语言补充语言补充PPT课件课件位运算符在两个表达式之间执行位操
14、作,这两个表达式的类型可为整型或与整型兼容的数据类型(如:字符型等,但不能为image类型)。位运算符如表所示。2位运算符位运算符运算符运算符运算运算规则&两个位均为1时,结果为1,否则为0|只要一个位为1,结果为1,否则为0两个位值不同时,结果为1,否则为0SQL语言补充语言补充PPT课件课件比较运算符(又称关系运算符)如表所示,用于测试两个表达式的值是否相同,其运算结果为逻辑值,可以为三种之一:TRUE、FALSE及UNKNOWN。3.比较运算符比较运算符运算符运算符含含义=相等相等大于大于=大于等于大于等于=小于等于小于等于、!=不等于不等于!不大于不大于SQL语言补充语言补充PPT课件
15、课件逻辑运算符用于对某个条件进行测试,运算结果为TRUE或FALSE。SQLServer提供的逻辑运算符如表所示。4.逻辑运算符逻辑运算符运算符运算符运算运算规则AND如果两个操作数如果两个操作数值都都为TRUE,运算,运算结果果为TRUE。OR如果两个操作数中有一个如果两个操作数中有一个为TRUE,运算,运算结果果为TRUE。NOT若一个操作数若一个操作数值为TRUE,运算运算结果果为FALSE,否,否则为TRUE。ALL如果每个操作数如果每个操作数值都都为TRUE,运算,运算结果果为TRUE。ANY在一系列操作数中只要有一个在一系列操作数中只要有一个为TRUE,运算,运算结果果为TRUE。
16、BETWEEN如果操作数在指定的范如果操作数在指定的范围内,运算内,运算结果果为TRUE。EXISTS如果子如果子查询包含一些行,运算包含一些行,运算结果果为TRUE。IN如果操作数如果操作数值等于表达式列表中的一个,运算等于表达式列表中的一个,运算结果果为TRUE。LIKE如果操作数与一种模式相匹配,运算如果操作数与一种模式相匹配,运算结果果为TRUE。SOME如果在一系列操作数中,有些如果在一系列操作数中,有些值为TRUE,运算,运算结果果为TRUE。SQL语言补充语言补充PPT课件课件LIKE的使用的使用语法格式:语法格式:match_expressionNOTLIKEpatternES
17、CAPEescape_character通配符通配符说明明示例示例%代表代表0个或多个字符。个或多个字符。WHERE姓名姓名LIKE刘刘%查询姓刘的学生。姓刘的学生。_(下划下划线)代表代表单个字符。个字符。WHERE姓名姓名LIKE张_查询姓姓张的名的名为一个一个汉字的所有人名。字的所有人名。指定范指定范围(如:如:a-f、0-9)或集或集合合(如如abcdef)中的任何中的任何单个个字符。字符。WHERE substring(学学 号号 ,1,1) LIKE12%查询首字符首字符为1、2的学号。的学号。指定不属于范指定不属于范围(如:如:a-f、0-9)或集合或集合(如:如:abcdef)
18、的任何的任何单个字符。个字符。WHERE substring(学学 号号 ,1,1) LIKE1-9%查询首字符不为查询首字符不为1-9任一字符的学号。任一字符的学号。SQL语言补充语言补充PPT课件课件【例例7】查询课程名以C或A开头的情况。USEXSCJSELECT*FROMKCWHERE课程名课程名LIKEAC%SQL语言补充语言补充PPT课件课件通过运算符“+”实现两个字符串的联接运算。将“+”号两边的字符串串联成一个字符串。【例例8】多个字符串的联接。USEXSCJSELECT(学号+,+SPACE(1)+姓名)AS学号及姓名FROMXSWHERESUBSTRING(学号,1,2)=
19、19/*取子串*/5.字符串联接运算符字符串联接运算符SQL语言补充语言补充PPT课件课件一元运算符有+(正)、-(负)和(按位取反)。如a的值为12(0000000000001100)则a的值为:11111111111100116.一元运算符一元运算符SQL语言补充语言补充PPT课件课件7.赋值运算符赋值运算符T-SQL只有一个赋值运算符,即等号(=)。赋值运算符可以将数据值指派给特定的对象。如给局部变量赋值的SET和SELECT语句中使用的“=”。利用赋值运算符可以在列标题和为列定义值的表达式之间建立对应关系。SQL语言补充语言补充PPT课件课件3流程控制语句控制控制语句句说明明IF.EL
20、SE条件语句GOTO无条件转移语句WHILE循环语句CONTINUE用于重新开始下一次循环BREAK用于退出最内层的循环RETURN无条件返回SQLServer中提供了如表所示的流程控制语句SQL语言补充语言补充PPT课件课件3.1IF.ELSE语句在程序中如果要对给定的条件进行判定,当条件为真或假时分别执行不同的T-SQL语句,可用IF.ELSE语句实现。语法格式:语法格式:IFBoolean_expression/*条件表达式*/sql_statement|statement_block/*条件表达式为真时执行*/ELSEsql_statement|statement_block/*条件表
21、达式为假时执行*/SQL语言补充语言补充PPT课件课件IFELSE语句中,IF子句是必须的,ELSE子句是可选的,最简单的IF语句没有ELSE子句部分。SQLServer允许嵌套使用IFELSE语句,而且嵌套层数没有限制。IF条件表达式A/*T-SQL语句或语句块*/ELSEB/*T-SQL语句或语句块*/当条件表达式的值为真时执行A,然后执行IF语句的下一语句;条件表达式的值为假时执行B,然后执行IF语句的下一语句。SQL语言补充语言补充PPT课件课件【例例8】如下程序用于查询总学分40的学生人数。USEXSCJDECLAREnumintSELECTnum=(SELECTCOUNT(姓名姓名
22、)FROMXSWHERE总学分总学分40)IFnum0SELECTnumAS总学分总学分40的人数的人数SQL语言补充语言补充PPT课件课件【例例9】如果“数据库原理课程”的平均成绩高于75分,则显示“平均成绩高于75分”。USEXSCJDECLAREtext1char(20)SETtext1=平均成绩高于平均成绩高于75.IF(SELECTAVG(成绩成绩)FROMXS_KC,KCWHEREXS_KC.课程号课程号=KC.课程号课程号ANDKC.课程名课程名=数据库原理数据库原理)75SELECTtext1=平均成绩低于平均成绩低于75.ELSESELECTtext1SQL语言补充语言补充P
23、PT课件课件【例例10】IF.ELSE语句的嵌套使用。USEXSCJIF(SELECTAVG(成绩成绩)FROMXS_KC,KCWHEREXS_KC.课程号课程号=KC.课程号课程号ANDKC.课程名课程名=数据库原理数据库原理)75SELECT平均成绩高于平均成绩高于75SQL语言补充语言补充PPT课件课件BEGINEND语句语句BEGINEND语句将多个T-SQL语句组合成一个语句块,并将它们视为一个单元处理。在条件语句和循环等控制流程语句中,当符合特定条件便要执行两个或者多个语句时,就需要使用BEGINEND语句。语法形式为: BEGIN sql_statement | statemen
24、t_block END SQL语言补充语言补充PPT课件课件3.2GOTO语句语句GOTO语句可以使程序直接跳到指定的标有标识符的位置处继续执行,而位于GOTO语句和标识符之间的程序将不会被执行。通常,应尽量少用GOTO语句。GOTO语句和标识符可以用在语句块、批处理和存储过程中,标识符可以为数字与字符的组合,但必须以“:”结尾。语法形式如下: GOTO label label:SQL语言补充语言补充PPT课件课件3.3WHILECONTINUEBREAK语句语句WHILECONTINUEBREAK语句用于设置重复执行SQL语句或语句块的条件。只要指定的条件为真,就重复执行语句。CONTINU
25、E语句可以使程序跳过CONTINUE语句后面的语句,回到WHILE循环的第一行命令。BREAK语句则使程序退出其所在的这一层循环,结束该层循环语句的执行。SQL语言补充语言补充PPT课件课件WHILE语句的语法形式为:语句的语法形式为:WHILE Boolean_expression sql_statement | statement_block BREAK sql_statement | statement_block CONTINUE SQL语言补充语言补充PPT课件课件【例例11】显示字符串China中每个字符的ASCII值和字符。DECLAREpositionint,stringcha
26、r(8)SETposition=1SETstring=ChinaWHILEposition75,将返回状态代码1,将返回状态代码2。USEXSCJCREATEPROCEDUREcheckavgparamvarchar(10)ASIF(SELECTAVG(成绩成绩)FROMXS_KCWHEREXS_KC学号学号=paramGROUPBY学号学号)75RETURN1ELSERETURN2SQL语言补充语言补充PPT课件课件例13查询课程号为查询课程号为“C01”课程的平均成绩,若平均成课程的平均成绩,若平均成绩小于绩小于50,则用原成绩,则用原成绩*1.2来更新该门课成绩。来更新该门课成绩。若最高
27、成绩大于若最高成绩大于90分,则退出,否则继续执行。分,则退出,否则继续执行。SQL语言补充语言补充PPT课件课件USEXSCJGOWHILE(SELECTAVG(成绩成绩)FROMXS_KCWHERE课程号课程号=C01)90BREAK-若最高分大于若最高分大于90,则退出循环,则退出循环ELSECONTINUE-否则,继续执行否则,继续执行ENDSQL语言补充语言补充PPT课件课件例例14利用利用GOTO语句求出从语句求出从1加到加到5的总和;的总和;利用利用WHILE语句求语句求1-50的偶数和。的偶数和。SQL语言补充语言补充PPT课件课件declare sum int, count
28、intselect sum=0, count=1label_1: select sum=sum+count select count=count+1 if count=5 goto label_1select count, sum也可用也可用WHILE语句来实现语句来实现SQL语言补充语言补充PPT课件课件declare sum int, count intselect sum=0, count=2While (count=50 )begin select sum=sum+count select count=count+2endPrint s=+str(sum)SQL语言补充语言补充PPT课
29、件课件1数学函数数学函数数学函数用于对数字表达式进行数学运算并返回结果。数学函数用于对数字表达式进行数学运算并返回结果。主要包括:ABS(numeric_expr):返回绝对值SQRT(float_expr):返回给定值的平方根CEILING(numeric_expr):返回不小于给定值的最小整数FLOOR(numeric_expr):返回不大于给定值的最大整数ROUND(numeric_expr,length):将给定的数值四舍五入到指定的长度SIGN(numeric_expr):判断给定的数值是否为正(1)、负(-1)或零(0)RAND(SEED):产生随机数函数4.系统内置函数介绍SQL
30、语言补充语言补充PPT课件课件2.字符串函数字符串函数字符串函数可以对二进制数据、字符串和表达式字符串函数可以对二进制数据、字符串和表达式执行不同的运算执行不同的运算。大多数字符串函数只能用于大多数字符串函数只能用于char和和varchar数据数据类型以及明确转换成类型以及明确转换成char和和varchar的数据类型,的数据类型,少数几个字符串函数也可以用于少数几个字符串函数也可以用于binary和和varbinary数据类型。数据类型。某些字符串函数还能处理某些字符串函数还能处理text、ntext、image数数据类型的数据。据类型的数据。SQL语言补充语言补充PPT课件课件字符串函数
31、的分类字符串函数的分类基本字符串函数:UPPER、LOWER、SPACE、REPLICATE、STUFF、REVERSE、LTRIM、RTRIM。字符串查找函数:CHARINDEX、PATINDEX。长度和分析函数:DATALENGTH、SUBSTRING、RIGHT、LEFT。转换函数:ASCII、CHAR、STR、SOUNDEX、DIFFERENCE。SQL语言补充语言补充PPT课件课件2)CHAR:将:将ASCII码转换为字符码转换为字符语法格式:语法格式:CHAR(integer_expression)1)ASCII:返回左端第一个字符的:返回左端第一个字符的ASCII值值语法格式:语
32、法格式:ASCII(character_expression)3)LEFT:返回从字符串左边开始指定个数的字符:返回从字符串左边开始指定个数的字符语法格式:语法格式:LEFT(character_expression,integer_expression)RIGHT:返回从字符串右边开始指定个数的字符:返回从字符串右边开始指定个数的字符SQL语言补充语言补充PPT课件课件【例例15】返回课程名最左边的8个字符,最右边的2个字符,并显示出相应的ASCII码。USEXSCJSELECTLEFT(课程名课程名,8),RIGHT(课程名课程名,2),ASCII(LEFT(课程名课程名,8),ASCII
33、(RIGHT(课程名课程名,2)FROMKCORDERBY课程号课程号GOSQL语言补充语言补充PPT课件课件【例例16】使用LTRIM字符删除字符变量中的起始空格。DECLAREstringvarchar(40)SETstring=中国,一个古老而伟大的国家SELECTLTRIM(string)GO4)LTRIM:删除字符串左边的空格,并返回字符串:删除字符串左边的空格,并返回字符串语法格式:语法格式:LTRIM(character_expression)RTRIM:删除字符串右边的空格删除字符串右边的空格SQL语言补充语言补充PPT课件课件5)REPLACE:用第三个表达式的值替换第一个表
34、达式:用第三个表达式的值替换第一个表达式中包含第二个表达式的部分。中包含第二个表达式的部分。语法格式:语法格式:REPLACE(string_expression1,string_expression2,string_expression3)例:例:SELECTREPLACE(abcd,b,bb)6)SUBSTRING:求子串函数:求子串函数语法格式:语法格式:SUBSTRING(expression,start,length)Expression:指定的字符串Start:子串的起始位置Length:子串的长度,即要返回的字节数SQL语言补充语言补充PPT课件课件【例例17】如下程序在一列中返
35、回XS表中的姓氏,在另一列中返回表中学生的名。USEXSCJSELECTSUBSTRING(姓名姓名,1,1),SUBSTRING(姓名姓名,2,LEN(姓名姓名)-1)FROMXSORDERBY姓名姓名SQL语言补充语言补充PPT课件课件SPACE(integer_expr):返回指定长度的空格:返回指定长度的空格UPPER(char_expr):把给定的字符串变成大写字母:把给定的字符串变成大写字母LOWER(char_expr):把给定的字符串变成小写字母:把给定的字符串变成小写字母STUFF(char_expr1,star,length,char_expr2):在:在char_expr
36、1中,把从位置中,把从位置star开始,长度为开始,长度为length的字符的字符串用串用char_expr2代替代替REVERSE(char_expr):将指定的字符串反向:将指定的字符串反向PATINDEX(%pattern%,expr)CHARINDEX(pattern,expr)在给定的表达式中查找指定字符串的起始位置在给定的表达式中查找指定字符串的起始位置SQL语言补充语言补充PPT课件课件在选择价格位于在选择价格位于$11和和$20之间的书名时,利用之间的书名时,利用SUBSTRING函数从字符串中返回指定的字符串,并使用函数从字符串中返回指定的字符串,并使用LOWER函数、函数、
37、UPPER函数返回大写和小写的书名。其源程序清单为:函数返回大写和小写的书名。其源程序清单为:USEpubsSELECTLOWER(SUBSTRING(title,1,20)ASLower,UPPER(SUBSTRING(title,1,20)ASUpper,FROMtitlesWHEREpricebetween11.00AND20.00SQL语言补充语言补充PPT课件课件例例18定义一个局部变量,其类型为定义一个局部变量,其类型为VARCHAR,并给该,并给该变量输入值为变量输入值为“thisistest”。利用字符串函。利用字符串函数实现以下操作,并显示结果值:数实现以下操作,并显示结果值
38、:1。删除该字符变量起始空格和末尾空格;2。返回该变量右边开始的四个字符;3。将该字符变量取反;4。将该字符变量中的“is”子串用“are”字符串替代。SQL语言补充语言补充PPT课件课件DECLAREtempstrVARCHAR(20)SETtempstr=thisistestSELECTRTRIM(LTRIM(tempstr),RIGHT(RTRIM(LTRIM(tempstr),4),REVERSE(tempstr),REPLACE(tempstr,is,are)SQL语言补充语言补充PPT课件课件3.系统函数系统函数系统函数用于返回有关SQLServer系统、用户、数据库和数据库对象的
39、信息。与其它函数一样,可以在SELECT语句的SELECT子句和WHERE子句以及表达式中使用系统函数。SQL语言补充语言补充PPT课件课件1)CASE函数函数CASE函数可以计算多个条件式,并将其中一个符合条件的结果表达式返回。CASE函数的语法形式函数的语法形式CASE WHEN Boolean_expression THEN result_expression .n ELSE else_result_expressionEND SQL语言补充语言补充PPT课件课件【例例19】根据学生的年龄范围显示相应信息。/*使用CASE搜索函数的SELECT语句*/USEXSCJSELECT学号,年龄
40、=CASEWHENgetdate()-出生时间=24THEN年龄偏大ELSE年龄适中ENDFROMXSGOSQL语言补充语言补充PPT课件课件2)CAST和和CONVERT常用的类型转换有以下几种情况:l日期型字符型:如将datetime或smalldatetime数据转换为字符数据。l字符型日期型:如将字符数据转换为datetime或smalldatetime数据。l数值型字符型:如将float、real、money或smallmoney数据转换为字符数据。SQL语言补充语言补充PPT课件课件ldata_type只能为系统提供的基本类型,不能为用户自定义类型。lCONVENT函数允许用户按不
41、同的样式,把表达式从一种数据类型转换成另一种数据类型。style的值指出转换的样式。语法格式:语法格式:CAST(expressionASdata_type)CONVERT(data_type(length),expression,style)SQL语言补充语言补充PPT课件课件【例例20】如下程序将检索总学分3039分的学生姓名,并将总学分转换为char(20)。/*如下例子同时使用CAST和CONVERT-使用CAST实现.USEXSCJSELECT姓名姓名,总学分总学分FROMXSWHERECAST(总学分总学分ASchar(20)LIKE3_GO-使用CONVERT实现.USEXSCJ
42、SELECT姓名姓名,总学分总学分FROMXSWHERECONVERT(char(20),总学分总学分)LIKE3_GOSQL语言补充语言补充PPT课件课件4.日期时间函数日期时间函数用于对日期和时间数据进行相应的处理和运算,并返回一个字符串、数字值或日期和时间值。可用在SELECT语句的选择列表或用在查询的WHERE子句中。SQL语言补充语言补充PPT课件课件函数参数功能DATEADD(datepart,number,date)以datepart指定的方式,返回date加上number之和DATEDIFF(datepart,date1,date2)date2与date1之差DATENAME(
43、datepart,date)返回日期date中datepart指定部分所对应的字符串DATEPART(datepart,date)返回日期date中datepart指定部分所对应的整数值DAY(date)返回日期date的天数GETDATE()返回当前日期和时间MONTH(date)返回指定日期的月份数YEAR(date)返回指定日期的年份数SQL语言补充语言补充PPT课件课件【例例21】从从GETDATE函数返回的日期中函数返回的日期中提取月份数和月份名称提取月份数和月份名称SELECT DATEPART(month, GETDATE() AS Number ,DATENAME(month,
44、 GETDATE() AS Name 运行结果为:Number Name- 3 MarchSQL语言补充语言补充PPT课件课件示例:从局部变量中返回相应的月份数、天数和年示例:从局部变量中返回相应的月份数、天数和年份数份数,并显示该变量与当前日期所相差的月数。并显示该变量与当前日期所相差的月数。DECLARE VarDate DatetimeSET VarDate = 06/19/2004SELECT MONTH(VarDate ), DAY(VarDate ),YEAR(VarDate ), DATEDIFF(month,VarDate,GETDATE() )SQL语言补充语言补充PPT课件课件