数据库技术基础chp7

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数据技术基础第7章Transact-SQLSQL语言简介SQL语言是面向集合的描述性语言,是非过程性的(即大多数语句都是独立执行的,与上下文无关)。将SQL语言嵌入到某种高级语言中使用,利用高级语言的过程性结构来弥补SQL语言实现复杂应用方面的不足。以这种方式使用的SQL语言称为嵌入式SQL(EmbeddedSQL)。嵌入SQL的高级语言称为主语言或宿主语言。第7章Transact-SQL7.1学习目标7.2Transact-SQL的基本概念7.3游标7.4存储过程7.5触发器7.6小结7.1学习目标学完本章后,读者应具备以下能力:理解常量、变量的定义方法。理解批处理,掌握各种控制语句的使用方法。了解常用的函数。理解游标的概念,基本掌握使用游标查询数据的过程,了解CurrentOf的作用和使用方法。掌握存储过程的概念和用途。理解触发器的概念和用途。7.2Transact-SQL的基本概念7.2.1常量7.2.2变量7.2.3运算符7.2.4常用函数7.2.5流程控制语句7.2.1常量常量是在程序运行中值不发生变化的量常量分为字符串常量、整型常量、实型常量、货币常量和日期时间常量。7.2.1常量(续)字符串常量字符串常量分为ASCII字符串常量和Unicode字符串常量。ASCII字符串常量是用单引号括起来、由ASCII字符构成的字符串;Unicode字符串常量前面有一个N,代表国际语言。每个ASCII字符由一个字节存储。每个Unicode字符需要两个字节的存储空间。[例子]ASCII字符串常量'Haveaniceday!''马翔''2563'如果单引号是字符串的一部分,则需要用两个单引号表示。'Jone''shome'Unicode字符串常量N'Haveaniceday!'N'马翔'7.2.1常量(续)整型常量整型常量由数字0~9以及+/-号组成的有意义的串。如:123、-9811、+89实型常量实型常量有定点和浮点两种表示形式。定点实型常量:由数字0~9、小数点和正负号组成有意义的串。如:1.0、3467.584浮点实型常量:由数字0~9、小数点、正负号和字母E组成有意义的串。如:0.68E+3、1E10、-23E27.2.1常量(续)货币常量货币常量是以$符号为前缀的整型或实型常量,用来表示货币值,精度为4位小数,如$100、-$52、$16.37。日期时间常量日期常量是用单引号括起来的有效的日期和时间组成的字符串。常见的日期格式:'September1,2007'、'2007年9月1号'、'2007-09-01'、'09/01/2007'、'20070901'常见的时间格式:'14:12:00'、'02:12PM'7.2T-SQL的基本概念7.2.1常量7.2.2变量7.2.3运算符7.2.4常用函数7.2.5流程控制语句7.2.2变量变量就是在程序运行中其值会发生变化的量。变量可用于存放输入的值以及保存计算结果等。SQLServer有两类变量。全局变量局部变量7.2.2变量(续)全局变量全局变量是SQLServer管理的变量。用户不能建立全局变量,可以查看全局变量的值,但不能改变全局变量的值。全局变量分为两类:•一类反映SQLServer系统的全局变量。•另一类反映与一个连接有关的全局变量。全局变量的特征是变量名前2个符号必须是@@。7.2.2变量(续)SQLServer提供了大约30多个全局变量,常用的全局变量有:@@SERVERNAME返回运行Microsoft®SQLServer的本地服务器名称。@@SERVICENAME返回MicrosoftSQLServer正在其下运行的注册表键名。若当前实例为默认实例,则@@SERVICENAME返回MSSQLServer;若当前实例是命名实例,则返回实例名。@@VERSION返回MicrosoftSQLServer当前安装的日期、版本和处理器类型。@@CONNECTIONS返回自上次启动MicrosoftSQLServer以来连接或试图连接的次数。@@MAX_CONNECTIONS返回MicrosoftSQLServer所允许的同时连接的最大用户数。返回的数不必为当前配置的数值。@@DATEFIRST返回SETDATEFIRST参数的当前值,SETDATEFIRST参数指明所规定的每周第一天:1对应星期一,2对应星期二,依次类推,用7对应星期日。7.2.2变量(续)@@TEXTSIZE返回SET语句TEXTSIZE选项的当前值,它指定SELECT语句返回的text或image数据的最大长度,以字节为单位。@@REMSERVER当远程MicrosoftSQLServer数据库服务器在登录日志中出现时,返回它的名称。@@MAX_PRECISION返回decimal和numeric数据类型所用的精度级别,即该服务器中当前设置的精度。@@TIMETICKS返回一刻度的微秒数。@@OPTIONS返回当前SET选项的信息。@@CPU_BUSY返回自上次启动MicrosoftSQLServer以来CPU的工作时间,单位为毫秒。7.2.2变量(续)@@IDLE返回MicrosoftSQLServer自上次启动后闲置的时间,单位为毫秒。@@IO_BUSY返回MicrosoftSQLServer自上次启动后用于执行输入和输出操作的时间,单位为毫秒。@@TOTAL_ERRORS返回MicrosoftSQLServer自上次启动后,所遇到的磁盘读/写错误数。@@TOTAL_READ返回MicrosoftSQLServer自上次启动后读取磁盘(不是读取高速缓存)的次数。@@TOTAL_WRITE返回MicrosoftSQLServer自上次启动后写入磁盘的次数。@@PACK_RECEIVED返回MicrosoftSQLServer自上次启动后从网络上读取的输入数据包数目。7.2.2变量(续)@@PACK_SENT返回MicrosoftSQLServer自上次启动后写到网络上的输出数据包数目。@@PACKET_ERRORS返回自SQLServer上次启动后,在MicrosoftSQLServer连接上发生的网络数据包错误数。@@LANGID返回当前所使用语言的本地语言标识符(ID)。@@LANGUAGE返回当前使用的语言名。@@SPID返回当前用户进程的服务器进程标识符(ID)。@@TRANCOUNT返回当前连接的活动事务数。@@ROWCOUNT返回受上一语句影响的行数。7.2.2变量(续)@@PROCID返回当前过程的存储过程标识符(ID)。@@NESTLEVEL返回当前存储过程执行的嵌套层次(初始值为0)。注意:每当一个存储过程调用另一个存储过程时,嵌套层次即进行递增。超过最大层数32时,事务即被终止。@@IDENTITY返回最后插入的标识值。@@DBTS为当前数据库返回当前timestamp数据类型的值。这一timestamp值保证在数据库中是唯一的。@@LOCK_TIMEOUT返回当前会话的当前锁超时设置,单位为毫秒。SETLOCK_TIMEOUT允许应用程序设置语句等待阻塞资源的最长时间。当一条语句已等待超过LOCK_TIMEOUT所设置的时间,则被锁住的语句将自动取消,并给应用程序返回一条错误信息。7.2.2变量(续)@@FETCH_STATUS返回被FETCH语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。0FETCH语句成功。-1表示FETCH语句失败或此行不在结果集中。-2表示被提取的行不存在。@@CURSOR_ROWS返回连接上最后打开的游标中当前存在的合格行的数量。为提高性能,MicrosoftSQLServer可以异步填充大键集和静态游标。可调用@@CURSOR_ROWS,以确定当它被调用时符合游标的行的数目被进行了检索。@@ERROR返回最后执行的Transact-SQL语句的错误代码。当MicrosoftSQLServer完成Transact-SQL语句的执行时,如果语句执行成功,则@@ERROR设置为0。若出现一个错误,则返回一条错误消息。@@ERROR返回此错误信息代码,直到另一条Transact-SQL语句被执行。可以在sysmessages系统表中查看与@@ERROR错误代码相关的文本信息。由于@@ERROR在每一条语句执行后被清除并且重置,应在语句执行后立即检查它,或将其保存到一个局部变量中以备事后查看。7.2.2变量(续)局部变量局部变量是在一定范围内有意义的变量,由用户建立和使用。局部变量的作用范围一般为批处理、存储过程、触发器。局部变量的命名要求第一个字符必须是@,由字母、数字、下画线等字符组成,不能与SQLServer的保留字、全局变量、存储过程、表等其他数据库对象重名。局部变量要用DECLARE语句声明:DECLARE@variabledataType例如:声明一个字符型变量,名字为studentName。DECLARE@studentNamevarchar(12)可以用SET或SELECT语句给局部变量赋值。SET@studentName='马翔'SELECT@studentName='马翔'局部变量可以出现在SQL语句中:SELECT*FROMStudentWHERESname=@studentName7.2T-SQL的基本概念7.2.1常量7.2.2变量7.2.3运算符7.2.4常用函数7.2.5流程控制语句7.2.3运算符算术运算符算术运算符用于对两个数字型的量进行数学运算;算术运算符有:+(加)、-(减)、*(乘)、/(除)、%(取余);+和-还可以作为一元运算符,也可以对datatime和smalldatatime类型的数据进行运算。7.2.2运算符(续)比较运算符比较运算符用于比较两个表达式的值之间的关系。结果为布尔值:TRUE(真)、FALSE(假)、UNKNOWN(未知)。比较运算符有:=(等于)、(小于)、=(小于等于)、(大于)、=(大于等于)、(不等于,另外一个写法是!=)、!(不大于)、!(不小于)。7.2.3运算符(续)运算符含义可操作的数据类型+(加)加法或正号bit,tinyint,smallint,int,bigint,real,float,decimal,numeric,datetime,smalldatetime-(减)减法或负号同上*(乘)乘法同上,但不包括datetime,smalldatetime/(除)除法同*(乘法运算符)%(模)返回余数tinyint,smallint,int,bigint,如:22%5=2表7.1算术元算符7.2.3运算符(续)逻辑运算符逻辑运算符用于对表达式进行测试,返回布尔值。逻辑运算符运算符有:AND、OR、NOT、ALL、ANY、SOME、BETWEEN、EXISTS、IN、LIKE,这些运算符的含义同前面介绍的SQL逻辑运算符。7.2.3运算符(续)运算符含义AND若两个布尔表达式都为TRUE,则为TRUEOR若两个布尔表达式中的一个为TRUE,则为TRUENOT取操作数的相反值ALL若一系列的比较都为TRUE,则为TRUEANY若一系列的比较中任何一个为TRUE,则为TRUEBETWEEN若操作数在某个范围之内,则为TRUEEXISTS若子查询的结果包含了一些元组,则为TRUEIN若操作数等于表达式列表中的一个,则为TRUELIKE若操作数与一种模式相匹配,则为TRUESOME若在一系列比较中,有些为TRUE,则为TRUE表7.2逻辑运算符连接运算符字符串连接运算符将几个字符串串联起来。字符串连接运算符为+。例如:SET@studentName='马'+'翔‘位运算符位运算符可以对两个表达式进行位操作,这两个表达式可以是十进制、二进制整型数据,十进制

1 / 128
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功