如何使用T-SQL编程_第1页
如何使用T-SQL编程_第2页
如何使用T-SQL编程_第3页
如何使用T-SQL编程_第4页
如何使用T-SQL编程_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二章第二章 使用使用T-SQL编程编程课程回顾课程回顾u数据库设计的四个步骤数据库设计的四个步骤n收集信息收集信息n标识实体标识实体n标识实体的属性标识实体的属性n标识实体之间的关系标识实体之间的关系uE-RE-R图中矩形表示实体,椭圆表示属性,菱形表示实体之间的关系。图中矩形表示实体,椭圆表示属性,菱形表示实体之间的关系。u实体之间的映射基数有四种:实体之间的映射基数有四种:1 1:1 1、1 1:N N、N N:1 1、M M:N Nu数据库规范化设计使用三大范式理论数据库规范化设计使用三大范式理论n1NF1NF:要求保证列的原子性,列不可再分:要求保证列的原子性,列不可再分n2NF2N

2、F:要求保证所有的列都必须依赖于主键:要求保证所有的列都必须依赖于主键n3NF3NF:要求保证所有的列都必须直接依赖于主键,不能传递函数依赖:要求保证所有的列都必须直接依赖于主键,不能传递函数依赖本章内容本章内容uT-SQLT-SQL中的变量中的变量uT-SQLT-SQL中的运算符中的运算符uT-SQLT-SQL中的批处理语句中的批处理语句uT-SQLT-SQL中的流程控制语句中的流程控制语句本章目标本章目标u掌握变量的作用域和使用掌握变量的作用域和使用u掌握常用的运算符掌握常用的运算符u掌握掌握T-SQLT-SQL流程控制语句流程控制语句1. T-SQL1. T-SQL中的变量中的变量 uT

3、-SQLT-SQL中的变量分为:中的变量分为:n局部变量局部变量局部变量必须以标记局部变量必须以标记 作为前缀,如作为前缀,如numnum局部变量的使用是先声明,再赋值局部变量的使用是先声明,再赋值 n全局变量全局变量全局变量必须以标记全局变量必须以标记作为前缀,如作为前缀,如versionversion全局变量由系统定义和维护,只能读取,不能修改全局变量的值全局变量由系统定义和维护,只能读取,不能修改全局变量的值1.1 1.1 T-SQL变量概述变量概述1.1 T-SQL1.1 T-SQL变量概述变量概述u全局变量全局变量变量名变量名作用作用ERROR返回执行的上一个语句的错误号返回执行的上

4、一个语句的错误号IDENTITY返回最后插入的标识值返回最后插入的标识值MAX_CONNECTIONS返回允许同时进行的最大用户连接数返回允许同时进行的最大用户连接数ROWCOUNT返回受上一语句影响的行数返回受上一语句影响的行数SERVERNAME返回运行返回运行 SQL Server 的本地服务器的名称的本地服务器的名称SERVICENAME返回返回 SQL Server 正在其下运行的注册表项的名称正在其下运行的注册表项的名称TRANCOUNT返回当前连接的活动事务数返回当前连接的活动事务数LOCK_TIMEOUT返回当前会话的当前锁定超时设置(毫秒)返回当前会话的当前锁定超时设置(毫秒

5、)1.2 1.2 定义局部变量并赋值定义局部变量并赋值 u声明局部变量声明局部变量DECLARE varname DataType DECLARE DeptNo NVARCHAR(10) u为局部变量赋值为局部变量赋值SET varname=VALUE 或或 SELECT varname=VALUESET DeptNo=D02 PRINT 错误号码错误号码+CONVERT(NVARCHAR(225),ERROR)1.2 1.2 定义局部变量并赋值定义局部变量并赋值u局部变量的使用局部变量的使用要求查询要求查询“陆逊陆逊”的账户余额信息的账户余额信息 USE BankGOdeclare acco

