TransactSQL语言.ppt
《TransactSQL语言.ppt》由会员分享,可在线阅读,更多相关《TransactSQL语言.ppt(88页珍藏版)》请在三一办公上搜索。
1、第7章 Transact_SQL语言,学习要点:SQL语句中的命名规则和注释变量的创建与使用 SQL语句中各类运算符、函数以及批处理语句 各类流程控制语句 7.1 SQL语言简介 7.2 常量 7.3 变量 7.4 运算符 7.5 函数 7.6 流控制语句和批处理,7.1 SQL语言简介,SQL语句是位于加利福尼亚的IBM公司的San Jose Research Laboratory在20世纪70年代后期开发出来的,通常我们将它翻译为结构化查询语言(Structured Query Language)Transact-SQL是一种在SQL语言基础上发展起来的扩充语言。它包含两部分,其一是SQL
2、语句的标准语言部分,另一部分是在标准SQL语句上进行的扩充,7.2 常量,7.2.1 常量 定义常量是指在程序运行过程中值不变的量。常量可分为:字符串常量、整型常量、实型常量、日期时间常量、货币常量等。如china、1894、2.0等等,7.2.2 注释 单行注释单行注释是使用两个连在一起的减号“-”作为注释;注释语句写在注释符的后面,以最近的回车符作为注释的结束。例7-1:-该程序中对于某些难理解的语句行进行注释USE sales-打开sales数据库GOSELECT ProductID,Productname,PriceFROM ProductsWHERE Price=50ORDER BY
3、 Price DESC,单行注释,多行注释多行注释是使用“/*/”作为注释符“/*”用于注释文字的开头,“*/”用于注释文字的结尾,中间部分加上注释性文字说明,USE NorthwindGO-First line of a multiple-line comment.-Second line of a multiple-line comment.SELECT*FROM EmployeesGO/*First line of a multiple-line comment.Second line of a multipl-line comment.*/SELECT*FROM Products,两个
4、单行注释,一个多行注释,例7-2:,7.3 变量,变量类型全局变量系统预先定义好的,SQL用户直接可以从系统中进行调用 局部变量 局部变量是用户根据自己的需要定义的,对于局部变量需要注意的是必须先创建后使用,变量用于临时存放数据,变量有名字及其数据类型两个属性。,7.3.1 全局变量使用全局变量时应该注意:由系统在服务器级定义的,不是由哪一个特定的用户在他们的程序定义的只能使用预先SQL系统定义好的全局变量,不能自己创建全局变量全局变量的名称必须以标记符“”开头 用户自己创建的局部变量的名称不能与全局变量名相同全局变量对用户来说是只读的,用户无法对他们进行修改,SQL Sever 2000预设
5、的全局变量及含义如下:CONNECTIONS:返回自上次启动 Microsoft SQL Server 以来连接或试图连接的次数。CPU_BUSY:返回自上次启动 Microsoft SQL Server 以来 CPU 的工作时间,单位为毫秒(基于系统计时器的分辨率)。CURSOR_ROWS:返回连接上最后打开的游标中当前存在的合格行的数量。DATEFIRST:返回 SET DATEFIRST 参数的当前值,SET DATEFIRST 参数指明所规定的每周第一天:1 对应星期一,2 对应星期二,依次类推,用 7 对应星期日。DBTS:为当前数据库返回当前 timestamp 数据类型的值。这一
6、 timestamp 值保证在数据库中是唯一的。ERROR:返回最后执行的 Transact-SQL 语句的错误代码。FETCH_STATUS:返回被 FETCH 语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。,SQL Sever 2000预设的全局变量及含义如下:IDENTITY:返回最后插入的标识列的列值。IDLE:返回 Microsoft SQL Server 自上次启动后闲置的时间,单位为毫秒(基于系统计时器的分辨率)。IO_BUSY:返回 Microsoft SQL Server 自上次启动后用于执行输入和输出操作的时间,单位为毫秒(基于系统计时器的分辨率)。LAN
7、GID:返回当前所使用语言的本地语言标识符(ID)。LANGUAGE:返回当前使用的语言名。LOCK_TIMEOUT:返回当前会话的当前锁超时设置,单位为毫秒。MAX_CONNECTIONS:返回 Microsoft SQL Server 上允许的同时用户连接的最大数。返回的数不必为当前配置的数值。MAX_PRECISION:返回 decimal 和 numeric 数据类型所用的精度级别,即该服务器中当前设置的精度。,SQL Sever 2000预设的全局变量及含义如下:NESTLEVEL:返回当前存储过程执行的嵌套层次(初始值为 0)。OPTIONS:返回当前 SET 选项的信息。PACK
8、_RECEIVED:返回 Microsoft SQL Server 自上次启动后从网络上读取的输入数据包数目。PACK_SENT:返回 Microsoft SQL Server 自上次启动后写到网络上的输出数据包数目。PACKET_ERRORS:返回自 SQL Server 上次启动后,在 Microsoft SQL Server 连接上发生的网络数据包错误数。PROCID:返回当前过程的存储过程标识符(ID)。REMSERVER:当远程 Microsoft SQL Server 数据库服务器在登录记录中出现时,返回它的名称。ROWCOUNT:返回受上一语句影响的行数。SERVERNAME:返
9、回运行 Microsoft SQL Server 的本地服务器名称。SERVICENAME:返回SQL Server当前运行的服务器名,SQL Sever 2000预设的全局变量及含义如下:SPID:返回当前用户进程的服务器进程标识符(ID)。TEXTSIZE:返回 SET 语句 TEXTSIZE 选项的当前值,它指定 SELECT 语句返回的 text 或 image 数据的最大长度,以字节为单位。TIMETICKS:返回一刻度的微秒数。TOTAL_ERRORS:返回 Microsoft SQL Server 自上次启动后,所遇到的磁盘读/写错误数。TOTAL_READ:返回 Microso
10、ft SQL Server 自上次启动后读取磁盘(不是读取高速缓存)的次数。TOTAL_WRITE:返回 Microsoft SQL Server 自上次启动后写入磁盘的次数。TRANCOUNT:返回当前连接的活动事务数。VERSION:返回 Microsoft SQL Server 当前安装的日期、版本和处理器类型。,全局变量在程序中的应用:利用全局变量CONNECTIONS显示到系统的当前日期和时间为止,用户登录SQL SERVER的次数。,SELECT GETDATE()AS Todays Date and Time SELECT CONNECTIONSAS Login Attempts
11、,例7-3,全局变量在程序中的应用:例7_5:下面的示例返回当前用户进程的进程ID、登录名和用户名,SELECT SPID AS ID,SYSTEM_USER AS Login Name,USER AS User Name,7.3.2 局部变量创建局部变量 语法格式如下:DECLARE local_variable data_type nlocal_variable:用于指定新创建的局部变量的名称data_type:表示新创建的局部变量的数据类型及其长度 n:表示在一个DECLARE语句中可以同时定义n个局部变量,局部变量赋值用SET语句、SELECT语句赋值,语法格式如下:SET local
12、_variable=expression local_variable:表示进行赋值的局部变量的名称。expression:是为该变量所赋的值,可以是任何有效的SQL SERVER表达式。,局部变量赋值用SET语句、SELECT语句赋值,语法格式如下:SELECT 变量1=表达式1,变量2=表达式2,变量n=表达式n说明:1.用SELECT命令可以一次给多个变量赋值。2.当表达式为表的列名时,可使用子查询从表中一次返回多个值,变量只保存最后一个返回值;如果子查询没有返回值,则变量被赋空值NULL。3.SELECT 变量1,变量2,变量n语句可以显示变量的值。,SET语句与SELECT语句的区别
13、,SET语句与SELECT语句在为变量赋值的区别在于:一条SET赋值语句只能给一个变量赋值。一条SELECT语句可以给多个变量赋值。约定:当只给一个简单变量赋值时,使用SET赋值语句。当通过查询返回的结果给变量赋值时,使用SELECT赋值语句。,例子,例1:创建局部变量var1,var2,并赋值,然后输出变量的值,DECLARE var1,var2 char(20)SET var1=中国SET var2=var1+是一个伟大的国家SELECT var1,var2,局部变量应用举例,例7-6:创建一个局部变量,并赋一个任意字符串作为局部变量的值。,DECLARE char_var char(20
14、)SET char_var=hello,everyone!SELECT char_var AS char_var变量值为,USE salesDECLARE chazhao varchar(30)SET chazhao=王%SELECT CustomerID,ConnectName,AddressFROM CustomersWHERE ConnectName LIKE chazhao,局部变量应用举例,例7-7:使用 DECLARE语句定义一个名为 chazhao的局部变量,在sales数据库中的Customers表中检索所有姓“王”的客户信息。,【例9-2】从Relationer表中,查询RI
15、D为“20103541”的记录,并为声明两个变量checkid,name赋值。DECLARE name varchar(20),checkid intSELECT checkid=RID,nane=RName FROM Relationer WHERE RID=20103541SELECT checkid,nameGO,7.4 运算符,算术运算符 赋值运算符号 位运算符 字符串串联运算符 比较运算符 逻辑运算符 运算符的优先级,7.4.1 算术运算符 算术运算符可以在任何以数字数据类型分类的表达式间进行各种算术运算算术运算符包括:加(+)、减(-)、乘(*)、除(/)、取模(%),例7-9:求
16、学生年龄,USE XSCJGODECLARE startdate datetimeSET startdate=getdate()SELECT startdate 出生时间 AS 年龄 FROM XS,7.4.2 赋值运算符号 具有唯一一个赋值运算符等号(=)通过运算符可以为变量、表达式、字段重新赋值可以利用赋值运算符为字段分配个标题,例7-10:下面的程序是利用赋值运算符在列标题和为列定义值的表达式之间建立关系即为表中的列设置标题。,USE SALESGOSELECT 客户编号=CustomerID,所在公司=CompanyName,联系人=ConnectName,地址=Address,邮政编
17、码=ZipCode,电话=TelephoneFROM Customers,7.4.3 位运算符,DECLARE var1 int,var2 int,var3 intSET var1=14&20SET var2=20|24SET var3=2410SELECT var1 AS 与运算,var2 AS 或运算,var3 AS 异或运算,7.4.4 字符串串联运算符 字符串串联运算符为(+)允许通过加号在多个字符串间进行字符串串联操作 在串联 varchar、char 或 text 数据类型的数据时,空的字符串被解释为空字符串。如,将 abc+def 存储为 abcdef。如果 sp_dbcmptl
18、evel 兼容性级别设置为 65,那么将空的常量当作一个空格字符,这样就将 abc+def 存储为 abc def。,例7-12:使用串联运算符进行字符串的联接操作。,DECLARE myvar char(20)SET myvar=SQL+SERVER+2000SELECT myvar AS 运算结果为:,7.4.5 比较运算符,USE NorthwindGODECLARE MyProduct intSET MyProduct=20IF(MyProduct 0)SELECT*FROM ProductsWHERE ProductID=MyProductGO,例7-13:利用比较运算符查询Prod
19、ucts表中产品编号为给定值的记录。,运行结果,7.4.6 逻辑运算符,USE salesGODECLARE myvar1 char(6),myvar2 intSELECT myvar1=p0100%,myvar2=1SELECT*FROM ProductsWHERE ProductID like myvar1 AND CategoryID=myvar2,例7-14:使用逻辑运算符查询满足条件的记录。,7.4.7 运算符的优先级,下面将优先级从高到低依次列出:()括号+(正)、-(负)、(按位 NOT)*(乘)、/(除)、%(模)+(加)、(+串联)、-(减)=,=,!=,!,!比较运算符(位
20、异或)、&(位与)、|(位或)NOT AND ALL、ANY、BETWEEN、IN、LIKE、OR、SOME=(赋值),7.5 函数,数学函数 字符串函数 转换函数 日期函数 系统函数 用户自定义函数,7.5.1 数学函数 数学函数通常对输入的数字参数执行某些特定的数学计算,并返回运算结果。SQL系统中经常使用的数学函数如下 ABS(numeric_expression):返回给定数字表达式的绝对值。ASIN、ACOS、ATAN(float_expression):返回反正弦、反余弦、反正切。SIN、COS、TAN、COT(float_expression):返回正弦、余弦、余切。ATAN2(
21、float_expression):返回四个象限的反正切弧度值DEGREES(numeric_expression):将给出的弧度值转化为相应的角度值。,RADIANS(numeric_expression):将给出的角度值转化为相应的弧度值。EXP(float_expression):返回所给的 float 表达式的指数值。LOG(float_expression):返回给定 float 表达式的自然对数。LOG10(float_expression):返回给定 float 表达式的以 10 为底的对数。SQRT(float_expression):返回给定表达式的平方根。CEILING(n
22、umeric_expression):返回大于或等于所给数字表达式的最小整数。FLOOR(numeric_expression):返回小于或等于所给数字表达式的最大整数。ROUND(numeric_expression,length):将给定的数据四舍五入到给定的长度。SIGN(numeric_expression):返回表达式的正(+1)、零(0)或负(-1)号。PI():常量。RAND(seed):返回 0 到1 之间的随机float 值。,7.5.2 字符串函数 ASCII(char_expr):返回字符表达式中第一个字符的 ASCII 代码值。CHAR(integer_expr):返回
23、相同ASCII代码值的字符。CHARINDEX(expr1,expr2,start_location):返回字符串中指定表达式的起始位置。DIFFERENCE(char_expr1,char_expr2):比较两个字符串。LTRIM(char_expr):删字符串前面的空格。LOWER(char_expr):将大写字符数据转换为小写字符数据后返回字符表达式。REPLICATE(char_expr,integer_expr):将字符串表达式重复指定的次数。,RIGHT(char_expr,integer_expr):返回字符串中从右边开始指定个数的字符。REVERSE(char_expr):将字
24、符表达式的求反。RTRIM(char_expr):去掉字符串后边的空格。SOUNDEX(char_expr):返回一个四位数代码,比较两个字符串的相似性。SPACE(integer_expr):返回长度位指定数据的空格串。STUFF(char_expr1,start,length,char_expr2):在char_expr1中,把从位置start开始、长度位length的字符串用char_expr2代替。SUBSTRING(expr,start,length):返回指定表达式中从start位置开始长度位length的部分。STR(float_expr,length,decimal):把数值变
25、成字符串返回,length是总长度,decimal是小数点右边的位数。UPPER(char_expr):返回将小写字符数据转换为大写的字符表达式。,例7-20:USE salesGOSELECT RIGHT(RTRIM(CustomerID),2)AS 客户编号,LEFT(ConnectName,1)AS 客户姓氏,Telephone AS 联 系电话FROM Customers,用函数RIGHT()和LEFT()来查询Customers表中的客户的简单资料。,例7-18:,7.5.3 转换函数利用CAST函数可以将某一个数据类型强制转换为另一种数据类型。CAST(expression AS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TransactSQL 语言
链接地址:https://www.31ppt.com/p-6522115.html