资源描述
,SQL Server,与数据库应用开发,第,10,章,T-SQL,编程,SQL Server与数据库应用开发第10章 T-SQL 编,10.1.SQL Server,编程基础,10.2.SQL Server,的系统函数,10.3.,用户自定义函数,10.4.,游标,10.5,编程综合应用,主要内容,主要内容,【,知识要求,】,:,1.,了解,T-SQL,编程的基本语法和流程控制,2.,了解系统函数使用,3.,理解用户自定义函数;,4.,了解游标的作用。,【,能力要求,】,:,1.,会进行数据库编程;,2.,会编写自定义函数;,3.,掌握游标编程技术。,知识与能力要求,【知识要求】:1.了解T-SQL编程的基本语法和流程控制知识,SQL Server,中的编程语言就是,T-SQL,语言,,T-SQL,命令除了可以单独使用以外,还可以使用流程控制语句吧多个命令组合成一段程序,用以完成各种更为复杂的程序算法。本节主要内容学习,T-SQL,语法约定,常量,变量,表达式,流程控制等内容。,10.1 SQL Server,编程基础,10.1 SQL Server 编程基础,1.T-SQL,语法约定,1.,标识符,定义,命名规则,2.,续行,3.,注释,单行,-,,快注释,/*/,4.,批处理,go,1.T-SQL语法约定 1.标识符,2.,常量,在程序运行过程中,,其值不变,的符号称为,常量,。,根据常量值的不同类型,常量分为:,字符串常量,二进制常量,整型常量,实数常量,日期时间常量,货币常量,2.常量 在程序运行过程中,其值不变的符号称为常量。,3,.,变量,(,1,)、,局部变量,用户自己定义的,变量称为局部变量。局部变量用于保存特定类型的单个数据值的对象。,定义格式:,DECLARE,局部变量名 数据类型,.n,局部变量的赋值,SET,局部变量名,=,表达式,n,SELECT,局部变量名,=,表达式,n FROM,子句,WHERE,子句,【,案例,10.1】,声明一个局部变量,dept_name,,把,TestDB,数据库中的“系部”表中系部代码为,01,的系部名称赋给局部变量,dept_name,,并输出。,3.变量(1)、局部变量,3.,变量,(,2,),.,全局变量,全局变量由,系统定义和维护,的变量,用于,记录服务器活动状态,的一组数据。,全局变量名由,符号开始。用户不能建立全局变量,也不可能使用,SET,语句去修改全局 变量的值。,例如:,version,:返回当前,SQL Server,服务器的版本和处理器类型。,language:,返回当前,SQL Server,服务器的语言。,3.变量(2).全局变量,4.,流程控制语句,流程控制语句主要用于控制程序的顺序。,(,1,)、,BEGIN END,语句,BEGIN END,语句用于将多个,Transact-SQL,语句组合为一个逻辑块,相当于一个单一语句,达到一起执行的目的。它的语法格式如下。,BEGIN,语句,1,语句,2,END,4.流程控制语句 流程控制语句主要用于控制程序的顺序。,4,、流程控制语句,(,2,)、,IFELSE,语句,IFELSE,语句实现程序选择结构。它的语法格式如下。,IF,逻辑表达式,语句块,1,ELSE,语句块,2,【,案例,10.2】,在,TestDB,数据库中,查询学生的平均成绩是否超过,75,,并显示相关信息。,4、流程控制语句(2)、IFELSE语句,4,、流程控制语句,-,在,TestDB,数据库中,查询学生的平均成绩是否超过,75,,并显示相关信息。,use TestDB,go,declare avg_score float,select avg_score=AVG(score)from tb_score,if avg_score 75,print,学生的平均成绩超过了,else,print,学生的平均成绩不超过了,go,4、流程控制语句-在TestDB数据库中,查询学生的平均,4,、流程控制语句,(,3,),WHILE,语句,WHILE,语句实现循环结构。如果指定的条件为真,就重复执行语句块,直到逻辑表达式为假。,语法格式如下。,WHILE,逻辑表达式,BEGIN,语句块,1,CONTINUE,BREAK,语句块,2,END,4、流程控制语句(3)WHILE语句WHILE 逻辑表,4,.,流程控制语句,(,4,),RETURN,语句,RETURN,语句实现从查询或过程中无条件退出的功能。,语法格式如下。,RETURN,整数表达式,(,5,),PRINT,PRINT,语句用于向客户端返回用户信息。,语法格式:,PRINT,字符串,|,变量,|,字符串的表达式,4.流程控制语句(4)RETURN语句,4,.,流程控制语句,(,6,),WAITFOR,语句,WAITFOR,语句实现语句延缓一段时间或延迟到某特定的时间执行。,语法格式如下。,WAITFOR DELAY time|TIME time,说明:,DELAY,:指示一直等到指定的时间过去,最长可达,24,小时。,time:,要等待的时间。,TIME,:指示,SQL Server,等待到指定的时间,【,案例,10.3】,根据“学生”表输出“系部代码”为“,02”,的“学号”、“姓名”、“出生日期”,在输出之前等待,4,秒。,V10-1-3 WAITFOR,语句应用视频,.wmv,4.流程控制语句(6)WAITFOR语句 DELAY:指示,在,SQL Server,查询、报表和许多,T-SQL,语句中常使用函数来返回信息,,SQL,中的函数在其他编程语言中使用的函数相似。函数返回类型可以是用于表达式的值或表格。,SQL Server,中的函数可分系统函数和用户自定义函数。,10.2 SQL Server,的系统函数,在SQL Server查询、报表和许多T-SQL语句中常使用,1,.,聚合函数,聚合函数,用于对一组值执行计算,并返回单个值。,聚合函数可以在,SELECT,语句的选择列表(子查询或外部查询)、,GROUP BY,子句、,COMPUTE BY,子句、,HAVING,子句中作为表达式使用。,常用的聚合函数,:,AVG(),、,COUNT(),、,MAX(),、,MIN(),、,SUM(),等等。,1.聚合函数聚合函数用于对一组值执行计算,并返回单个值。,【,案例,10.4】,统计课程平均成绩。,use TestDB,select cos_name as,课程名,avg(tb_score.score)as,平均成绩,from tb_course,tb_score,where tb_course.cos_num=tb_score.cos_num,group by tb_course.cos_name,图,10.1,聚合函数的使用示例,聚合函数应用,【案例10.4】统计课程平均成绩。图10.1 聚合函数的使,2,、数学函数,数学函数用于,对数字表达式进行数学计算,并返回运算结果。,常用的数学函数:,(,1,),ABS,(,数值表达式,),:返回表达式的绝对值;,(,2,),CEILING,(,数值表达式,),:返回大于或等于数值表达式的最小整数;,(,3,),FLOOR,(,数值表达式,),:返回小于或等于表达式值得最小整数;,(,4,),PI(,),:,返回,PI,的常量值,,3.14159265358979,。,(,5,),RAND,(),:返回,0,1,之间的随机,float,值。,(,6,),POWER,(,数字表达式,幂,),:返回数字表达式的指定次幂的值。,(,7,),ROUND,(x,y),:返回以,y,指定的精度进行四舍五入后的数值。,2、数学函数数学函数用于对数字表达式进行数学计算并返回运算结,【,案例,10.5】,数学函数的应用,1,、求给定数,-24.5,的绝对值:,select abs(-24.5),2,、产生一个,1-100,随机数,:,select ceiling(RAND()*100),3,、计算,4,3,的值:,select power(4,3),数学函数应用,图,10.2,数学函数的使用示例,【案例10.5】数学函数的应用数学函数应用图10.2 数学,3.,字符串函数,字符串函数,用于,对字符串输入值执行操作,返回字符串或数字值。,常用字符串函数,(,1,),ASCII,(str),:返回字符表达式最左端字符的,ASCII,代码值。,(,2,),CHAR,(x),:将,ASCII,代码转换为字符的字符串函数,,返回值在,0-255,之间,。,(,3,),LEFT,(str,x),:返回字符串中从左边开始指定个数的字符。,(,4,),LEN,(str),:返回字符串的字符个数,不包含尾随空格。,(,5,),LOWER,(str),:将大写字符数据转换为小写字符数据,返回类型为,varchar,。,(,6,),LTRIM,(str),:删除起始空格,返回类型为,varchar,。,(,7,),REPLACE,(str1,str2,str3),:用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式。,3.字符串函数字符串函数用于对字符串输入值执行操作,返回字,3,、,字符串函数,常用字符串函数,(,8,),REPLICATE,(str,x),:以指定的次数重复字符表达式。,(,9,),REVERSE,(str),:将指定字符串逆序排列。,(,10,),RIGHT,(str,x),:返回字符串中从右边开始指定个数的字符。,(,11,),RTRIM,(str),:删除尾随空格,返回类型为,varchar,。,(,12,),SPACE,(x),为产生指定个数的空。,(,13,),SUBSTRING,(str,start,len),:截取指定的部分字符串。,(,14,),UPPER,(str),:将小写字符数据转换为大写字符数据,返回类型为,varchar,。,3、字符串函数常用字符串函数,【,案例,10.6】,字符串函数的应用,1,、将“石化学院”中的“学院”用“职业技术学院”,select replace(,石化学院,学院,职业技术学院,),2,、将“石化职业技术学院”逆序输出,select reverse(,石化职业技术学院,),3,、去掉“石化职业技术学院”前面的空格,select Ltrim(,石化职业技术学院,),4,、提取“石化职业技术学院”右边,4,个字符,select right(,石化职业技术学院,4),字符串函数应用,图,10.3,字符串函数的使用示例,【案例10.6】字符串函数的应用字符串函数应用图10.3,日期和时间,函数,用于,对日期和时间输入值执行操作,并返回一个字符串、数字值或日期和时间值。,常用日期和时间 函数,(,1,),GETDATE,(),:返回当前系统日期和时间。,(,2,),DATENAME,(datepart,date),:返回某日期指定部分的字符串。,(,3,),DAY,(date),:返回代表指定日期的天的日期部分的整数。,(,4,),MONTH,(date),:返回代表指定日期月份的整数。,(,5,),YEAR,(date),:返回表示指定日期中的年份的整数。,4.,日期和时间函数,日期和时间函数用于对日期和时间输入值执行操作,并返回一个字符,【,案例,10.7】,日期和时间函数的应用,1,、返回当前系统日期和时间。,2,、返回当前系统日期的天,3,、返回代表指定日期的天的日期部分的整数。,4,、返回代表指定日期月份的整数。,5,、返回表示指定日期中的年份的整数。,4.,日期和时间函数,图,10.4,日期时间函数的应用,【案例10.7】日期和时间函数的应用 4.日期和时间函数图,用户自定义函数是由一个或多个,T-SQL,语句组成的子程序,一般是为了方便重用。,用户定义函数可以有输入参数并有返回值,但没有输出参数。当函数的输入参数有默认值是,调用该函数是必须明确指定,
展开阅读全文