《sql语言补充》ppt课件

上传人:tia****nde 文档编号:69568242 上传时间:2019-01-14 格式:PPT 页数:68 大小:778.82KB
返回 下载 相关 举报
《sql语言补充》ppt课件_第1页
第1页 / 共68页
《sql语言补充》ppt课件_第2页
第2页 / 共68页
《sql语言补充》ppt课件_第3页
第3页 / 共68页
《sql语言补充》ppt课件_第4页
第4页 / 共68页
《sql语言补充》ppt课件_第5页
第5页 / 共68页
点击查看更多>>
资源描述

《《sql语言补充》ppt课件》由会员分享,可在线阅读,更多相关《《sql语言补充》ppt课件(68页珍藏版)》请在金锄头文库上搜索。

1、数据库设计与应用,浙江工业大学软件学院,T-SQL语言,T-SQL其它语言元素,注释 变量 运算符 函数 流程控制语句,1. 注释,T-SQL 提供两种类型的注释字符: 一种是ANSI标准的注释符“-”,用于单行注释; 另一种是与C语言相同的程序注释符号,即“/* */”,用于注释多行文字。,注释是程序代码中不执行的文本字符串。,2. 变量,1. 变量 变量名必须是一个合法的标识符。 1)标识符 (1) 常规标识符 不允许使用T-SQL的保留字,且不允许嵌入空格或其他特殊字符。 (2) 分隔标识符 包含在双引号 (“) 或者方括号 ( ) 内的常规标识符或不符合常规标识符规则的标识符。若标识符

2、中有空格,必须使用双引号 或方括号 。,(2)变量的分类,Transact-SQL语言包括两种形式的变量: 用户自己定义的局部变量; 系统提供的全局变量。,1. 局部变量,局部变量是一个能够拥有特定数据类型的对象,它的作用范围仅限在程序内部。 局部变量必须先定义才能被引用。使用DECLARE命令定义局部变量,引用局部变量时必须在其名称前加上标志“” 。 局部变量用于保存单个数据值,供控制流语句测试以及保存由存储过程返回的数据值等。例如,保存运算的中间结果,作为循环变量等。,1) 局部变量的定义 在批处理或过程中用 DECLARE 语句声明局部变量。语法格式: DECLARE local_var

3、iable data_type ,.n,2. 局部变量的使用, local_variable 指定局部变量的名称; datatype设置局部变量的数据类型及大小。 局部变量可以为除text,ntext,image类型以外的任何数据类型。 所有局部变量在声明后均初始化为NULL,可以使用SELECT或SET设定相应的值。,2) 局部变量赋值(SET或SELECT语句),将DECLARE语句创建的局部变量设置为给定表达式的值。 SET语句语法格式: SET local_variableexpression,【例1】创建局部变量var1、var2,并赋值,然后输出变量的值。 DECLARE var1

4、,var2 char(20) SET var1中国 /*一个SET语句只能给一个变量赋值*/ SET var2var1+是一个伟大的国家 SELECT var1,var2 /*输出变量的值*/ Go,【例3】使用查询给变量赋值。 USE XSCJ DECLARE student char(8) SET student=(SELECT 姓名 FROM XS) GO /*该语句若XS表中只有一条记录,可正常执行,否则将出错。*/,【例2】创建一个名为sex的局部变量,并在 SELECT 语句中使用该局部变量查找表XS中所有女同学的学号、姓名。 USE XSCJ DECLARE sex bit SE

5、T sex=0 SELECT 学号,姓名 FROM XS WHERE 性别=sex GO,SELECT赋值语句的语法格式: SELECT local_variable=expression ,n 说明如下: 1)SELECT语句通常用于将单个值返回到变量中,若有多个值时,将返回的最后一个值赋给变量; 2)若无返回行,则变量将保留当前值; 3)若expression不返回值,则变量设为NULL; 4)一个SELECT语句可以初始化多个局部变量。,SELECT语句也可用于局部变量的查看,格式如下:SELECT local_variable PRINT local_variable 也可用于局部变量

6、的查看,【例4】在 XS 表中不存在符合要求的结果,因此对该表的查询不返回结果,变量var1将保留原值。 USE XSCJ DECLARE var1 nvarchar(30) SELECT var1 = 刘丰 SELECT var1 = 姓名 /*将姓名列的值赋给变量*/ FROM XS WHERE 学号 = 64122312111 SELECT var1 AS NAME /* var1 为刘丰*/,3)局部游标变量的定义与赋值 (1) 局部游标变量的定义 语法格式: DECLARE cursor_variable_name CURSOR ,.n CURSOR表示该变量为游标变量。,(2) 游

7、标变量的使用步骤 定义游标变量给游标变量赋值打开游标利用游标读取行(记录)使用结束后关闭游标删除游标的引用。,(3) 局部游标变量的赋值:利用SET语句赋值 语法格式: SET cursor_variable= cursor_variable| /*将一个已存在的并且赋值的游标变量的值赋给另一局部游标变量*/ cursor_name| /*将一个已申明的游标名赋给指定的局部游标变量*/ CURSOR 子句 /*申明一个游标,同时将其赋给指定的局部游标变量*/ ,【例5】使用游标变量 USE XSCJ DECLARE CursorVar CURSOR /*定义游标变量*/ SET CursorV

