首页计算机计算机软件SQLServer2005数据库技术及应用 13 第13章 SQL Server函数与编程结构.pptx

13 第13章 SQL Server函数与编程结构.pptx

页数:31页文件大小:454.4 KB来源: SQLServer2005数据库技术及应用ppt课件

本章是T-SQL编程的基础,涵盖标识符、数据类型、算术比较逻辑位运算与连接运算符及其优先级,通配符、常量与全局变量局部变量的定义,BEGIN…END、GOTO、IF…ELSE、WHILE、RETURN、WAITFOR等流程控制命令,最后介绍系统内置函数与标量函数、内嵌表值函数、多语句表值函数等用户自定义函数的创建与删除。

第13章SQL Server函数与编程结构章封面,标示本章主题为函数与流程控制
第13章目录页,列出标识符与数据类型、运算符、常量变量、流程控制命令与系统内置函数
13.1标识符、数据类型、运算符的说明
查看本课件的文字版(共 31 页,供检索与复制)

第1页:第13章函数与编程结构

第13章SQL Server函数与编程结构

第2页:第13章目录:函数与编程

第13章SQL Server函数与编程结构

13.1标识符、数据类型、运算符,常量和变量

13.2流程控制命令

13.3函数13.3.1 SQL Server函数介绍13.3.2常用的几种系统内置函数13.3.3用户自定义函数

第3页:13.1标识符、数据类型、运算符

13.1标识符、数据类型、运算符、常量和变量任何一种编程语言都是由许多命令语句按一定的流程结构组合而成,而命令语句又是由一些标识符代表的常量或变量加上各种运算符构成的表达式组成的,其中常量和变量必须属于系统内置或用户自定义的某种数据类型。所以学习一门语言必须首先掌握这些基本的语法规定

第4页:标识符

标识符SQL中标识符是由用户定义的SQL Server可识别的有特殊意义的字符序列,关于标识符的使用规则第6章已讲述

第5页:数据类型

数据类型

  • 数据类型包括SQL Server系统提供的数据类型和用户自定义的数据类型,第6章已作介绍

第6页:运算符

运算符

算数运算符
包括+(加或正值)、—(减或负值)、×(乘)、/(除)、%(取余)和=(赋值)。
比较运算符
包括>(大于)、<(小于)、=(等于)、>=(大于等于)、<=(小于等于)、<>(不等于)、!=(不等于)、!>(不大于)、!<(不小于),其中!=、!>和!<是非ANSI标准的扩展运算符。
位运算符
包括&(按位与)、|(按位或)、~(按位非)、^(按位异或)。
连接运算符
连接运算符“+”用于连接两个或两个以上的字符或二进制串、列名或者串和列的混合体,将一个串加入到另一个串的末尾

第7页:逻辑和集合运算符

逻辑和集合运算符AND
与,两个逻辑表达式均为真时才为真。
OR
或,两个逻辑表达式任一个为真时即为真。
NOT
非,取反逻辑表达式。
ALL
一组比较均为真时为真。
ANY
一组比较中任一比较为真时为真。
BETWEEN
操作符在指定范围内时为真。
EXISTS
子查询返回非空时为真。
IN
操作数在列表内时为真。
LIKE
操作数符合模式时为真。
SOME
一组比较中一些比较为真时为真

第8页:运算符的处理优先顺序

运算符的处理优先顺序

括号
()
位运算符
+(正数)—(负数)~(取补数)
算数运算符
*、/、%
算数运算符
+(加)、—(减)
位运算符
&
比较运算符
=(比较)、>、<、>=、<=、<>、!=、!>、!<
位运算符
^、|
逻辑运算符
NOT
逻辑运算符
AND
逻辑运算符
ALL、ANY、BETWEEN、IN、LIKE、OR、SOME

第9页:四个常用的通配符

四个非常有用的通配符%:代表零个或多个字符_(下划线):代表一个字符[ ]:代表在某一范围的字符[ ^ ]:代表不在某一范围的字符

第10页:常量

常量

  • 常量是指在程序运行过程中值不变的量。常量的使用格式取决于值的数据类型,因此有多少种数据类型就应该有多少种常量类型。
  • 常量根据类型可分为字符串常量、整型常量、实型常量、日期时间常量、货币常量、二进制常量、专有类型常量等

