《ERP沙盘模拟管理综合实训手册 教学课件 ppt 作者 高冬梅第3章 Transact-SQL语言》由会员分享,可在线阅读,更多相关《ERP沙盘模拟管理综合实训手册 教学课件 ppt 作者 高冬梅第3章 Transact-SQL语言(95页珍藏版)》请在金锄头文库上搜索。
1、第3章 Transact-SQL语言,本章学习目标: 了解Transact-SQL的基本知识; 掌握变量、运算符及表达式、函数的基本应用; 熟悉批处理与流程控制语句以及基本应用; 了解Transact-SQL中的错误处理方法。,开 始,第3章 Transact-SQL语言,3.1 SQL语言概述 3.2 常量与变量 3.3 运算符 3.4 函数 3.5 表达式 3.6 流程控制语句 3.7 Transact-SQL中的错误处理,3.1 SQL语言概述,3.1.1 Transact-SQL语言概念 Transact-SQL是微软在SQL语言基础上发展起来的扩充语言。它包含两部分: SQL语句的标
2、准语言部分 扩充部分,在标准SQL语句上增加了如语句的注释、变量、运算符、函数和流程控制等语言元素,使其功能更加强大。,3.1.2 命名规则和注释 1.数据库对象的命名格式 数据库对象名的Transact-SQL引用是由四部分组成的名称,格式如下: 服务器名. 数据库名.架构名. 对象名 引用某个特定对象时,不必总是指定服务器、数据库和架构供SQL Server数据库引擎标识该对象。但是,如果找不到对象,就会返回错误消息。为了避免名称解析错误,建议只要指定了架构范围内的对象时就指定架构名称。若要省略中间节点,须使用句点来指示这些位置。,2.标识符 1)标识符分类 常规标识符(严格遵守标识符格式
3、规则); 界定标识符(引号或方括号)。 2)标识符格式规则 字母或_、开头的字母数字或_、$序列;不与SQL Server系统保留字相同;长度小于128。不符合规则的标识符必须加以界定(双引号”或方括号)。,3.注释 SQL Server支持两种类型的注释字符: (1)-(双连字符),单行注释。 (2)/* . */(正斜杠-星号字符对),多行注释。 【例3-1】 注释示例。 SELECT DATENAME(dw,myvariable) -Gets The Day of the Week,单行注释。 /* The following statements retrieve the curren
4、t date and time and extract the day of the week from the results.多行注释。*/,3.1.3 批处理 批处理是指用户传递给服务器的一个完整的语句组。它由一条或者多条SQL语句组成,以“GO”为结束标志。批处理的语句作为一个整体进行编译和运行,如果批处理中某条语句出现错误,则对该批处理语句的分析就会失败,从而不能执行该批处理。 在使用批处理时,要注意以下规则: CREATE DEFAULT、CREATE VIEW、CREATE FUNCTION、CREATE PROCEDURE、CREATE RULE、CREATE TRIGGER和
5、CREATE SCHEMA等语句不能在批处理中与其他语句组合使用。,批处理必须以CREATE语句开始,所有跟在该批处理后的其他语句将被解释为第一个CREATE语句定义的一部分。 不能在同一个批处理中更改表,然后引用新列。 如果EXECUTE语句是批处理中的第一句,则不需要EXECUTE关键字。如果EXECUTE语句不是批处理中的第一条语句,则需要EXECUTE关键字。,3.1.4 脚本 脚本是以文件方式保存的一个或多个Transact-SQL语句或批,使用.sql作为文件扩展名。 可以在SQL查询编码器或者诸如记事本之类的任何文本编辑器上编写并保存脚本。 可以使用SQL查询编码器或osql实用
6、工具(或其他查询工具)打开并且执行脚本文件。,3.2 常量与变量,常量:也称为文字值或标量值,是表示一个特定数据值的符号。SQL常量的格式取决于它所表示的值的数据类型,如datetime常量:2009/09/10、 money常量:$201010.18。 变量:从变量作用范围来分,Transact-SQL语言有两种形式的变量,一种是系统预先定义的全局变量,另外一种是用户根据自己的需要定义的局部变量。,3.2.1 全局变量 全局变量以前缀开头,不必进行声明,他们属于系统定义的函数。例如: ROWCOUNT:返回受该变量前一句SQL影响的行数。当其前一句SQL没有返回行时,ROWCOUNT结果为0
7、。 ERROR:返回使用该变量前的所有SQL语句中最后一句执行时的错误号。当使用该变量前的SQL语句执行成功时,ERROR返回0。 IDENTITY:返回最后一次插入的标识值。 TRANCOUNT:返回当前连接的活动事务数。,FETCH_STATUS:返回执行FETCH 语句后游标的状态值,而不是任何当前被连接打开的游标的当前状态值。当FETCH 语句执行成功时,FETCH_STATUS返回0;当FETCH 语句执行失败或此行不在结果集中时返回-1;当被提取的航不存在时返回-2。FETCH_STATUS变量经常用于循环地从游标中提取字段值,判断是否已经从游标中提取了所有的数据。 DATEFIR
8、ST:返回SET DATEFIRST参数的当前值,SET DATEFIRST的参数指明所规定的每周第一天:1对应星期一,2对应星期二,依次类推,7对应星期日。 SERVERNAME:返回本地运行 Microsoft SQL Server所使用的服务器名称。如果服务器上安装多个实例,SERVERNAME返回的结果形如“计算机名实例名”。,SERVICENAME:返回SQL Server当前运行的服务的名称。SQL Server 作为名为 MSSQLServer 的服务运行。若当前实例为默认实例,则SERVICENAME返回MSSQLSERVER;若当前实例是命名实例,则该函数返回该实例名。 VE
9、RSION:返回当前的Microsoft SQL Server安装的版本、处理器体系结构、生成日期和操作系统。 【例3-2】 使用ROWCOUNT返回影响的行数。 SELECT 0 AS result; SELECT ROWCOUNT AS AffectRowcont; 【例3-3】 将每周的第一天设为2(星期二),假设今天是星期一。用SELECT语句返回DATEFIRST值和当日是这周的第几天。,SET DATEFIRST 7; SELECT DATEFIRST AS 1st Day,DATEPART(DW,GETDATE() AS Today; 【例3-4】 显示到当前日期和时间为止试图登
10、录SQL Server的次数。 SELECT GETDATE( ) AS 当前的时期和时间, CONNECTIONS AS试图登录次数;,3.2.2 局部变量 局部变量是可以保存单个特定类型数据值的对象,其作用范围仅限制在定义该变量的程序内部。 用户根据需要为局部变量命名和设定数据类型。 局部变量通常作为计数器计算循环执行的次数或控制循环执行的次数,还可以用于保存数据值以供控制流语句测试,或者保存函数返回值或存储过程返回代码要返回的数据值。 局部变量必须先声明后使用。,1.声明局部变量 声明局部变量的语法格式为: DECLARE local_variable AS data_type | =
11、value ,.n 其中: local_variable:变量的名称。变量名必须以at符()开头。 data_type:任何系统提供的数据类型或用户定义数据类型。变量的数据类型不能是text、ntext或image。 = value:以内联方式为变量赋值。值可以是常量或表达式,但必须与变量声明的数据类型匹配,或者可隐式转换为该数据类型。,2.局部变量赋值,使用DECLARE命令声明并创建局部变量之后,局部变量的初始值为NULL,如果要重新设定局部变量的值,可以使用SELECT命令或者SET命令。其语法格式为: SET local_variable =|+=|-=|*=|/=|%=|&=|=|=
12、 expression SELECT local_variable =|+=|-=|*=|/=|%=|&=|=|=expression ,.n 其中: local_variable:要给其赋值的局部变量的名称。 expression:任何有效的SQL Server表达式。,【例3-5】 定义局部变量myvar,并赋值任意字符串。,DECLARE myvar char(20)= This is a test; SELECT myvar; GO 【例3-6】 定义局部变量 rows,并赋值为表tblStudents中学生的个数。 DECLARE rows int; SELECT rows=COUN
13、T(*) FROM CJMStblStudents; SELECT rows AS The Number of Students; GO,3.3 运算符,算术运算符可以在任何以数值数据类型分类的表达式间执行数学运算。算术运算符包括加()、减()、乘(*)、除(/)和取模(%)。 【例3-7】 应用算术运算符进行数学运算。 SELECT $1000+5 AS Added, CONVERT(DATETIME, 20091010)-5.5 AS Subtracted,3.3.1 算术运算符,3.3.2 赋值运算符,等号(=)是唯一的Transact-SQL赋值运算符。赋值运算符将数据值指派给特定的对
14、象。还可以使用赋值运算符在列标题和为列定义值的表达式之间建立关系。,80*0.8 AS Multiplied ,38/5 AS Divided ,38%5 AS Modulor;,3.3.3 按位运算符,位运算符在两个表达式之间执行位操作,这两个表达式可以为整数数据类型或二进制字符串数据类型类别中的任何数据类型(image 数据类型除外),但不能同时是二进制字符串数据类型类别中的某种数据类型。 位运算符有,3.3.4 字符串串连运算符,加号(+)是字符串串联运算符,允许通过该加号将字符串串联起来。默认情况下,在串联varchar、char或text数据类型的数据时,空的字符串被解释为空字符串。
15、 例如,abc + + def 被存储为 abcdef。但是,如果兼容级别设置为65,则空常量将作为单个空白字符处理,abc + + def 将被存储为 abc def。,3.3.5 比较运算符,表3-1 比较运算符,3.3.6 逻辑运算符,表3-2 逻辑运算符,一元运算符只对一个表达式执行操作。 一元运算符有+(正)、-(负)和+(位非),其中,+(正)和-(负)运算符可以用于numeric数据类型类别中任一数据类型的任意表达式。(位非)运算符只能用于整数数据类型类别中任一数据类型的表达式。,3.3.7 一元运算符,3.3.8 复合运算符,复合运算符执行一些运算并将原始值设置为运算的结果。
16、例如,如果变量x等于35,则x += 2会将x的原始值加上2并将x设置为该新值(37)。Transact-SQL 提供了以下复合运算符:+=(加等于)、-=(减等于)、*=(乘等于)、/=(除等于)、%=(取模等于)、&=(位与等于)、=(位异或等于)、|=(位或等于)。,【例3-9】 复合运算,DECLARE x1 int = 27, x2 int = 27,x3 int = 27,x4 int = 27, x5 int = 27,x6 int = 9,x7 int = 27,x8 int = 27; SELECT x1 += 2,x2 -= 2,x3 *= 2,x4 /= 2, x5 %= 2,x6 ,3.3.9 运算符的优先级