6、untId varchar(20)-声明变量声明变量select accountId = ACCOUNT_ID from dbo.ACCOUNTwhere ACCOUNT_NAME = 陆逊陆逊select BALANCE from ALL_PURPOSE_CARD whereACCOUNT_ID = accountId GO使用变量和为使用变量和为变量赋值变量赋值1.3 GO1.3 GO语句语句全局变量的作用域全局变量的作用域GO局部变量的作用域局部变量的作用域GO整个整个DBMSGO语句分开的批语句分开的批处理语句块内处理语句块内uGOGO语句的作用语句的作用n等待等待GOGO语句前的代码

7、执行完毕后,再执行语句前的代码执行完毕后,再执行GOGO后面的语句后面的语句n作为批处理语句的结束标记作为批处理语句的结束标记1.4 1.4 输出语句输出语句 u输出语句包括输出语句包括PRINTPRINT和和SELECTSELECTPRINT 局部变量或字符串局部变量或字符串PRINT 错误号码错误号码+CONVERT(NVARCHAR(225),ERROR)SELECT 局部变量或全局变量局部变量或全局变量 AS 别名别名SELECT VERSION AS 版本号为:版本号为:小结小结1 1u局部变量的声明使用什么关键字?局部变量的声明使用什么关键字?u局部变量和全局变量有什么区别?局部变