第11页:变量

变量

  • 变量指的是在程序运行过程中值可以发生变化的量,可以用来存放临时运算结果或输入输出数据。变量有名字和数据类型两个属性。变量名用于标识该变量,变量的数据类型则确定了该变量存放值的格式及运行时所能采用的运算方法。
  • 在SQL Sever中变量分为全局变量和局部变量

第12页:全局变量

全局变量

  • 全局变量是SQL Servr系统内部使用的变量,其作用范围并不局限于某一程序,而是任何程序均可随时调用。全局变量通常用于存储一些SQL Server的配置设定值和效能统计数据。用户可在程序中用全局变量来测试系统的设定值或T-SQL命令执行后的状态值。
  • 全局变量不是由用户的程序定义的,它们是在服务器级定义的,只能使用预先说明及定义的全局变量,引用全局变量是,必须以“@@”开头,局部变量的名称不能与全局变量的名称相同,否则会在应用中出错

第13页:局部变量

局部变量

局部变量是用户可自定义的变量,它的作用范围仅在程序内部。在程序中通常用来存储从表中查询到的数据,或当作程序执行过程中暂存变量使用。局部变量必须以“@”开头,而且必须先用DECLARE命令说明后才可使用,其语法格式是: DECLARE @变量名变量类型[,@变量名变量类型]

第14页:13.2流程控制命令

13.2流程控制命令

除了前几章已经介绍过的SELECT查询语句,可以用T-SQL语句编写比较复杂的数据库服务端程序,编写的语法格式与其他高级编程语言比较类似,一般来说程序主要就是由常量、变量、表达式、能够改变执行顺序的流程控制命令,外加一些注释、错误处理等构成。流程控制命令是程序的核心之一,决定着程序的结构功能。

第15页:BEGIN…END程序块

BEGIN…ENDBEGIN…END用来设定一个程序块,SQLServer将BEGIN…END内的所有程序视为一个单元执行,其语法格式很简单:BEGIN命令行|程序块END其中BEGIN…END可以嵌套使用

第16页:GOTO命令用来改变程序执行的流程

GOTOGOTO命令用来改变程序执行的流程,使程序跳到有标识符的指定的程序行再继续往下执行,语法如下:GOTO标识符作为跳转目标的标识符可为数字与字符的组合,但必须以“:”结尾;在GOTO命令行标识符后不必跟“:”

第17页:IF…ELSE条件语句

IF…ELSE当某一条件成立时IF…ELSE执行某一段程序,条件不成立时则执行另一段程序。语法如下:IF <条件表达式>{命令行|程序块}[ ELSE{命令行|程序块} ]其中<条件表达式>可以是各种表达式的组合,但表达式的值必须是逻辑值“真”或“假”。ELSE子句是可选的,最简单的IF语句可以没有ELSE子句部分。如果不使用程序块,IF或ELSE只能执行一条命令。IF…ELSE可以进行嵌套

第18页:WHILE…CONTINUE…BREAK

WHILE…CONTINUE…BREAKWHILE命令在设定的条件成立时会重复执行命令行或程序块,其语法如下:WHILE <条件表达式>BEGIN<命令行|程序块>[ BREAK ][ CONTINUE ][命令行|程序块]END其中,CONTINUE命令可以让程序跳过CONTINUE命令之后的语句,回到WHILE循环的第一行命令;BREAK命令则让程序完全跳出循环,结束WHILE命令的执行,WHILE语句也可以嵌套

第19页:RETURN命令用于结束当前程序

RETURNRETURN命令用于结束当前程序的执行,返回到上一个调用它的程序或其他程序,语法如下:RETURN [整数值]在括号内可指定一个返回值。如果没有指定返回值,SQL Server系统会根据程序执行的结果返回一个内定值,返回零值表示成功,返回非零值则表示失败

第20页:WAITFOR命令暂停程序执行

WAITFORWAITFOR命令用来暂时停止程序的执行,直到等待指定时间之后或所设定的时间已到才继续往下运行程序,其语法如下:WAITFOR {DELAY<’时间’>|TIME<’时间’>}其中“时间”必须为DATETIME类型的数据,但不能包括日期。DELAY用来设定等待的时间,最多可达24小时。TIME用来设定等待结束的时间点

