资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Transact-SQL,编程基础,本章学习目标,掌握常量和变量的使用方法,掌握运算符和表达式的使用,掌握函数的定义和使用方法,掌握流程控制语句的使用,4.1 概述,SQL,是结构化查询语言(,Structured Query Language,)的缩写,是一种数据库应用语言。,SQL,最早是,IBM,的圣约瑟研究实验室为其关系数据库管理系统,System R,开发的一种查询语言,由于其结构简洁,功能强大,简单易学,所以得到了广泛的应用,目前大多数数据库供应商都支持,SQL,语言作为查询语言,。,美国国家标准局,(ANSI),在,1986,年制定了,SQL,标准,称为,ANSI SQL-86,,并于,1989,年和,1992,年对其进行了扩充和完善,即,ANSI SQL-89,和,ANSI SQL-92,。,Microsoft,公司采用,Transact-SQL,作为,SQL Server,的核心组件,简称,T-SQL,。,T-SQL,遵循,ANSI,制定的,SQL-92,标准,并对其进行了扩展,,加入了程序流程控制结构、变量和其它一些元素,增强了可编程性和灵活性。,4.1 概述,Transact-SQL,语言包括以下四个部分:,数据定义语言,(DDL),:定义和管理数据库及其对象,例如:,Create,、,Alter,和,Drop,等语句。,数据操作语言,(DML),:操作数据库中各对象,例如:,Insert,、,Update,、,Delete,和,Select,语句。,数据控制语言,(DCL),:进行安全管理和权限管理等,例如:,Grant,、,Revoke,、,Deny,等语句。,附加的语言元素:,Transact-SQL,语言的附加语言元素,包括变量、运算符、函数、注释和流程控制语句等。,4.2表达式,表达式,是指将常量、变量、函数等,用运算符按一定的规则连接起来的有意义的式子。,4.2.1 常量,常量,,也称为文字值或标量值,是表示一个特定数据值的符号,在程序运行过程中其值保持不变,例如,12,,,23,,,good luck,等。,常量的格式取决于它所表示的值的数据类型。,1.,字符串常量,字符串常量括在单引号内并包含字母、数字字符(,a-z,、,A-Z,和,0-9,)以及特殊字符,如,!,、,和,#,。,如果单引号中的字符串包含一个嵌入的引号,可以使用两个单引号表示嵌入的单引号,空字符串用中间没有任何字符的两个单引号表示。,2,数值常量,数值常量以没有用引号括起来的数字字符串来表示,包括,Integer,常量、,Decimal,常量、,Float,和,Real,常量等,其中,Integer,常量没有小数点,例如,100,,,54,等;,Decimal,常量包含小数点,例如,123.45,,,5.6,等;,Float,和,Real,常量使用科学记数法来表示,例如,123E2,,,0.3E-3,等。,如果要表示一个数是正数还是负数,可以对数值常量应用,+,或,-,运算符。,3.,日期时间常量,日期时间常量使用特定格式的字符日期时间值来表示,并被单引号括起来,例如,12/8/2008,,,December 8,2008,,,21:14:20,等。,4.,空值,空值是一个特殊的量,表示值未知,不同于空白或零值,用,Null,来表示。,比较两个空值或将空值与任何其他值相比均返回未知,这是因为每个空值均为未知。,若要在查询中测试是否为空值,应该在,Where,语句中使用,is Null,或,is not Null,,而不能使用,=Null,。在往表中添加记录时,如果不对某一列赋值则系统自动让该列取空值,或者也可以在,Insert,语句或,Update,语句中显式地对某列赋空值。,4.2.2 变量,变量,是可以对其赋值并参与运算的一个实体,其值在运行过程中可以发生改变。,变量可以分为,全局变量,和,局部变量,两类,,全局变量由系统定义并维护。,局部变量由用户定义并赋值。局部变量的用法非常广泛,除了可以参加运算构成表达式之外,还可以在程序中保存中间结果、控制循环执行次数、保存存储过程的输出结果和函数的返回值等,1.,全局变量,全局变量由系统定义,通常用来跟踪服务器范围和特定会话期间的信息,不能被用户显式地定义和赋值,但是我们可以,通过访问全局变量来了解系统目前的一些状态信息,SQL Server,中较常用的全局变量,变量,说明,error,上一条,SQL,语句报告的错误号,rowcount,上一条,SQL,语句处理的行数,identity,最后插入的标识值,fetch_status,上一条游标,Fetch,语句的状态,nestlevel,当前存储过程或触发器的嵌套级别,servername,本地服务器的名称,spid,当前用户进程的会话,id,cpu_busy,SQL Server,自上次启动后的工作时间,2.,声明局部变量,局部变量一般出现在批处理、存储过程和触发器中,必须在使用前用,Declare,语句声明。,指定局部变量名称。名称的第一个字符必须是,。,指定变量的数据类型,可以是系统提供的数据类型或用户自定义数据类型。对于字符型变量,还可以指定长度;数值型变量,指定精度和小数位数。赋初值,Null,Declare,语句的语法如下:,Declare ,局部变量名 数据类型,n,第一次声明变量时,其值设为,Null,。,如果要为变量赋值,可以使用,Set,语句,,赋给变量的值可以是常量、变量、函数和表达式,还可以是子查询。,Declare num int,date datetime,name varchar(10),Set num=2,Set date=Getdate(),Set name=(Select name From LegalEntity Where Eno=E01),为变量赋值,输出变量值的格式如下。,PRINT,局部变量名,SELECT,局部变量名,输出变量值,例,交换,a,b,两个字符型变量的值,DECLARE a char(3),b char(3),DECLARE c char(3),SET a=YES,SET b=NO,PRINT,交换前:,a=+a+b=+b,SET c=a,SET a=b,SET b=c,PRINT,交换后:,a=+a+b=+b,4.2.3 运算符,Microsoft SQL Server 2008,提供了,7,中类型的运算符,分别是:,算术运算符,赋值运算符,位运算符,比较运算符,逻辑运算符,一元运算符,1.,算术运算符,算术运算符对两个表达式执行数学运算,参与运算的表达式必须是数值数据类型或能够进行算术运算的其它数据类型。,SQL Server 2008,提供的算术运算符如下表所示。加,(+),和减,(-),运算符也可用于对,datetime,、,smalldatetime,、,money,和,smallmoney,值执行算术运算。,运算符,名称,语法,+,加,Expression1+Expression2,-,减,Expression1-Expression2,*,乘,Expression1*Expression2,/,除,Expression1/Expression2,%,取余,Expression1%Expression2,2.,赋值运算符,等号,(=),是唯一的,Transact-SQL,赋值运算符。,3.,字符串串联运算符,加号,(+),是字符串串联运算符,可以用它将字符串串联起来。其他所有字符串操作都使用字符串函数进行处理。例如,good+luck,的结果是,good luck,。,4.,比较运算符,比较运算符用来比较两个表达式值之间的大小关系,可以用于除了,text,、,ntext,或,image,数据类型之外的所有数据类型。,运算的结果为,True,、,False,,通常用来构造条件表达式。,运算符,名称,语法,=,等于,Expression1=Expression2,大于,Expression1 Expression2,=,大于等于,Expression1=Expression2,小于,Expression1 Expression2,=,小于等于,Expression1,不大于,Expression1!Expression2,!,不小于,Expression1!any,(,值表或子查询,),All,如果操作数与一列值中所有值的比较结果为,True,,结果为,True,Expression,、,=,、,、,!,(比较运算符),Not,And,All,、,Any,、,Between,、,In,、,Like,、,Or,、,Some,=,(赋值),4.3 内置函数,函数,是能够完成特定功能并返回处理结果的一组,Transact-SQL,语句,处理结果称为,“,返回值,”,,处理过程称为,“,函数体,”,。,函数可以用来构造表达式,可以出现在,Select,语句的选择列表中,也可以出现在,Where,子句的条件中。,SQL Server,提供了许多系统内置函数,同时也允许用户根据需要自己定义函数。,SQL Serve,提供的常用的内置函数主要有以下几类:,数学函数,、,字符串函数,、,日期函数,、,convert,函数,、,聚合函数,等。,数学函数,数学函数:,Abs(numeric_expression),:返回指定数值表达式的绝对值,Round(numeric_expression,length ,function ),:返回一个舍入到指定的长度或精度的数值,Floor(numeric_expression),:返回小于或等于指定数值表达式的最大整数,Ceiling(numeric_expression),:返回大于或等于指定数值表达式的最小整数,Power(float_expression,y),:返回指定表达式的指定幂的值,Sqrt(float_expression),:返回指定表达式的平方根,Square(float_expression),:返回指定表达式的平方,Exp(float_expression),:返回指定的表达式的指数值,Log(float_expression),:返回指定表达式的自然对数,Log10(float_expression),:返回指定表达式的以,10,为底的对数,Sin(float_expression),:返回指定角度(以弧度为单位)的三角正弦值,Cos(float_expression),:返回指定角度(以弧度为单位)的三角余弦值,4.3.2 字符串函数,字符串函数:,Ascii(character_expression),:返回字符表达式中最左侧的字符的,ASCII,代码值,Char(integer_expression),:,将,int ASCII,代码转换为字符,Suubstring(value_expression,start_expression,length_expression),:,返回字符表达式的从,start_expr
展开阅读全文