SQLServer2005数据库应用技术清华大学出版社第六章销售管理数据库编程SQLServer2005数据库应用技术清华大学出版社技能目标学会使用Transact-SQL语言对销售管理数据库进行应用编程,以提供数据库应用系统的开发能力SQLServer2005数据库应用技术清华大学出版社知识目标正确理解和掌握使用SQLServer变量;掌握SQLServer函数的使用;掌握流程控制语句;掌握编写顺序结构、选择结构和循环结构的程序SQLServer2005数据库应用技术清华大学出版社1、Transact-SQL语言的分类(1)数据定义语言DDL:用来创建数据库和数据库对象的命令,绝大部分以CREATE开头,如CREATETABLE等。(2)数据操作语言DML:用来操作数据库中各种对象,对数据进行修改和检索。DML语言主要有四种:SELECT(查询)、INSERT(插入)、UPDATE(更新)和DELETE(删除)。(3)数据控制语言DCL:用来控制数据库组件的存取许可、权限等命令。(4)事务管理语言TML:用于管理数据库中的事务的命令。(5)其他语言元素:如标识符、数据类型、流程控制和函数等。一、Transact-sql语言的基本知识SQLServer2005数据库应用技术清华大学出版社2.Transact-SQL语法约定Transact-SQL语法格式约定标识符标识符就是指用来定义服务器、数据库、数据库对象和变量等的名称。可分为常规标识符和分隔标识符。1.标识符的长度,通常在1~30个字符,不能是保留字2.标识符第一个字任必须是字母、下划线、@和#开头,从第二个开始还可以是数字、$符号3.不允许嵌入空格或其他特殊符号4.包含的字符数必须在1-128之间以下()是T-SQL合法的标识符A.1FDB.“mybook”C.My_bookD.select续行(回车)注释(行注释--或者块注释/**/)批处理(由一条或者多条SQL语句构成的)SQLServer2005数据库应用技术清华大学出版社Transact-SQL语法格式约定语法约定说明大写Transact-SQL关键字。斜体用户提供的Transact-SQL语法的参数。粗体数据库名、表名、列名、索引名、存储过程、实用工具、数据类型名以及必须按所显示的原样键入的文本。下划线当语句中省略了包含带下划线的值的子句时应用的默认值。|(竖线)分隔括号或大括号中的语法项。只能选择其中一项。[](方括号)可选语法项。不要键入方括号。{}(大括号)必选语法项。不要键入大括号。[,...n]指示前面的项可以重复n次。每一项由逗号分隔。[...n]指示前面的项可以重复n次。每一项由空格分隔。[;]可选的Transact-SQL语句终止符。不要键入方括号。标签::=语法块的名称。此约定用于对可在语句中的多个位置使用的过长语法段或语法单元进行分组和标记。SQLServer2005数据库应用技术清华大学出版社3.Transact-SQL数据库对象命名方法所有对数据库对象名可以是由四部分组成的名称,格式如下。[server_name.[database_name].[schema_name].|database_name.[schema_name].|schema_name.]object_name各部分说明如下。server_name:连接的服务器名称或远程服务器名称。database_name:SQLServer数据库的名称schema_name:指定包含对象的架构的名称。object_name:对象的名称。SQLServer2005数据库应用技术清华大学出版社对象名的有效格式对象引用格式说明server.database.schema.object四个部分的名称。server.database..object省略架构名称。server..schema.object省略数据库名称。server...object省略数据库和架构名称。database.schema.object省略服务器名。database..object省略服务器和架构名称。schema.object省略服务器和数据库名称。object省略服务器、数据库和架构名称。SQLServer2005数据库应用技术清华大学出版社4.常量根据常量值的不同类型,常量分为字符串常量、二进制常量、整型常量、实数常量、日期时间常量、货币常量和惟一标识常量。SQLServer2005数据库应用技术清华大学出版社5.变量SQLServer2005提供两种变量:用户自己定义的局部变量和系统提供的全局变量。用户自己定义的变量称为局部变量。局部变量用于保存特定类型的单个数据值的对象。定义格式:DECLARE@局部变量名数据类型[,...n]【例】定义一个整型变量。Declare@numberint【例】定义三个varchar类型变量和一个整型变量/*定义可变长度字符型变量@name,长度为8,可变长度的字符型变量@sex,长度为2,小整型变量@age,可变长度的字符型变量@address,长度为50*/DECLARE@namevarchar(8),@sexvarchar(2),@agesmallintDECLARE@addressvarchar(50)SQLServer2005数据库应用技术清华大学出版社局部变量局部变量的赋值SET@局部变量名=表达式[,…n]SELECT@局部变量名=表达式[,…n][FROM子句][WHERE子句]【例6.6】打印“采购部主管”姓名。代码如下:DECLARE@nameVARCHAR(10)--定义可变长度字符型的变量SELECT@name='张立'--给@name赋值PRINT'采购部主管:'+@name--显示@name的内容GO--批处理结束GOSQLServer2005数据库应用技术清华大学出版社全局变量全局变量由系统定义和维护的变量,用于记录服务器活动状态的一组数据。全局变量名由@@符号开始。用户不能建立全局变量,也不可能使用SET语句去修改全局变量的值。在SQLServer2005中,全局变量以系统函数的形式在使用。SQLServer2005数据库应用技术清华大学出版社6.表达式和运算符表达式是标识符、值和运算符的组合。(1)算术运算符(2)赋值运算符(=)SELECT@name=‘张立’--给@name赋值运算符含义+(加)加-(减)减*(乘)乘/(除)除%(取模)返回一个除法运算的整数余数。例如,12%5=2,这是因为12除以5,余数为2。SQLServer2005数据库应用技术清华大学出版社(3)位运算符运算符含义&(位与)逻辑与运算(两个操作数)|(位或)位或(两个操作数)^(位异或)位异或(两个操作数)(4)比较运算符运算符含义=(等于)等于(大于)大于(小于)小于=(大于等于)大于或等于=(小于等于)小于或等于(不等于)不等于!=(不等于)不等于(非SQL-92标准)!(不小于)不小于(非SQL-92标准)!(不大于)不大于(非SQL-92标准)SQLServer2005数据库应用技术清华大学出版社(5)逻辑运算符运算符含义ALL如果一组的比较都为TRUE,那么就为TRUE。AND如果两个布尔表达式都为TRUE,那么就为TRUE。ANY如果一组的比较中任何一个为TRUE,那么就为TRUE。BETWEEN如果操作数在某个范围之内,那么就为TRUE。EXISTS如果子查询包含一些行,那么就为TRUE。IN如果操作数等于表达式列表中的一个,那么就为TRUE。LIKE如果操作数与一种模式相匹配,那么就为TRUE。NOT对任何其他布尔运算符的值取反。OR如果两个布尔表达式中的一个为TRUE,那么就为TRUE。SOME如果在一组比较中,有些为TRUE,那么就为TRUE。SQLServer2005数据库应用技术清华大学出版社(6)字符串串联运算符加号(+)是字符串串联运算符,将字符串串联起来。例如,'采购部主管:'+'张立'的结果就是'采购部主管:张立'。(7)一元运算符运算符含义+(正)数值为正。-(负)数值为负。~(位非)返回数字的非。SQLServer2005数据库应用技术清华大学出版社(8)运算符优先级级别运算符1~(位非)2*(乘)、/(除)、%(取模)3+(正)、-(负)、+(加)、(+连接)、-(减)、&(位与)4=,、、=、=、、!=、!、!(比较运算符)5^(位异或)、|(位或)6NOT7AND8ALL、ANY、BETWEEN、IN、LIKE、OR、SOME9=(赋值)SQLServer2005数据库应用技术清华大学出版社二、流程控制语句1、BEGIN…END语句BEGIN…END语句用于将多个Transact-SQL语句组合为一个逻辑块,相当于一个单一语句,达到一起执行的目的。它的语法格式如下。BEGIN{语句1语句2…}ENDSQLServer2005允许BEGIN…END语句嵌套使用。SQLServer2005数据库应用技术清华大学出版社流程控制语句(续)2、IF…ELSE语句IF…ELSE语句实现程序选择结构。它的语法格式如下。IF逻辑表达式{语句块1}[ELSE{语句块2}]【例】在销售管理数据库中,查询员工的平均工资是否超过5000元,并显示相关信息。USECompanySalesGODECLARE@avg_salMONEY/*定义局部变量@avg_sal用于存储平均工资*/SELECT@avg_sal=AVG(salary)FROMemployee/*查询平均工资*IF@avg_sal5000/*判断数值大小*/PRINT'员工的平均工资超过'/*条件为真执行*/ELSEPRINT'员工的平均工资不超过'/*条件为假执行*/GOSQLServer2005数据库应用技术清华大学出版社SQLServer2005数据库应用技术清华大学出版社流程控制语句(续)3、WHILE、CONTINUE和BREAK语句WHILE语句实现循环结构。如果指定的条件为真,就重复执行语句块,直到逻辑表达式为假。它的语法格式如下。WHILE逻辑表达式BEGIN语句块1[CONTINUE][BREAK]语句块2END例6.9】计算并输出1+2+3+…+100表达式的和。代码如下:DECLARE@iint,@sumintSELECT@sum=0SELECT@i=1WHILE@i=100BEGINSET@sum=@sum+@iSET@i=@i+1ENDPRINT@sumSQLServer2005数据库应用技术清华大学出版社流程控制语句(续)4、goto语句(不建议使用)5、RETURN语句RETURN语句实现从查询或过程中无条件退出的功能。它的语法格式如下。RETURN[整数表达式]6、WAITFOR语句WAITFOR语句实现语句延缓一段时间或延迟到某特定的时间执行。它的语法格式如下。WAITFOR{DELAY'time'|TIME'time'}【例】等待30秒后执行select语句WAITFORDELAY'00:00:30'SELECT*fromemployee7、PRINTPRINT字符串或者变量或者字符串表达式8、CASE表达式语法:case表达式when表达式1then结果1when表达式2then结果2when表达式3then结果3else其他结果end【例6.15】查询所有的员工姓名、性别、出生年月和所在部门信息。USECompanySalesSELECTname姓名,sex性别,birthDate出生年月,部门名称=CASEdepartmentIDWHEN1THEN'销售部'WHEN2THEN'采购部'WHEN3THEN'人事部'ELSE'其他部门'ENDFROMemployeeGOSQLServer2005数据库应用技术清华大学出版社SQLServer2005数据库应用技术清华大学出版社三、函数在Transact-SQ