第21页:SQL Server函数介绍

13.3函数13.3.1 SQL Server函数介绍和其他语言类似,T-SQL提供了大量有用的函数。在数据库的日常维护和管理中,函数的使用非常频繁,正确使用函数可以帮助用户获得系统信息、进行数学运算、统计、简化数据查询,等等。在程序设计过程中,也常常需要调用系统提供的函数。T-SQL编程语言一样有系统内置函数和用户自定义函数之分,其中系统内置函数有三种类型

第22页:三种内置函数

三种内置函数1。行集函数:行集函数是返回值为对象的函数,该对象可在T-SQL语句中作为表使用。本书对行集函数不作详细介绍,感兴趣的同学可以查看SQL联机帮助。2。统计函数:统计函数可以返回一列、几列或全部列的汇总数据,用于计算SELECT语句查询行的统计值,常用的统计函数有AVG()、SUM()、COUNT()、MAX()和MIN()等,其具体使用方法在前面章节已作过介绍。3。标量函数:标量函数指那些输入参数的类型为基本类型,返回值也为基本类型的函数,这些函数可以用在表达式中

第23页:13.3.2常用的几种系统内置函数

13.3.2常用的几种系统内置函数

  • 数学函数
  • 字符串处理函数
  • 日期时间函数
  • 系统与元数据函数

第24页:13.3.3用户自定义函数

13.3.3用户自定义函数

  • SQL Server 2005支持用户自行设计T-SQL函数来弥补系统所提供的内置函数的不足,自定义函数可以使用在任何允许运行内置函数的地方。
用户函数需要用CREATE FUNCTION语句来创建,用ALTER FUNCTION语句来修改。通过sp_helptext系统存储过程可以获取函数的源代码。
  • 用户创建函数时可以有0个、1个或多个参数,必须返回单一的值。返回值可以是标量,也可以是一个表

第25页:自定义标量函数创建语法

自定义标量函数创建自定义函数的语法格式如下:CREATE FUNCTION [ owner_name. ] function_name([{@parameter_name [AS] scalar_parameter_data_type [=default]}[, …n]])RETURNS scalar_return_data_type[WITH {ENCRYPTION|SCHEMABINDING} [ [ , ] …n ] ][AS]BEGINfunction_bodyRETURN scalar_expressionEND

第26页:自定义标量函数调用格式

调用格式调用用户自定义函数的语法格式有以下三种:

  • 所有者名.函数名(实参1,…,实参n)
  • 所有者名.函数名实参1,…,实参n
  • 所有者名.函数名形参1=实参1,…,形参n=实参n

第27页:自定义内嵌表值函数创建

自定义内嵌表值函数创建语法格式:CREATE FUNCTION [ owner_name. ]function_name([{@parameter_name [AS] scalar_parameter_data_type [=default]}[, …n]])RETURNS TABLE[WITH {ENCRYPTION | SCHEMABINDING} [ [ , ] …n ] ][AS]RETURN [ (select-statement) ]参数说明:与标量函数相比不同的地方是:返回值类型为TABLE,表示返回一个表。用RETURN [ (select-statement) ]代替了BEGIN…END语句块,表示返回内嵌表值

第28页:内嵌表值函数调用格式

调用格式

相对于标量函数而言,内嵌表值函数只能通过SELECT语句调用

第29页:自定义多语句表值函数创建语法格式

自定义多语句表值函数创建语法格式:CREATE FUNCTION [ owner_name. ] function_name([ {@parameter_name [AS] scalar_parameter_data_type [=default]}[, …n ] ] )RETURNS @retuen_variable TABLE <table_type_defintion>[WITH {ENCRYPTION | SCHEMABINDING} [ [ , ] …n ] ][AS]BEGINfunction_bodyRETURNEND

第30页:多语句表值函数调用格式

调用格式

  • 多语句表值函数的调用跟使用内嵌表值函数是一样的

第31页:用户定义函数的删除语法

用户定义函数的删除语法:DROP FUNCTION { [owner_name.]function_name } [ , …n ]参数说明:owner_name指函数的拥有者,本语句一次可以删除多个用户定义函数
顶部目录