8、ar = CURSOR SCROLL DYNAMIC /*给游标变量赋值*/ FOR SELECT 学号, 姓名 FROM XS WHERE 姓名 LIKE 王% OPEN CursorVar /*打开游标*/ FETCH NEXT FROM CursorVar /*游标指向第一行记录*/ WHILE FETCH_STATUS = 0 /* FETCH_STATUS 保存FETCH语句的执行状态,其值为0表示上一条执行成功;为-1表示FETCH 语句失败或此行不在结果集中;为-2表示被提取的行不存在(已删除)。*/ BEGIN FETCH NEXT FROM CursorVar /*通过游标读

9、行记录*/ END CLOSE CursorVar /*关闭游标*/ DEALLOCATE CursorVar /*删除对游标的引用*/,3.全局变量的使用,全局变量由系统提供且预先声明,是SQL Server系统内部使用的变量,其作用范围并不仅限于某一程序,而是任何程序均可以随时调用。 通常存储SQL Server的配置设定值和统计数据。 用户可以在程序中用全局变量来测试系统的设定值或者是Transact-SQL命令执行后的状态值。,使用全局变量时应该注意以下几点:,全局变量不是由用户的程序定义的,而是在服务器级定义的。 用户只能使用预先定义的全局变量。 引用全局变量时,必须以标记符“”开头

10、。 局部变量的名称不能与全局变量的名称相同,否则会在应用程序中出现不可预测的结果。,SQL Server支持的全局变量主要包括:,CONNECTIONS:返回自最近一次启动SQL Server以来连接或试图连接的次数。 ERROR:返回最后执行SQL语句的错误代码。 ROWCOUNT:返回上一次语句影响的数据行的行数。 SERVERNAME:返回运行SQL Server的本地服务器的名称。 VERSION:返回SQL Server当前安装的日期、版本和处理器类型。 全局变量的查看语句同局部变量:SELECT variable,SQL Server 2000的运算符主要有以下六大类: 算术运算符

11、 位运算符 比较运算符 逻辑运算符 字符串串联运算符 赋值运算符,2 运算符与表达式,1算术运算符,算术运算符有:+(加)、-(减)、*(乘)、/(除)和%(求模)五种运算。+ (加) 和(减) 运算符也可用于对 datetime 及 smalldatetime 值进行算术运算。 【例6】求学生的年龄。 USE XSCJ SET NOCOUNT ON DECLARE startdate datetime SET startdate = getdate() /*当前日期*/ SELECT startdate 出生时间 AS 年龄 FROM XS,位运算符在两个表达式之间执行位操作,这两个表达式的

12、类型可为整型或与整型兼容的数据类型(如:字符型等,但不能为 image 类型)。位运算符如表所示。,2位运算符,比较运算符(又称关系运算符)如表所示,用于测试两个表达式的值是否相同,其运算结果为逻辑值,可以为三种之一:TRUE、FALSE 及 UNKNOWN。,3. 比较运算符,逻辑运算符用于对某个条件进行测试,运算结果为 TRUE 或 FALSE。SQL Server提供的逻辑运算符如表所示。,4. 逻辑运算符,LIKE的使用 语法格式: match_expression NOT LIKE pattern ESCAPE escape_character ,【例7】查询课程名以C或A开头的情况

13、。 USE XSCJ SELECT * FROM KC WHERE 课程名 LIKE AC%,通过运算符“+”实现两个字符串的联接运算。将“+”号两边的字符串串联成一个字符串。 【例8】多个字符串的联接。 USE XSCJ SELECT (学号+ , + SPACE(1) + 姓名) AS 学号及姓名 FROM XS WHERE SUBSTRING(学号, 1, 2) = 19 /*取子串*/,5. 字符串联接运算符,一元运算符有+(正)、-(负)和(按位取反)。 如a的值为12(0000 0000 0000 1100) 则a的值为:1111 1111 1111 0011,6. 一元运算符,7

14、. 赋值运算符,T-SQL 只有一个赋值运算符,即等号(=) 。 赋值运算符可以将数据值指派给特定的对象。如给局部变量赋值的SET和SELECT语句中使用的“=”。 利用赋值运算符可以在列标题和为列定义值的表达式之间建立对应关系。,3 流程控制语句,SQL Server中提供了如表所示的流程控制语句,3.1 IF.ELSE语句,在程序中如果要对给定的条件进行判定,当条件为真或假时分别执行不同的 T-SQL 语句,可用IF.ELSE语句实现。 语法格式: IF Boolean_expression /*条件表达式*/ sql_statement | statement_block /*条件表达式

15、为真时执行*/ ELSE sql_statement | statement_block /*条件表达式为假时执行*/,IFELSE语句中,IF子句是必须的,ELSE子句是可选的,最简单的IF语句没有ELSE子句部分。 SQL Server允许嵌套使用IFELSE语句,而且嵌套层数没有限制。,IF 条件表达式 A /* T-SQL语句或语句块*/ ELSE B /*T-SQL语句或语句块*/ 当条件表达式的值为真时执行A,然后执行IF语句的下一语句;条件表达式的值为假时执行B,然后执行IF语句的下一语句。,【例8】如下程序用于查询总学分40的学生人数。 USE XSCJ DECLARE num int SELECT num= ( SELECT COUNT(姓名) FROM XS WHERE 总学分40) IF num0 SELECT num AS 总学分40的人数,【例9】如果“数据库原理课程”的平均成绩高于75分,则显示“平均成绩高于75分”。 USE XSCJ DECLARE text1 char(20) SET text1=平均成绩高于75. IF ( SELECT AVG(成绩) FROM XS_KC,KC WHERE XS_KC.课程号=K

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号