1、18.1 Transact-SQL8.1 Transact-SQL8.1 Transact-SQL简简简介介介介介介 结结构化构化构化构化查询语查询语言(言(言(言(SQLSQL)是由美国国家)是由美国国家)是由美国国家)是由美国国家标标准准准准协协会会会会(American National Standards InstituteAmerican National Standards Institute,ANSIANSI)和国)和国)和国)和国际标际标准化准化准化准化组织组织(International Standards OrganizationInternational Standard
2、s Organization,ISOISO)定)定)定)定义义的的的的标标准,而准,而准,而准,而T-SQLT-SQL是是是是MicrosoftMicrosoft公司公司公司公司对对此此此此标标准准准准的一个的一个的一个的一个实现实现。T-SQLT-SQL是在是在是在是在SQLSQL上上上上发发展而来的,展而来的,展而来的,展而来的,T-SQLT-SQL在在在在SQLSQL的基的基的基的基础础上添加了流程控制,是上添加了流程控制,是上添加了流程控制,是上添加了流程控制,是SQLSQL语语言的言的言的言的扩扩展。因此,展。因此,展。因此,展。因此,SQLSQL是几乎所有的关系型数据是几乎所有的关
3、系型数据是几乎所有的关系型数据是几乎所有的关系型数据库库都支持的都支持的都支持的都支持的语语言,而言,而言,而言,而T-SQLT-SQL是是是是Microsoft SQL serverMicrosoft SQL server支持的支持的支持的支持的语语言。言。言。言。28.1 Transact-SQL8.1 Transact-SQL8.1 Transact-SQL简简简介介介介介介 在在在在Microsoft SQL server 2005Microsoft SQL server 2005系系系系统统中,中,中,中,T-SQLT-SQL可以可以可以可以创创建、建、建、建、维护维护、保、保、保、
4、保护护数据数据数据数据库对库对象,并且可以操作象,并且可以操作象,并且可以操作象,并且可以操作对对象中的象中的象中的象中的数据,所以数据,所以数据,所以数据,所以Transact-SQLTransact-SQL语语言是一种完整的言是一种完整的言是一种完整的言是一种完整的语语言。根言。根言。根言。根据据据据T-SQLT-SQL语语言的言的言的言的执执行功能特点,可以将行功能特点,可以将行功能特点,可以将行功能特点,可以将T-SQLT-SQL语语言分言分言分言分为为三种三种三种三种类类型:型:型:型:n n 数据定数据定数据定数据定义语义语言言言言n n 数据操数据操数据操数据操纵语纵语言言言言n
5、 n 数据控制数据控制数据控制数据控制语语言言言言38.1 Transact-SQL8.1 Transact-SQL8.1 Transact-SQL简简简介介介介介介数数数数据据据据定定定定义义语语言言言言(Data Data Data Data Definition Definition Definition Definition LanguageLanguageLanguageLanguage,DDLDDLDDLDDL)数数数数据据据据定定定定义义语语言言言言DDLDDL用用用用于于于于在在在在SQLSQL中中中中创创建建建建或或或或修修修修改改改改数数数数据据据据库库及及及及数数数数据据
6、据据库库对对象象象象,如如如如创创建建建建表表表表、视视图图、存存存存储储过过程程程程、函函函函数数数数等等等等数数数数据据据据库库对对象象象象。在在在在DDLDDL中中中中主主主主要要要要包包包包括括括括CREATECREATE语语句句句句、ALTERALTER语语句句句句和和和和DROPDROP语语句,分句,分句,分句,分别别用于用于用于用于创创建、修改、建、修改、建、修改、建、修改、删删除数据除数据除数据除数据库库及数据及数据及数据及数据库对库对象。象。象。象。48.1 Transact-SQL8.1 Transact-SQL简简介介介介数数数数 据据据据 操操操操 纵纵 语语 言言言言
7、Data Data Data Data Manipulation Manipulation Manipulation Manipulation LanguageLanguageLanguageLanguage,DMLDMLDMLDML)数数数数据据据据操操操操纵纵语语言言言言DMLDML是是是是指指指指用用用用来来来来操操操操纵纵数数数数据据据据库库中中中中数数数数据据据据的的的的语语句句句句,主主主主要要要要包包包包括括括括SELECTSELECT语语句句句句、INSERTINSERT语语句句句句、UPDATEUPDATE语语句、句、句、句、DELETEDELETE语语句、句、句、句、CU
8、RSORCURSOR语语句等。句等。句等。句等。数数数数据据据据控控控控制制制制语语言言言言(Data Data Data Data Control Control Control Control LanguageLanguageLanguageLanguage,DCLDCLDCLDCL)数数数数据据据据控控控控制制制制语语言言言言DCLDCL是是是是用用用用来来来来确确确确保保保保数数数数据据据据库库安安安安全全全全的的的的语语句句句句,主主主主要要要要用用用用于于于于控控控控制制制制数数数数据据据据库库组组件件件件的的的的存存存存取取取取许许可可可可、存存存存取取取取权权限限限限等等等等权
9、权限限限限管管管管理理理理问问题题。其其其其主要包括主要包括主要包括主要包括GRANTGRANT语语句、句、句、句、REVOKEREVOKE语语句、句、句、句、DENYDENY。5第第第第8 8章章章章 T-SQLT-SQL编编程程程程8.1 Transact-SQL8.1 Transact-SQL简简介介介介 8.2 8.2 T-SQLT-SQL中的批中的批中的批中的批处处理理理理 8.3 8.3 T-SQLT-SQL中的注中的注中的注中的注释释8.4 8.4 T-SQLT-SQL数据数据数据数据类类型及型及型及型及转换转换 8.5 8.5 T-SQLT-SQL运算符运算符运算符运算符8.6
10、 8.6 T-SQLT-SQL中的常量和中的常量和中的常量和中的常量和变变量量量量8.7 8.7 T-SQLT-SQL的流程控制的流程控制的流程控制的流程控制8.8 8.8 T-SQLT-SQL中常用函数中常用函数中常用函数中常用函数68.2 T-SQL8.2 T-SQL8.2 T-SQL中的批中的批中的批中的批中的批中的批处处处理理理理理理 在在在在SQL SQL Server2005Server2005中中中中,可可可可以以以以一一一一次次次次执执行行行行多多多多个个个个T-SQLT-SQL语语句句句句,这这些些些些多多多多个个个个T-SQLT-SQL语语句句句句称称称称为为“批批批批”。
11、SQL SQL Server2005Server2005会会会会将将将将一一一一批批批批T-SQLT-SQL语语句句句句当当当当成成成成一一一一个个个个执执行行行行单单元元元元,将将将将其其其其编编译译后后后后一一一一次次次次执执行行行行,而不是将一个个而不是将一个个而不是将一个个而不是将一个个T-SQLT-SQL语语句句句句编译编译后再一个个后再一个个后再一个个后再一个个执执行。行。行。行。在在在在SQL SQL Server2005Server2005中中中中同同同同样样允允允允许许一一一一次次次次使使使使用用用用多多多多个个个个批批批批,不不不不同同同同的的的的批批批批之之之之间间用用用
12、用“GO”GO”来来来来分分分分隔隔隔隔。查查询询编编辑辑器器器器会会会会自自自自动动根根根根据据据据GOGO指指指指令令令令来将来将来将来将T-SQLT-SQL语语句分句分句分句分为为多个批来多个批来多个批来多个批来编译执编译执行。行。行。行。78.2 T-SQL8.2 T-SQL8.2 T-SQL中的批中的批中的批中的批中的批中的批处处处理理理理理理注意:注意:注意:注意:1 1、gogo并并并并不不不不是是是是T-SQLT-SQL语语句句句句,只只只只有有有有查查询询编编辑辑器器器器才才才才能能能能识识别别并并并并处处理,理,理,理,编编写其他写其他写其他写其他应应用程序就不能使用用程序
13、就不能使用用程序就不能使用用程序就不能使用gogo指令。指令。指令。指令。2 2、由由由由于于于于批批批批与与与与批批批批之之之之间间是是是是独独独独立立立立的的的的,所所所所以以以以,当当当当其其其其中中中中一一一一个个个个批批批批出出出出现错误时现错误时,不会影响其他批的运行。,不会影响其他批的运行。,不会影响其他批的运行。,不会影响其他批的运行。8第第第第8 8章章章章 T-SQLT-SQL编编程程程程8.1 Transact-SQL8.1 Transact-SQL简简介介介介 8.2 8.2 T-SQLT-SQL中的批中的批中的批中的批处处理理理理 8.3 8.3 T-SQLT-SQL
14、中的注中的注中的注中的注释释8.4 8.4 T-SQLT-SQL数据数据数据数据类类型及型及型及型及转换转换 8.5 8.5 T-SQLT-SQL运算符运算符运算符运算符8.6 8.6 T-SQLT-SQL中的常量和中的常量和中的常量和中的常量和变变量量量量8.7 8.7 T-SQLT-SQL的流程控制的流程控制的流程控制的流程控制8.8 8.8 T-SQLT-SQL中常用函数中常用函数中常用函数中常用函数98.3 T-SQL8.3 T-SQL8.3 T-SQL中的注中的注中的注中的注中的注中的注释释释 在在在在T-SQLT-SQLT-SQLT-SQL程程程程序序序序里里里里加加加加入入入入注
15、注注注释释语语句句句句,可可可可以以以以增增增增加加加加程程程程序序序序的的的的可可可可读读性性性性。SQL SQL SQL SQL ServerServerServerServer不不不不会会会会对对注注注注释释的的的的内内内内容容容容进进行行行行编编辑辑和和和和执执行行行行,在在在在T-SQLT-SQLT-SQLT-SQL中中中中支支支支持两种注持两种注持两种注持两种注释释方式。方式。方式。方式。1 1 1 1、-注注注注释释 -注注注注释释的的的的有有有有效效效效范范范范围围只只只只能能能能到到到到该该行行行行结结束束束束的的的的地地地地方方方方,也也也也就就就就是是是是说说,从从从从开
16、开开开始始始始,到到到到本本本本行行行行结结束束束束为为止止止止,都都都都可可可可以以以以是是是是注注注注释释的的的的内内内内容容容容,如如如如果果果果有有有有多多多多行注行注行注行注释释内容的内容的内容的内容的话话,每一行的最前面都必,每一行的最前面都必,每一行的最前面都必,每一行的最前面都必须须加上加上加上加上-。2 2 2 2、/*/*/*/*/注注注注释释 当当当当要要要要进进行行行行比比比比较较长长的的的的注注注注释释时时,可可可可以以以以使使使使用用用用/*/*/*/*/注注注注释释,/*/*/*/*/可可可可以以以以对对多多多多行行行行语语句句句句进进行行行行注注注注释释,其其其
17、其有有有有效效效效范范范范围围是是是是从从从从“/*/*/*/*”开始,到开始,到开始,到开始,到“*/”结结束,中束,中束,中束,中间间可以跨越多行。可以跨越多行。可以跨越多行。可以跨越多行。10第第第第8 8章章章章 T-SQLT-SQL编编程程程程8.1 Transact-SQL8.1 Transact-SQL简简介介介介 8.2 8.2 T-SQLT-SQL中的批中的批中的批中的批处处理理理理 8.3 8.3 T-SQLT-SQL中的注中的注中的注中的注释释8.4 8.4 T-SQLT-SQL数据数据数据数据类类型及型及型及型及转换转换 8.5 8.5 T-SQLT-SQL运算符运算符
18、运算符运算符8.6 8.6 T-SQLT-SQL中的常量和中的常量和中的常量和中的常量和变变量量量量8.7 8.7 T-SQLT-SQL的流程控制的流程控制的流程控制的流程控制8.8 8.8 T-SQLT-SQL中常用函数中常用函数中常用函数中常用函数118.4 T-SQL8.4 T-SQL8.4 T-SQL数据数据数据数据数据数据类类类型及型及型及型及型及型及转换转换转换在在在在SQL ServerSQL Server中,无中,无中,无中,无论论是数据表的字段、常量、是数据表的字段、常量、是数据表的字段、常量、是数据表的字段、常量、变变量、量、量、量、表达式表达式表达式表达式还还是参数,都具
19、有一个相是参数,都具有一个相是参数,都具有一个相是参数,都具有一个相对应对应的数据的数据的数据的数据类类型。数据型。数据型。数据型。数据类类型是一种属性,用于指定型是一种属性,用于指定型是一种属性,用于指定型是一种属性,用于指定对对象可保存的数据的象可保存的数据的象可保存的数据的象可保存的数据的类类型。型。型。型。1 1、使用、使用、使用、使用CASTCAST转换转换数据数据数据数据类类型型型型当要当要当要当要对对不同不同不同不同类类型的数据型的数据型的数据型的数据进进行运算行运算行运算行运算时时,就必,就必,就必,就必须须将其将其将其将其转换转换成成成成相同的数据相同的数据相同的数据相同的数
20、据类类型才能型才能型才能型才能进进行运算。在行运算。在行运算。在行运算。在SQL ServerSQL Server里提供了两里提供了两里提供了两里提供了两个函数可以个函数可以个函数可以个函数可以进进行数据行数据行数据行数据类类型的型的型的型的转换转换,其中一个是,其中一个是,其中一个是,其中一个是CASTCAST。128.4 T-SQL8.4 T-SQL8.4 T-SQL数据数据数据数据数据数据类类类型及型及型及型及型及型及转换转换转换语语法格式如下:法格式如下:法格式如下:法格式如下:CASTCAST(expression AS data_type(length)expression AS
21、data_type(length))其中其中其中其中expressionexpression为为任何有效的表达式,任何有效的表达式,任何有效的表达式,任何有效的表达式,data_typedata_type为为要要要要转换转换的数据的数据的数据的数据类类型,型,型,型,lengthlength为为数据数据数据数据类类型的型的型的型的长长度,一般只有度,一般只有度,一般只有度,一般只有在在在在ncharnchar、nvarcharnvarchar、charchar、varcharvarchar、binarybinary和和和和varbinaryvarbinary这这几种数据几种数据几种数据几种数据
22、类类型才需要使用,是可型才需要使用,是可型才需要使用,是可型才需要使用,是可选选参数。参数。参数。参数。138.4 T-SQL8.4 T-SQL8.4 T-SQL数据数据数据数据数据数据类类类型及型及型及型及型及型及转换转换转换例例例例1 1:查查看看看看northwindnorthwind数据数据数据数据库库productsproducts表中表中表中表中产产品及品及品及品及单单价,价,价,价,并在一列中并在一列中并在一列中并在一列中显显示出来示出来示出来示出来.程序代程序代程序代程序代码码如下:如下:如下:如下:SELECT productname+SELECT productname+的
23、的的的单单价价价价为为:+CAST(unitprice as varchar(10)+CAST(unitprice as varchar(10)+元元元元 AS AS 产产品介品介品介品介绍绍FROM productsFROM products148.4 T-SQL8.4 T-SQL8.4 T-SQL数据数据数据数据数据数据类类类型及型及型及型及型及型及转换转换转换 同步任同步任同步任同步任务务11:查查看看看看northwindnorthwind数据数据数据数据库库ordersorders表中表中表中表中订单订单号和号和号和号和订单时间订单时间,并在一列中,并在一列中,并在一列中,并在一列中
24、显显示出来示出来示出来示出来SELECT CAST(orderid as varchar(10)+SELECT CAST(orderid as varchar(10)+的的的的时间为时间为:+CAST(orderdate as varchar(20)AS+CAST(orderdate as varchar(20)AS 订订单时间单时间单时间单时间FROM ordersFROM orders158.4 T-SQL8.4 T-SQL8.4 T-SQL数据数据数据数据数据数据类类类型及型及型及型及型及型及转换转换转换2 2、使用、使用、使用、使用CONVERTCONVERT转换转换数据数据数据数据类
25、类型型型型CONVERTCONVERT函数与函数与函数与函数与CASTCAST函数函数函数函数类类似,作用也是似,作用也是似,作用也是似,作用也是转换转换数据数据数据数据类类型,型,型,型,其其其其语语法格式如下:法格式如下:法格式如下:法格式如下:CONVERTCONVERT (data_type(length)data_type(length),expression,styleexpression,style)data_typedata_type为为要要要要转换转换的数据的数据的数据的数据类类型型型型lengthlength为为数据数据数据数据类类型的型的型的型的长长度度度度express
26、ionexpression为为任何有效的表达式任何有效的表达式任何有效的表达式任何有效的表达式stylestyle是是是是样样式式式式,一般用于将一般用于将一般用于将一般用于将datetimedatetime或或或或smalldatetimesmalldatetime数据数据数据数据转换转换为为字符数据(字符数据(字符数据(字符数据(ncharnchar、nvarcharnvarchar、charchar、varcharvarchar数据数据数据数据类类型)型)型)型)的日期格式的的日期格式的的日期格式的的日期格式的样样式;或者用于将式;或者用于将式;或者用于将式;或者用于将floatfloa
27、t、realreal、moneymoney或或或或smallmoneysmallmoney数据数据数据数据转换为转换为字符数据的字符串格式。如果字符数据的字符串格式。如果字符数据的字符串格式。如果字符数据的字符串格式。如果stylestyle为为NULLNULL,则则返回的返回的返回的返回的结结果也果也果也果也为为NULLNULL。168.4 T-SQL8.4 T-SQL8.4 T-SQL数据数据数据数据数据数据类类类型及型及型及型及型及型及转换转换转换例例例例2 2:查查看看看看northwindnorthwind数数数数据据据据库库ordersorders表表表表中中中中订订单单号号号号、
28、订订购购日期日期日期日期、到到到到货货日期日期日期日期、发货发货日期日期日期日期。select orderid as select orderid as 订单订单号号号号,convert(varchar(20),orderdate,1)as convert(varchar(20),orderdate,1)as 订购订购日期日期日期日期,convert(varchar(20),requireddate,102)as convert(varchar(20),requireddate,102)as 到到到到货货日期日期日期日期,convert(varchar(20),shippeddate,103)
29、as convert(varchar(20),shippeddate,103)as 发货发货日期日期日期日期from ordersfrom orders 同步任同步任同步任同步任务务22:查查看看看看northwindnorthwind数据数据数据数据库库productsproducts表中表中表中表中单单价价价价178.4 T-SQL8.4 T-SQL8.4 T-SQL数据数据数据数据数据数据类类类型及型及型及型及型及型及转换转换转换3 3 隐隐式数据式数据式数据式数据类类型型型型转换转换在在在在进进行行行行不不不不同同同同类类型型型型的的的的数数数数据据据据运运运运算算算算时时,不不不不一
30、一一一定定定定都都都都必必必必须须要要要要使使使使用用用用CASTCAST或或或或CONVERTCONVERT来来来来进进行行行行数数数数据据据据类类型型型型转转换换,在在在在SQL SQL ServerServer里里里里,系系系系统统会会会会自自自自动动将将将将一一一一些些些些数数数数据据据据类类型型型型进进行行行行转转换换,这这种种种种转转换换称称称称为为“隐隐式式式式转转换换”。而而而而用用用用CASTCAST或或或或CONVERTCONVERT转转换换数数数数据据据据类类型型型型称称称称为为“显显式式式式转换转换”。188.4 T-SQL8.4 T-SQL8.4 T-SQL数据数据数
31、据数据数据数据类类类型及型及型及型及型及型及转换转换转换 例例例例3 3:查查看看看看northwindnorthwind数数数数据据据据库库productsproducts表表表表中中中中产产品品品品库库存存存存量量量量所所所所值值的的的的资资金金金金SELECT productname,unitprice*unitsinstock AS SELECT productname,unitprice*unitsinstock AS jiyazijinjiyazijinFROM productsFROM products 同步任同步任同步任同步任务务33:查查看看看看northwindnorthw
32、ind数据数据数据数据库库order detailsorder details表中表中表中表中每个每个每个每个订单订单的的的的总总金金金金额额SELECT orderid,sum(unitprice*quantity)AS jineSELECT orderid,sum(unitprice*quantity)AS jineFROM order detailsFROM order detailsGROUP BY orderidGROUP BY orderid19第第第第8 8章章章章 T-SQLT-SQL编编程程程程8.1 Transact-SQL8.1 Transact-SQL简简介介介介 8.
33、2 8.2 T-SQLT-SQL中的批中的批中的批中的批处处理理理理 8.3 8.3 T-SQLT-SQL中的注中的注中的注中的注释释8.4 8.4 T-SQLT-SQL数据数据数据数据类类型及型及型及型及转换转换 8.5 8.5 T-SQLT-SQL运算符运算符运算符运算符8.6 8.6 T-SQLT-SQL中的常量和中的常量和中的常量和中的常量和变变量量量量8.7 8.7 T-SQLT-SQL的流程控制的流程控制的流程控制的流程控制8.8 8.8 T-SQLT-SQL中常用函数中常用函数中常用函数中常用函数208.5 T-SQL8.5 T-SQL8.5 T-SQL运算符运算符运算符运算符运
34、算符运算符n n算算算算术术运算符运算符运算符运算符n n逻辑逻辑运算符运算符运算符运算符n n字符串字符串字符串字符串连连接运算符接运算符接运算符接运算符n n一元运算符一元运算符一元运算符一元运算符n n比比比比较较运算符运算符运算符运算符 21第第第第8 8章章章章 T-SQLT-SQL编编程程程程8.1 Transact-SQL8.1 Transact-SQL简简介介介介 8.2 8.2 T-SQLT-SQL中的批中的批中的批中的批处处理理理理 8.3 8.3 T-SQLT-SQL中的注中的注中的注中的注释释8.4 8.4 T-SQLT-SQL数据数据数据数据类类型及型及型及型及转换转
35、换 8.5 8.5 T-SQLT-SQL运算符运算符运算符运算符8.6 8.6 T-SQLT-SQL中的常量和中的常量和中的常量和中的常量和变变量量量量8.7 8.7 T-SQLT-SQL的流程控制的流程控制的流程控制的流程控制8.8 8.8 T-SQLT-SQL中常用函数中常用函数中常用函数中常用函数228.6 T-SQL8.6 T-SQL8.6 T-SQL中的常量和中的常量和中的常量和中的常量和中的常量和中的常量和变变变量量量量量量1 1、常量、常量、常量、常量 常量常量常量常量,也称,也称,也称,也称为为文字文字文字文字值值或或或或标标量量量量值值,是一个代表,是一个代表,是一个代表,是
36、一个代表特定特定特定特定值值的符号的符号的符号的符号,是一个,是一个,是一个,是一个不不不不变变的的的的值值。常量的。常量的。常量的。常量的格式取决于格式取决于格式取决于格式取决于它所表示它所表示它所表示它所表示的的的的值值的数据的数据的数据的数据类类型型型型。字符串常量字符串常量字符串常量字符串常量:a:a,Im backIm back,UnicodeUnicode常量常量常量常量:N:N a a,N N BitBit常量常量常量常量:1:1,0 0 DatetimeDatetime常常常常 量量量量:August August 3,20063,2006,2006-8-32006-8-3,0
37、6/08/0606/08/06 IntegerInteger常常常常量量量量,decimaldecimal常常常常量量量量,floatfloat和和和和realreal常常常常量量量量,moneymoney常常常常量量量量238.6 T-SQL8.6 T-SQL8.6 T-SQL中的常量和中的常量和中的常量和中的常量和中的常量和中的常量和变变变量量量量量量2 2、变变量量量量 T-SQLT-SQL中的中的中的中的变变量可以分量可以分量可以分量可以分为为全局全局全局全局变变量量量量和和和和局部局部局部局部变变量量量量两两两两种,全局种,全局种,全局种,全局变变量是以量是以量是以量是以开开开开头头
38、命名的命名的命名的命名的变变量,量,量,量,局部局部局部局部变变量量量量是以是以是以是以开开开开头头命名的命名的命名的命名的变变量。量。量。量。全局全局全局全局变变量是量是量是量是SQL SERVER SQL SERVER 系系系系统统提供并提供并提供并提供并赋值赋值的的的的变变量。量。量。量。用用用用户户不能建立及修改全局不能建立及修改全局不能建立及修改全局不能建立及修改全局变变量量量量。全局。全局。全局。全局变变量是一量是一量是一量是一组组特殊的特殊的特殊的特殊的函数,它函数,它函数,它函数,它们们的名称是以的名称是以的名称是以的名称是以开始开始开始开始,且不需要任何参数。且不需要任何参数
39、且不需要任何参数。且不需要任何参数。SQL SERVERSQL SERVER提供提供提供提供3333个全局个全局个全局个全局变变量。量。量。量。248.6 T-SQL8.6 T-SQL8.6 T-SQL中的常量和中的常量和中的常量和中的常量和中的常量和中的常量和变变变量量量量量量ERRORERROR:返回返回返回返回最后最后最后最后执执行的一条行的一条行的一条行的一条T-SQLT-SQL语语句句句句的的的的错误错误代代代代码码IdentityIdentity:返回返回返回返回最后插入最后插入最后插入最后插入的的的的标识值标识值ROWCOUNTROWCOUNT:返回受到返回受到返回受到返回受到
40、上一上一上一上一语语句影响的行数句影响的行数句影响的行数句影响的行数VERSIONVERSION:返回当前的返回当前的返回当前的返回当前的SQL ServerSQL Server安装的版本信息安装的版本信息安装的版本信息安装的版本信息例例例例4 4:查查看版本信息看版本信息看版本信息看版本信息print versionprint version例例例例5 5:查查看看看看selectselect后的后的后的后的记录记录集里的集里的集里的集里的记录记录数数数数select*from employeesselect*from employeesprint print 一共一共一共一共查询查询了了了
41、了+CAST(rowcount as+CAST(rowcount as varchar(5)+varchar(5)+条条条条记录记录 258.6 T-SQL8.6 T-SQL8.6 T-SQL中的常量和中的常量和中的常量和中的常量和中的常量和中的常量和变变变量量量量量量 3 3、局部、局部、局部、局部变变量量量量 指在批指在批指在批指在批处处理或脚本中用来保存数据理或脚本中用来保存数据理或脚本中用来保存数据理或脚本中用来保存数据值值的的的的对对象象象象,局部局部局部局部变变量名量名量名量名总总是以是以是以是以符号开始符号开始符号开始符号开始,必必必必须须符合符合符合符合标识标识符命名符命名符命
42、名符命名规则规则。在。在。在。在使用使用使用使用一一一一个个个个局部局部局部局部变变量前量前量前量前,必必必必须须使用使用使用使用DECLAREDECLARE语语句来句来句来句来声明声明声明声明这这个局个局个局个局部部部部变变量,指定其量,指定其量,指定其量,指定其变变量名和数据量名和数据量名和数据量名和数据类类型。型。型。型。局部局部局部局部变变量声明的量声明的量声明的量声明的语语法格式法格式法格式法格式为为:DECLARE DECLARE 局部局部局部局部变变量名量名量名量名 数据数据数据数据类类型型型型,n,n268.6 T-SQL8.6 T-SQL8.6 T-SQL中的常量和中的常量和
43、中的常量和中的常量和中的常量和中的常量和变变变量量量量量量局部局部局部局部变变量量量量赋值赋值:SET SET 局部局部局部局部变变量名量名量名量名=表达式表达式表达式表达式也可以使用也可以使用也可以使用也可以使用selectselect语语句句句句 select select 局部局部局部局部变变量名量名量名量名=表达式表达式表达式表达式,n,n278.6 T-SQL8.6 T-SQL8.6 T-SQL中的常量和中的常量和中的常量和中的常量和中的常量和中的常量和变变变量量量量量量注意:注意:注意:注意:声明的声明的声明的声明的变变量名,其第一个字符必量名,其第一个字符必量名,其第一个字符必量
44、名,其第一个字符必须须是是是是必必必必须须指定指定指定指定变变量的数据量的数据量的数据量的数据类类型及型及型及型及长长度度度度默默默默认认情况下,系情况下,系情况下,系情况下,系统统将声明后的将声明后的将声明后的将声明后的变变量量量量设设置置置置为为NULLNULL288.6 T-SQL8.6 T-SQL8.6 T-SQL中的常量和中的常量和中的常量和中的常量和中的常量和中的常量和变变变量量量量量量局部局部局部局部变变量的作用域:量的作用域:量的作用域:量的作用域:局部局部局部局部变变量的量的量的量的作用域从声明作用域从声明作用域从声明作用域从声明它它它它们们的地方的地方的地方的地方开始开始开
45、始开始到声明它到声明它到声明它到声明它们们的批的批的批的批处处理或存理或存理或存理或存储过储过程的程的程的程的结结尾。尾。尾。尾。29第第第第8 8章章章章 T-SQLT-SQL编编程程程程8.1 Transact-SQL8.1 Transact-SQL简简介介介介 8.2 8.2 T-SQLT-SQL中的批中的批中的批中的批处处理理理理 8.3 8.3 T-SQLT-SQL中的注中的注中的注中的注释释8.4 8.4 T-SQLT-SQL数据数据数据数据类类型及型及型及型及转换转换 8.5 8.5 T-SQLT-SQL运算符运算符运算符运算符8.6 8.6 T-SQLT-SQL中的常量和中的常
46、量和中的常量和中的常量和变变量量量量8.7 8.7 T-SQLT-SQL的流程控制的流程控制的流程控制的流程控制8.8 8.8 T-SQLT-SQL中常用函数中常用函数中常用函数中常用函数308.7 T-SQL8.7 T-SQL8.7 T-SQL的流程控制的流程控制的流程控制的流程控制的流程控制的流程控制1 1)BEGINENDBEGINEND语语句句句句块块 用于将多个用于将多个用于将多个用于将多个T-SQLT-SQL语语句句句句组组合在一个合在一个合在一个合在一个语语句句句句块块中中中中,其其其其语语法格式法格式法格式法格式为为:BEGIN BEGIN 语语句句句句1 1 语语句句句句n
47、n END END318.7 T-SQL8.7 T-SQL8.7 T-SQL的流程控制的流程控制的流程控制的流程控制的流程控制的流程控制2)IFELSE2)IFELSE语语句句句句 语语法格式法格式法格式法格式为为:IF IF 条件表达式条件表达式条件表达式条件表达式 语语句句句句 ELSEELSE 语语句句句句 328.7 T-SQL8.7 T-SQL的流程控制的流程控制的流程控制的流程控制例例例例6 6:向:向:向:向productsproducts表插入一条表插入一条表插入一条表插入一条记录记录,如果插入成功,如果插入成功,如果插入成功,如果插入成功则输则输出出出出 插入插入插入插入记录
48、记录成功成功成功成功,否,否,否,否则输则输出出出出 出出出出现错误现错误 INSERT INSERT products(productid,productname,discontinued)products(productid,productname,discontinued)VALUES(112,VALUES(112,computercomputer,1),1)IF error0 IF error0 PRINT PRINT 出出出出现错误现错误 ELSE ELSE PRINT PRINT 插入插入插入插入记录记录成功成功成功成功 GOGO338.7 T-SQL8.7 T-SQL8.7 T-
49、SQL的流程控制的流程控制的流程控制的流程控制的流程控制的流程控制 例例7 7:查查看看看看northwindnorthwind数据数据数据数据库库productsproducts中中中中产产品名品名品名品名为为 ChangChang的的的的单单价是否低于价是否低于价是否低于价是否低于2020元,如果低于元,如果低于元,如果低于元,如果低于2020元的元的元的元的话话,查查看其看其看其看其订购订购量。量。量。量。分析:分析:分析:分析:1 1、最后及过程中需要查询的内容是什么?、最后及过程中需要查询的内容是什么?、最后及过程中需要查询的内容是什么?、最后及过程中需要查询的内容是什么?2 2、查
50、询用到哪些表?、查询用到哪些表?、查询用到哪些表?、查询用到哪些表?3 3、查询过程中的条件是什么?、查询过程中的条件是什么?、查询过程中的条件是什么?、查询过程中的条件是什么?4 4、查询过程中需要定义哪些变量?、查询过程中需要定义哪些变量?、查询过程中需要定义哪些变量?、查询过程中需要定义哪些变量?348.7 T-SQL8.7 T-SQL8.7 T-SQL的流程控制的流程控制的流程控制的流程控制的流程控制的流程控制DECLARE price moneyDECLARE price moneyDECLARE productid intDECLARE productid intDECLARE D






