第7章 Transact-SQL简介.doc_第1页
第7章 Transact-SQL简介.doc_第2页
第7章 Transact-SQL简介.doc_第3页
第7章 Transact-SQL简介.doc_第4页
第7章 Transact-SQL简介.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

教案用纸 (A-8)学科数据库基础与应用-SQL Server 2005第 7 章 节授课日期课题: Transact-SQL简介课时12班级授课方式讲授、实训教学目的1、 了解Transact-SQL的特点2、 掌握Transact-SQL语句的构成3、 掌握Transact-SQL各种数据类型4、 掌握SQL Server常用语句的使用5、 掌握Transact-SQL程序设计基础知识重点、难点重点:掌握SQL Server常用语句难点:掌握Transact-SQL程序设计基础知识教具准备教室、机房说明教学内容见附页一、课程引入1、 复习索引的定义2、 复习:建立一个包含学生姓名、课程名称、性别、成绩和班级名称的视图VIEW1二、教学内容7.1 Transact-SQL简介 Transact-SQL是一个非标准的SQL。Transact-SQL包含了大多数ANSI SQL 89和ANSI SQL 92的功能,并且对标准的SQL语言作了一些扩充,对语法也作了一些精简,增强了可编程性和灵活性。7.1.1 Transact-SQL的特点 SQL语言具有如下特点:SQL的语句更能代表一个有意义的工作过程,一个语句可以实现一个完整的功能。SQL的语句对数据操作时不必知道数据的物理位置,服务器会自动将逻辑名转换成与数据相关的物理位置。SQL的语句不必再设计查找或索引的优化策略,SQL服务器已经为查找数据提供了最有效的方法。ANSI SQL语言主要是作为查询语言出现的,它不是一个全能的编程语言。Transact-SQL为了扩展SQL,增加了以下功能:加入了程序控制结构(如IF、WHILE语句等)。加入了局部变量、全局变量等一些功能。 7.1.2 SQL语句的构成 任何一条Transact-SQL语句至少需要包含一个命令,即一个表明动作含义的动词。 (1)SQL中的命令动词是一种对SQL服务器有特定意义的关键字,而其他关键字则只是在SQL语句中引入了其他的限制条件。 (2)用户或者应用程序向服务器提交Transact-SQL语句,均采用批处理的形式。一个批处理是指一次发送给服务器一组语句。每个SQL Server应用程序都设有一种机制,用来告诉服务器执行一个批处理中的所有语句。7.2 SQL Server数据类型7.2.1 数值数据类型7.2.2 字符类型 7.2.3 日期和时间类型 7.2.4 空值 7.2.5 其他类型 7.2 SQL Server数据类型 数据类型是指列、存储过程参数、表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型。在SQL Server 2005中,指定对象的数据类型定义了该对象的4个特征:对象所含的数据类型。所存储值的长度或大小。数字精度。数值小数位数。 SQL Server 2005提供了25种系统数据类型,另外还允许用户自定义数据类型。 7.2.1 数值数据类型 数值数据类型分为整数和小数两类,整数类型包括Bigint、Int、Smallint、Tinyint、Bit,小数类型包括Decimal(p,s)、 Numericp(,s)、Float(n)、Real、Money、Smallmoney。1.整数类型 bigint 用于存储-263到263-1之间的整型数据。存储大小为8个字节。int 用于存储-231到231-1之间的整型数据。存储大小为4个字节。smallint 用于存储-215到215-1之间的整型数据。存储大小为2个字节。tinyint 用于存储0255之间的整型数据,存储大小为1个字节。bit 用于存储整数,但只能存储0、1或NULL(空值),一般用于逻辑判断中。如用户在bit类型的字段中输入0和1之外的任何数据,系统均以1来处理。 7.2.1 数值数据类型2.小数类型 精确数值数据类型decimal(p,s)和numeric(p,s)。decimal和numeric数据类型用于存储带小数且数值确定的数据,SQL Server 2005中可以把它们视为相同的数据类型。这里p表示数值的全部位数,取值范围为138,其中包含小数部分的位数,但不包含小数点在内,s表示小数的位数,整数部分由p-s而得到。近似浮点数字数据类型float(n)和real。float数据类型用于存储从-1.79E+308到1.79E+308之间的浮点数字数据。n(153)为用于存储科学记数法浮点数尾数的位数。real数据类型的取值范围为-3.40E383.40E38,占用4个字节的存储空间。货币数据类型money和smallmoney。货币数据类型表示货币数量,在Microsoft SQL Server 2005中,货币数据的数据类型是money和smallmoney。在这两种类型的字段中输入货币数据时,必须在数值前加上一个货币符号。money数据类型要求8个存储字节,smallmoney数据类型要求4个存储字节。 7.2.2 字符类型 字符数据是由字母、数字和符号组合而成的数据。 字符数据类型包含字符串和二进制两类数据类型。字符串数据类型包括char、varchar和text。char是固定长度字符串,最大为8KB。varchar是变长度字符数据,长度不超过8KB。text可以存储超过8KB的字符数据。二进制数据类型包括binary、varbinary和image。 binary(n)是n位固定长度的二进制数据。n的取值范围是1到8000。存储空间的大小为n+4个字节,如果输入数据超长,则多余部分将被截掉。varbinary(n) 是n位变长度的二进制数据。n的取值范围是1到8000。存储空间的大小为n+4个字节。image数据类型实际上是一种变长的二进制数据类型,用于存储图片数据。7.2.3 日期和时间类型 日期和时间数据类型包括datetime和smalldatetime。前者存储的日期从1753年1月1日到9999年12月31日,每一个值要求8个字节;后者存储从1900年1月1日到2079年12月31日,每一个值要求4个字节。设置日期格式的命令如下:SET DATEFORMAT format|format_var其中,format|format_var是日期的格式。有效参数包括MDY、DMY、YMD、YDM、MYD、DYM。默认格式为MDY。 7.2.4 空值 在创建表时,如果在定义字段列后面,没有说明是否为“空”,则系统默认该字段列允许为空值(NULL)。注意空值既不是0也不是空格,是没有值。 7.2.5 其他类型 1、Unicode数据类型Unicode数据类型包括nchar、nvarchar和ntext。2、特殊数据类型在Microsoft SQL Server 2005中,特殊数据类型有两种:timestamp和uniqueidentifier。 3、用户自定义数据类型 7.3 SQL Server常用语句7.3.1 CREATE语句 7.3.2 ALTER语句 7.3.3 DROP语句 7.3.4 数据的插入与删除 7.3.5 数据的更新 7.3.1 CREATE语句CREATE可以创建数据库中多种对象,如数据库、数据表、视图、查询、规则、默认等。 下面分别介绍:CREATE DATABASE语句CREATE TABLE语句CREATE INDEX语句CREATE VIEW语句CREATE语句创建数据库 SQL利用CREATE DATABASE语句创建数据库,其语法格式如下: CREATE DATABASE database_name ON ,.n , ,.n LOG ON ,.n COLLATE collation_name := PRIMARY ( NAME = logical_file_name , FILENAME = os_file_name , SIZE = size , MAXSIZE = max_size | UNLIMITED , FILEGROWTH = growth_increment ) ,.n := CREATE DATABASE语句中各参数的意义database_name :新数据库的名称。数据库名称在服务器中必须唯一,并且符合标识符的规则。ON:指定显式定义用来存储数据库数据部分的磁盘文件(数据文件)。n:占位符,表示可以为新数据库指定多个文件。LOG ON:指定显式定义用来存储数据库日志的磁盘文件(日志文件)。collation_name:指定数据库的默认排序规则。PRIMARY:指定关联的 列表定义主文件。主文件组包含所有数据库系统表。还包含所有未指派给用户文件组的对象。NAME:为由 定义的文件指定逻辑名称。logical_file_name:用来在创建数据库后执行的 Transact-SQL 语句中引用文件的名称。 CREATE DATABASE语句中各参数的意义(续)FILENAME:为 定义的文件指定操作系统文件名。os_file_name:操作系统创建 定义的物理文件时使用的路径名和文件名。SIZE:指定 中定义的文件的大小。Size: 中定义的文件的初始大小。MAXSIZE:指定 中定义的文件可以增长到的最大大小。max_size: 中定义的文件可以增长到的最大大小。 UNLIMITED:指定 中定义的文件将增长到磁盘变满为止。FILEGROWTH:指定 中定义的文件的增长增量。growth_increment:每次需要新的空间时为文件添加的空间大小。例题CREATE DATABASE SalesON ( NAME = Sales_dat,FILENAME = c:xxxsaledat.mdf,SIZE = 10MB, MAXSIZE = 50MB, FILEGROWTH = 5MB )LOG ON( NAME = Sales_log, FILENAME = c:xxxsalelog.ldf,SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 10% ) CREATE语句创建表SQL利用CREATE TABLE语句创建新表,其语法格式如下:CREATE TABLE database_name. owner .| owner. table_name( | column_name AS computed_column_expression| := CONSTRAINT constraint_name | PRIMARY KEY | UNIQUE ,.n ) (其他参数略)CREATE TABLE语句主要参数说明database_name:是要在其中创建表的数据库名称。Owner:是新表所有者的用户 ID 名。table_name:是新表的名称。表名必须符合标识符规则。数据库中的 owner.table_name 组合必须唯一。column_name:是表中的列名。列名必须符合标识符规则,且在表内唯一。computed_column_expression:是定义计算列值的表达式。 constrain_name:是约束的名称。约束名在数据库内必须是唯一的。 PRIMARY KEY:是通过唯一索引对给定的一列或多列强制实体完整性的约束。对于每个表只能创建一个 PRIMARY KEY 约束。UNIQUE:是通过唯一索引为给定的一列或多列提供实体完整性的约束。一个表可以有多个 UNIQUE 约束。CLUSTERED | NONCLUSTERED:是表示为 PRIMARY KEY 或 UNIQUE 约束创建聚集或非聚集索引的关键字。 例题CREATE TABLE xxx ( Xh int not null primary key, Xm char(8), Xb char(2)CREATE语句为给定表或视图创建索引 SQL提供CREATE INDEX语句为给定表或视图创建索引。只有表或视图的所有者才能为表创建索引。其语法格式如下:CREATE UNIQUE CLUSTERED | NONCLUSTERED INDEX index_nameON table | view ( column ASC | DESC ,.n ) WITH ,.n ON filegroup := PAD_INDEX |FILLFACTOR = fillfactor |IGNORE_DUP_KEY |DROP_EXISTING |STATISTICS_NORECOMPUTE |SORT_IN_TEMPDB 例题CREATE INDEX indexname ON student (age)CREATE语句创建视图 SQL使用CREATE VIEW语句来创建一个视图。其语法格式如下: CREATE VIEW . . view_name ( column ,.n ) WITH ,.n AS select_statement WITH CHECK OPTION := ENCRYPTION | SCHEMABINDING | VIEW_METADATA CREATE VIEW语句参数说明view_name:是视图的名称。视图名称必须符合标识符规则。Column:是视图中的列名。n:是表示可以指定多列的占位符。AS:是视图要执行的操作。select_statement:是定义视图的 SELECT 语句。WITH CHECK OPTION:强制视图上执行的所有数据修改语句都必须符合由 select_statement 设置的准则。WITH ENCRYPTION:表示 SQL Server 加密包含 CREATE VIEW 语句文本的系统表列。SCHEMABINDING:将视图绑定到架构上。VIEW_METADATA:指定为引用视图的查询请求浏览模式的元数据时,SQL Server 将向 DBLIB、ODBC 和 OLE DB API 返回有关视图的元数据信息,而不是返回基表或表。 例题CREATE VIEW student_viewAS SELECT 学号, 姓名, 性别 FROM 学生基本情况表 WHERE 性别=男7.3.2 ALTER语句 ALTER语句可以修改数据库中多种对象,如数据库、数据表、索引、过程、规则、默认等。 (1)修改数据库 ALTER DATABASE语句可以在数据库中添加或删除文件和文件组,更改文件和文件组的属性,更改数据库名称、文件组名称以及数据文件和日志文件的逻辑名称等。 (2)修改表ALTER TABLE语句可以更改、添加、删除列或约束,或者通过启用或禁用约束和触发器来更改表的定义。(3)修改视图 用ALTER VIEW语句可以更改一个先前创建的视图,包括索引视图,但不影响相关的存储过程或触发器,也不更改权限。 例题 修改数据库ALTER DATABASE Test1 ADD FILE ( NAME = Test1dat2, FILENAME = c:xxxt1dat2.ndf, SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB )例题 修改表ALTER TABLE doc_exa ADD column_b VARCHAR(20) NULL 7.3.3 DROP语句 DROP语句可以删除数据库中多种对象,如数据库、数据表、索引、过程、规则、默认等。 (1)删除数据库DROP DATABASE语句可以删除一个或多个数据库。删除数据库将删除数据库所使用的数据库文件和磁盘文件。其语法格式如下: DROP DATABASE database_name ,.n 7.3.3 DROP语句(续)(2)删除表DROP TABLE语句删除表定义及该表的所有数据、索引、触发器、约束和权限规范。任何引用已除去表的视图或存储过程必须通过 DROP VIEW 或 DROP PROCEDURE 语句显式除去。其语法格式如下:DROP TABLE table_name (3)删除索引 DROP INDEX 语句从当前数据库中删除一个或多个索引。DROP INDEX 语句不适用于通过定义 PRIMARY KEY 或 UNIQUE 约束创建的索引。其语法格式如下:DROP INDEX table.index | view.index ,.n (4)删除视图 DROP VIEW语句可以从当前数据库中删除一个或多个视图。其语法格式如下:DROP VIEW view ,.n 例题DROP DATABASE Test1 DROP TABLE doc_exa DROP INDEX table.index DROP VIEW view_name 7.3.4 数据的插入与删除 SQL中数据的插入与删除语句是INSERT和DELETE。 1. INSERT 语句-给表添加一个或多个新行。其语法格式如下:INSERT INTO table_name WITH ( .n ) | view_name | rowset_function_limited ( column_list ) VALUES ( DEFAULT | NULL | expression ,.n ) | derived_table | execute_statement | DEFAULT VALUES WordsFromNotePagePage No.34WordsFromSlideINSERT语句参数说明INTO:一个可选的关键字,可以将它用在 INSERT 和目标表之间。table_name:将要接收数据的表或 table 变量的名称。 WITH ( .n):指定目标表所允许的一个或多个表提示。view_name:视图的名称及可选的别名。 rowset_function_limited:是 OPENQUERY 或 OPENROWSET 函数。 (column_list):要在其中插入数据的一列或多列的列表。VALUES:引入要插入的数据值的列表。DEFAULT:强制 SQL Server 装载为列定义的默认值。Expression:一个常量、变量或表达式。derived_table:任何有效的 SELECT 语句,它返回将装载到表中的数据行。execute_statement:任何有效的 EXECUTE 语句,它使用 SELECT 或 READTEXT 语句返回数据。DEFAULT VALUES:强制新行包含为每个列所定义的默认值。例题INSERT 成绩表 (学号,课程编号,成绩)VALUES(2005071101,K004,86) WordsFromNotePagePage No.36WordsFromSlideDELETE语句 DELETE语句将指定表中符合条件的一行或者多行从表中删除。语法格式如下:DELETE FROM table_name WITH ( .n ) | view_name | rowset_function_limited FROM ,.n WHERE | CURRENT OF GLOBAL cursor_name | cursor_variable_name OPTION ( ,.n ) DELETE参数说明 FROM:是可选的关键字,可用在 DELETE 关键字与目标 table_name、view_name 或 rowset_function_limited 之间。 table_name:是要从其中删除行的表的名称。 WITH ( .n):指定目标表所允许的一个或多个表提示。view_name:是视图名称。rowset_function_limited:OPENQUERY 或 OPENROWSET 函数,视提供程序功能而定。FROM :指定附加的 FROM 子句。WHERE:指定用于限制删除行数的条件。 :指定删除行的限定条件。 CURRENT OF :指定在指定游标的当前位置完成 DELETE。GLOBAL :指定 cursor_name 指的是全局游标。cursor_name :是从其中进行提取的打开游标的名称。cursor_variable_name :是游标变量的名称。OPTION ( ,.n ):是表示使用优化程序提示自定义 SQL Server 的语句处理的关键字。 例题DELETE FROM 成绩表 WHERE 课程编号=K0047.3.5 数据的更新 SQL中使用UPDATE语句可以对目标表中的一行或多行进行修改。 其语法格式如下:UPDATEtable_name WITH ( .n ) | view_name | rowset_function_limited SET column_name = expression | DEFAULT | NULL | variable = expression FROM ,.n WHERE | WHERE CURRENT OF GLOBAL cursor_name | cursor_variable_name OPTION ( ,.n ) 例题UPDATE 成绩表 SET 成绩=成绩+10 WHERE 课程编号=K0037.4 程序设计基础 7.4.1 关于SQL Server标识符 7.4.2 SQL运算符 7.4.3 SQL变量 7.4.4 SQL块语句7.4.5 SQL判断语句 7.4.6 SQL循环语句 7.4.7 程序设计中其它常用语句7.4.8 关于错误处理 7.4.1 关于SQL Server标识符一个SQL标识符是指由程序员定义的SQL Server可识别的有意义的字符串。通常用它们来表示服务器名、数据库名、表名、各类数据库对象名、常量、变量和存储过程名等。在SQL Server中,标识符的命名必须遵守以下规则:(1)标识符的长度范围为130个字符(2)标识符的第一个字符必须为字母、下划线“_”、字符及#。其中以为首的标识符表示一个局部变量,以#字符为首的标识符表示一个临时数据库对象。对表或存储过程,名称前包含一个“#”时表示局部临时对象,而两个“#”字符则表示为全局临时对象。(3)标识符中第一个字符后面可以是字母、数字、#、$和下划线“_”。(4)默认情况下,标识符内不允许含有空格,也不允许将SQL关键字作为用户定义的标识符,但可以使用引号来定义特殊标识符。(5)在中文版中,汉字也可以作为标识符。 7.4.2 SQL运算符 运算符是用来进行列间或者变量之间比较和数学运算的。在SQL Server 2005中,运算符有算术运算符、字符串运算符、比较运算符和逻辑运算符等。 1. 算术运算符 算术运算符包括加(+)、减(-)、乘(*)、除(/)和取模(%) 2. 字符串运算符 字符串运算符指连接符(+)3. 比较运算符 比较运算符包括等于(=)、大于()、小于(=)、小于或等于(=)、不等于(、!=)、不大于(!)、不小于(!)、优先级控制符()等 4. 逻辑运算符 逻辑运算符包括AND、OR和NOT7.4.2 SQL运算符(续)5. 运算符优先级在同一个表达式中,可能会包含多种运算符,这就涉及到运算符的优先级问题。运算符的优先级决定了表达式的计算和比较顺序。在SQL Server 2005中,运算符的优先级从高到低如下所示: 括号:()。 取反运算符:。 乘、除、求模运算符:*、/、%。 加减运算符:+、-。 异或运算符:。 与运算符:&。 或运算符:|。 NOT连接。 AND连接。 OR连接。如果优先级相同,则按照从左到右的顺序进行运算。 7.4.3 SQL变量变量是指在程序运行过程中,其值可以发生变化的量,通常用来保存程序运行过程中的输入数据、计算获得的中间结果和最终结果。 变量的取名规则同标识符,SQL Server对英文字母不区分大小写。 给变量取名时,为了便于阅读和理解程序,一般都用代表变量值或用途的标识符。 当程序运行时,每个变量都要占用连续的若干个字节,所占用的字节数由变量的数据类型确定。 SQL Server语句规定,变量可以是任何一种数据类型。通常把具有某种数据类型的变量就叫做该类型变量。 每个变量在使用前都必须定义,定义的内容之一就是说明其数据类型。 在SQL Server中,变量可分为全局变量和局部变量。 局部变量 在Transact-SQL程序中,局部变量一般出现在批处理、存储过程和触发器中。局部变量,必须在使用前首先用DECLARE语句定义。局部变量仅生存于声明它的批处理、存储过程或触发器中,处理结束后,存储在局部变量中的信息将自动消失。 SQL Server使用SELECT语句或者PRINT语句将变量的值提交给用户。而存储过程则可以返回变量的值。(1)局部变量的定义 DECLARE 变量名 数据类型,(2)局部变量的赋值 SELECT 变量名=表达式, FROMWHERE 全局变量在SQL Server中,全局变量通常被SQL服务器用来跟踪服务器范围和特定会话期间的信息,不能显式地被赋值或声明。 全局变量不能由程序员定义。 全局变量提供了用户当前的会话信息。 全局变量是不可赋值的,并且在所有的程序中都可以直接使用。 在某个时刻,各用户的值是互不相同的。 7.4.4 SQL块语句 使用BEGINEND语句可以将多条SQL语句封装起来,形成一个语句块,使这些语句作为一个整体执行。 BEGINEND语句的语法形式如下:BEGINEND说明BEGINEND用来设定一个程序块,在BEGINEND内的所有程序将被视为一个单元执行。需要说明两点:尽管BEGINEND几乎可以用在程序中的任何地方,但它最常见的用法是和WHILE或IF ELSE组合使用。BEGINEND语句可嵌套使用。 7.4.5 SQL判断语句 通常,计算机按照顺序依次执行程序中的语句。然而,在许多情况下,语句执行的顺序以及是否被执行都依赖于程序运行的中间结果。在这种情况下,必须根据某个变量或表达式的值来做出判断,以决定执行哪些语句或跳过哪些语句不执行。用户可以利用IFELSE语句(条件判断语句)做出判断。根据表达式的真假,选择执行某个语句或者语句块。 7.4.5 SQL判断语句(续)IFELSE语句的语法形式如下: IF 条件表达式ELSE说明:执行过程为:如果条件表达式为真,则执行IF后面的语句或语句块,如果条件为假,则执行ELSE后面的语句或语句块。IF和ELSE后面的语句或语句块必须是单一SQL语句或语句块,不能包含多个SQL语句。【例】从SC数据表中求出学号为S1同学的平均成绩,如果此平均成绩大于或等于60分,则输出“pass”信息。if (select avg(score) from sc where sno=S1 group by sno)=60 begin print pass endElse begin print no pass endCASE 分支语句CASE 命令有两种语句格式:格式1:CASE WHEN THEN WHEN THEN ELSE END该语句的执行过程是:将CASE后面表达式的值与各WHEN子句中的表达式的值进行比较,如果二者相等,则返回THEN后的表达式的值,然后跳出CASE语句,否则返回ELSE子句中的表达式的值。ELSE子句是可选项。当CASE语句中不包含ELSE子句时,如果所有比较失败时,CASE语句将返回NULL。 【例】从学生表S中,选取SNO,SEX,如果SEX为“男”则输出“M”,如果为“女”输出“F”。SELECT SNO, SEX= CASE WHEN sex= 男 THEN M WHEN sex= 女 THEN F ENDFROM S 格式2:CASEWHEN THEN WHEN THEN ELSE END该语句的执行过程是:首先测试WHEN后的表达式的值如果其值为真,则返回THEN后面的表达式的值,否则测试下一个WHEN子句中的表达式的值如果所有WHEN子句后的表达式的值都为假,则返回ELSE后的表达式的值如果在CASE语句中没有ELSE子句,则CASE表达式返回NULL。 注:CASE 命令可以嵌套到SQL 命令中。【例】从SC表中查询所有同学选课成绩情况,凡成绩为空者输出“未考”、小于60分输出“不及格”、60分至70分输出“及格”、70分至90分输出“良好”、大于或等于90分时输出“优秀”。SELECT SNO,CNO, SCORE= CASE WHEN SCORE IS NULL THEN 未考 WHEN SCORE=60 AND SCORE=70 AND SCORE=90 THEN 优秀 ENDFROM SC 练习:设计分支一程序统计成绩表中不及格的学生的人数和及格的学生的人数7.4.6 SQL循环语句 WHILECONTINUEBREAK其语法如下:WHILE BEGINBREAKCONTINUE命令行或程序块ENDWHILE 命令在设定的条件成立时,会重复执行命令行或程序块。CONTINUE 命令可以让程序跳过CONTINUE 命令之后的语句,回到WHILE 循环的第一行,继续进行下一次循环。BREAK 命令则让程序完全跳出循环,结束WHILE 命令的执行。如:以下程序计算1100之间所有能被3整除的数的个数及总和。DECLARE S SMALLINT,I SMALLINT,NUMS SMALLINT SET S=0SET I=1SET NUMS=0WHILE (I=100) BEGIN IF (I%3=0) BEGIN SET S=S+I SET NUMS=NUMS+1 END SET I=I+1 ENDPRINT SPRINT NUMS 7.4.7程序设计中其它常用语句 1、注释符注释符是对程序的说明,Transact-SQL提供了两类注释符:用于单行的注释符-。用于多行的注释符/*/2. GOTO语句 使用GOTO语句可以使SQL程序无条件的转移到指定的标号位置。 7.4.7程序设计中其它常用语句3. CASE语句实现多分支判断4.PRINT语句 将用户定义的消息返回客户端。 5. DECLARE语句 用来声明变量,并用 SET 或 SELECT 语句给变量赋值。 6.RETURN语句 从查询或过程中无条件退出 7. WAITFOR语句 在某一个时刻或某一个时间间隔之后执行SQL语句、语句块、存储过程等。 WAITFOR 语句其语法如下:WAITFOR DELAY | TIME | ERROREXIT | PROCESSEXIT | MIRROREXITWAITFOR 命令用来暂时停止程序执行,直到所设定的等待时间已过或所设定的时间已到才继续往下执行。其中时间必须为DATETIME 类型的数据,但不能包括日期。各关键字含义如下:1DELAY:用来设定等待的时间,最多可达24 小时2TIME:用来设定等待结束的时间点3ERROREXIT:直到处理非正常中断4PROCESSEXIT:直到处理正常或非正常中断5MIRROREXI: 直到镜像设备失败 【例】等待1 小时2 分零3 秒后才执行SELECT 语句。waitfor delay 01:02:03select * from employee GOTO 语句语法如下:GOTO 标识符GOTO 命令用来改变程序执行的流程,使程序跳到标有标识符的指定的程序行再继续往下执行。作为跳转目标的标识符可为数字与字符的组合。但必须以“:”结尾。在GOTO 命令行,标识符后不必跟“:” 如:求12310的总和。DECLARE S SMALLINT,I SMALLINTSET I=1SET S=0BEG:IF (I=10) BEGIN SET S=S+I SET I=I+1 GOTO BEG ENDPRINT S RETURN语法如下:RETURN (整数值)RETURN 命令用于结束当前程序的执行,返回到上一个调用它的程序或其它程序。在括号内可指定一个返回值。如果没有指定返回值,SQL Server 系统会根据程序执行的结果返回一个内定值,如:0 程序执行成功-1 找不到对象-2 数据类型错误-3 死锁-4 违反权限原则-5 语法错误-6 用户造成的一般错误-7 资源错误如磁盘空间不足-8 非致命的内部错误-9 已达到系统的极限-10 -11 致命的内部不一致性错误-12 表或指针破坏-13 数据库破坏-14 硬件错误如果运行过程产生了多个错误,SQL Server 系统将返回绝对值最大的数值;如果此时用户定义了返回值,则以返回用户定义的值。RETURN 语句不能返回NULL值。 USE语法如下:USE databasenameUSE 命令用于改变当前使用的数据库为指定的数据库。用户必须是目标数据库的用户成员或目标数据库建有GUEST 用户账号时,使用USE 命令才能成功切换

温馨提示

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

最新文档

评论

0/150

提交评论