8、量和全局变量有什么区别?uT-SQL局部变量的方式有哪两种?它们的区别是什么?局部变量的方式有哪两种?它们的区别是什么?2.T-SQL2.T-SQL中中的的运算符运算符 uT-SQLT-SQL中使用的运算符分为中使用的运算符分为7 7种种n算数运算符:加(算数运算符:加(+ +)、减()、减(- -)、乘()、乘(* *)、除()、除(/ /)、模()、模(% %) n逻辑运算符:逻辑运算符:ALLALL、ANYANY、EXISTSEXISTS、ININ、LIKELIKE、ANDAND、NOTNOT、OROR、BETWEEN BETWEEN n赋值运算符:赋值运算符:= = n字符串运算符:字

9、符串运算符:+ + n比较运算符:比较运算符:= =、 、 =、=、 n位运算符:位运算符:| |、& &、 n复合运算符:复合运算符:+=+=、-=-=、/=/=、%=%=、* *= = 2.1 T-SQL运算符概述运算符概述 2.1 T-SQL 2.1 T-SQL运算符概述运算符概述 u算数运算符示例算数运算符示例DECLARE OptNumber int=124PRINT 转换前:转换前:+CONVERT(VARCHAR(3),OptNumber)DECLARE Reverse VARCHAR(3)DECLARE Unit int=OptNumber % 10SET Re

10、verse=CONVERT(VARCHAR(1),Unit)SET OptNumber=OptNumber/10SET Unit=OptNumber % 10SET Reverse=Reverse+CONVERT(VARCHAR(1),Unit)SET OptNumber=OptNumber/10PRINT 转换后:转换后:+Reverse+CONVERT(VARCHAR(1),OptNumber)2.2 2.2 逻辑运算符逻辑运算符uALLALLn用于比较特定值与结果集的所有值之间的逻辑关系,结果为布尔值。一般情用于比较特定值与结果集的所有值之间的逻辑关系,结果为布尔值。一般情况下与比较运算

11、符一起使用。况下与比较运算符一起使用。特定值特定值 =|!=|=|=|! ALL(SELECT语句语句) IF 5000 = ALL(SELECT BALANCE FROM ALL_PURPOSE_CARD)PRINT 所有账户余额都超过所有账户余额都超过5000ELSEPRINT 还有余额未超过还有余额未超过5000的用户的用户 2.2 2.2 逻辑运算符逻辑运算符uANYANYn用于比较特定值与结果集的所有值之间的逻辑关系,结果为布尔值。用于比较特定值与结果集的所有值之间的逻辑关系,结果为布尔值。 一般一般情况下与比较运算符一起使用。情况下与比较运算符一起使用。特定值特定值 =|!=|=|

12、=|! ANY(SELECT语句语句) IF 5000 300BEGININSERT INTOALL_CARD_EXCHANGE(CARD_ID,EXGET,BALANCE,EXTIME,EXADDRESS) VALUES(3,300,BALANCE-300,2011-12-18,ATM取款取款)UPDATE ALL_PURPOSE_CARD SET BALANCE = BALANCE-300 , LAST_USED_DATE = 2011-12-18 WHERE CARD_NO = 6225643823656648END 3.2 IF ELSE3.2 IF ELSE条件语句条件语句 IF (

13、条件条件)语句语句ELSE语句语句实现实现“陆逊陆逊”取款金额为取款金额为1500015000,判断余额是否大于取款金额,如果小于,判断余额是否大于取款金额,如果小于1500015000则显示余额不足。则显示余额不足。 DECLARE BALANCEDECLARE BALANCEFLOATFLOATSELECT BALANCE = BALANCE FROM ALL_PURPOSE_CARD WHERE CARD_NO = SELECT BALANCE = BALANCE FROM ALL_PURPOSE_CARD WHERE CARD_NO = 622588770654901162258877

14、06549011IF BALANCE 15000IF BALANCE 15000BEGINBEGININSERT INTO ALL_CARD_EXCHANGE(CARD_ID,EXGET,BALANCE,EXTIME,EXADDRESS)INSERT INTO ALL_CARD_EXCHANGE(CARD_ID,EXGET,BALANCE,EXTIME,EXADDRESS) VALUES(1, 15000,BALANCE-15000,2011-12-25,ATM VALUES(1, 15000,BALANCE-15000,2011-12-25,ATM取款取款)UPDATE ALL_PURPOS

15、E_CARD SET BALANCE = BALANCE-15000 WHERE CARD_NO = UPDATE ALL_PURPOSE_CARD SET BALANCE = BALANCE-15000 WHERE CARD_NO = 62258877065490116225887706549011ENDENDELSEELSEPRINT PRINT 余额不足余额不足!3.3 WHILE3.3 WHILE循环语句循环语句 uWHILEWHILE语句可以根据条件重复执行一条语句可以根据条件重复执行一条SQLSQL语句或一个语句块。语句或一个语句块。WHILEWHILE的条件的条件是布尔表达式,只

16、要条件为是布尔表达式,只要条件为TRUETRUE,就会重复执行,就会重复执行WHILEWHILE块内的语句。在循环块内的语句。在循环过程中,可以与过程中,可以与CONTINUECONTINUE、BREAKBREAK关键字一起使用,控制语句的执行。关键字一起使用,控制语句的执行。 循环打印循环打印1-10declare nI intset nI = 1while nI 10breakprint nIset nI += 1ENDGO3.4 CASE3.4 CASE多分支语句多分支语句 CASEWHEN 条件1 THEN 结果1WHEN 条件2 THEN 结果2ELSE 其他结果ENDu当满足条件当

17、满足条件1 1时,返回结果时,返回结果1 1;满足条件;满足条件2 2时,返回结果时,返回结果2 2;如果两个条;如果两个条件都不满足,则返回其他结果。件都不满足,则返回其他结果。ELSEELSE是可选的。是可选的。3.4 CASE3.4 CASE多分支语句多分支语句 u根据卡上的金额,评定用户类型,依次判定是否属于“VIP客户”、“重点客户”或“普通用户”。 SELECT CARD_NO,BALANCE,等级等级=CASE WHEN BALANCE 500000 THEN VIP客户客户WHEN BALANCE BETWEEN 100000 AND 500000 THEN 重点客户重点客户E

18、lSE 普通用户普通用户ENDFROM ALL_PURPOSE_CARD 小结小结3 3u如何使用如何使用CASE语句语句?本章总结本章总结u变量的使用是先声明、后赋值。其作用域有全局和局部两种。全局变量变量的使用是先声明、后赋值。其作用域有全局和局部两种。全局变量由系统提供,以由系统提供,以为前缀,局部变量以为前缀,局部变量以 为前缀,并且只在批处理块内有为前缀,并且只在批处理块内有效。效。u变量的赋值有两种方式:变量的赋值有两种方式:SETSET和和SELECTSELECT。SETSET赋值一般用于将已经给定的赋值一般用于将已经给定的值赋给变量;值赋给变量;SELECTSELECT赋值的数据来源于查询。赋值的数据来源于查询。uT-SQLT-S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论