




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、清华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 2005. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发 第第04章章 transact-sql语言基础语言基础ntransact-sql语言是语言是sql server 2005在在sql语言语言的基础上增加了一些语言要素后的扩展语言,其的基础上增加了一些语言要素后的扩展语言,其语言要素包括注释、变量、运算符、函数和流程语言要素包括注释、变量、运算符、函数和流程控制语句等。控制语句等。n掌握掌握transact-sql语言是进一步学习更多的管理语言是进一步学
2、习更多的管理技术和数据库应用开发技术的关键。技术和数据库应用开发技术的关键。n本章主要介绍本章主要介绍transact-sql语言中的常量、变量、语言中的常量、变量、函数、表达式等语言成份和控制流语句等。函数、表达式等语言成份和控制流语句等。清华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 2005. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发 第第04章章 transact-sql语言基础语言基础清华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 2005
3、. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发 4.1.1 transact-sql概述概述ntransact-sql语言用于处理语言用于处理sql server 2005数据库引擎实例的相关操作,主要包数据库引擎实例的相关操作,主要包括创建和管理数据库对象、插入、检索、括创建和管理数据库对象、插入、检索、修改和删除数据。修改和删除数据。ntransact-sql语言不是一种标准的编程语语言不是一种标准的编程语言,只能够提供言,只能够提供sql server 的数据引擎来的数据引擎来分析和运行。分析和运行。清华大学出版社清华大学出版社清华大学出版社. sql
4、 server 2005. sql server 2005. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发 4.1.1 transact-sql概述概述1transact-sql语言的语法约定语言的语法约定 表表4.1列出了列出了transact-sql 参考的语法格参考的语法格式中使用的约定,并进行了说明。式中使用的约定,并进行了说明。 语法约定语法约定大写字母大写字母斜体斜体粗体粗体下划线下划线|(竖线)(竖线) ,.n.n; := 用途说明用途说明transact-sql 关键字关键字用户提供的用户提供的 transact-sql 语法的参数。语法的参数
5、。 数据库名、表名、列名、索引名、存储过程、实用工具、数据数据库名、表名、列名、索引名、存储过程、实用工具、数据 类型名以及必须按所显示的原样键入的文本。类型名以及必须按所显示的原样键入的文本。指示当语句中省略了包含带下划线的值的子句时应用的默认值。指示当语句中省略了包含带下划线的值的子句时应用的默认值。分隔括号或大括号中的语法项。只能选择其中一项。分隔括号或大括号中的语法项。只能选择其中一项。可选语法项。不要键入方括号。可选语法项。不要键入方括号。必选语法项。不要键入大括号。必选语法项。不要键入大括号。指示前面的项可以重复指示前面的项可以重复 n 次。每一项由逗号分隔。次。每一项由逗号分隔。
6、指示前面的项可以重复指示前面的项可以重复 n 次。每一项由空格分隔。次。每一项由空格分隔。可选的可选的 transact-sql 语句终止符。不要键入方括号。语句终止符。不要键入方括号。 语法块的名称。用于对可在语句中的多个位置使用的过长语法语法块的名称。用于对可在语句中的多个位置使用的过长语法段或语法单元进行分组和标记。可使用的语法块的每个位置由括段或语法单元进行分组和标记。可使用的语法块的每个位置由括在尖括号内的标签指示:在尖括号内的标签指示:。清华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 2005. sql server 2005数
7、据库应用与开发数据库应用与开发数据库应用与开发 4.1.1 transact-sql概述概述2transact-sql语言中对象的引用方法语言中对象的引用方法nsql server 2005的所有对数据库对象名的的所有对数据库对象名的 引用引用可以是由可以是由4部分组成的名称,格式如下:部分组成的名称,格式如下: server_name. database_name. schema_name. | database_name.schema_name. | schema_name. object_namen引用某个特定对象时,不必总是指定服务器、引用某个特定对象时,不必总是指定服务器、数据库和架
8、构供数据库和架构供 sql server 2005 database engine 标识该对象。标识该对象。清华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 2005. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发 4.1.1 transact-sql概述概述3架构的使用和说明架构的使用和说明 nsql server 2005 中的架构是形成单个命名空间的数据中的架构是形成单个命名空间的数据库实体的集合。架构是单个用户所拥有的数据库对象的库实体的集合。架构是单个用户所拥有的数据库对象的集合,这些对象形成单个命
9、名空间。集合,这些对象形成单个命名空间。n数据库对象由架构所拥有,而架构由数据库用户或角色数据库对象由架构所拥有,而架构由数据库用户或角色所拥有。当架构所有者离开单位时,会在删除离开的用所拥有。当架构所有者离开单位时,会在删除离开的用户之前将该架构的所有权移交给新的用户或角色。户之前将该架构的所有权移交给新的用户或角色。n在使用架构的过程中,应该了解以下内容:在使用架构的过程中,应该了解以下内容:(1)利用架构可以简化)利用架构可以简化dbo和开发人员的工作。和开发人员的工作。清华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 2005. sq
10、l server 2005数据库应用与开发数据库应用与开发数据库应用与开发 4.1.1 transact-sql概述概述3架构的使用和说明架构的使用和说明 (2)用户架构分离。架构与数据库用户分离对)用户架构分离。架构与数据库用户分离对dbo和开和开发人员而言有下列好处:发人员而言有下列好处:n多个用户可以通过角色成员身份或多个用户可以通过角色成员身份或 windows 组成员组成员身份拥有一个架构。简化了删除数据库用户的操作。身份拥有一个架构。简化了删除数据库用户的操作。n删除数据库用户不需要重命名该用户架构所包含的对删除数据库用户不需要重命名该用户架构所包含的对象。象。n多个用户可以共享一
11、个默认架构以进行统一名称解析。多个用户可以共享一个默认架构以进行统一名称解析。n开发人员通过共享默认架构可以将共享对象存储在为开发人员通过共享默认架构可以将共享对象存储在为特定应用程序专门创建的架构中,而不是特定应用程序专门创建的架构中,而不是 dbo 架构架构中。中。 n可以用更大的粒度管理架构和架构包含的对象的权限。可以用更大的粒度管理架构和架构包含的对象的权限。清华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 2005. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发 4.1.1 transact-sql
12、概述概述3架构的使用和说明架构的使用和说明 完全限定的对象名称现在包含完全限定的对象名称现在包含4部分:部分:server.database.schema.object -即服务器即服务器.数据库数据库.架构架构.数据库对象数据库对象(3)默认架构。默认架构。sql server 2005 利用默认架构利用默认架构的概念解析未使用其完全限定名称引用的对象的概念解析未使用其完全限定名称引用的对象的名称。如果未定义的名称。如果未定义 default_schema,则,则数据库用户将把数据库用户将把 dbo 作为其默认架构。作为其默认架构。 清华大学出版社清华大学出版社清华大学出版社. sql se
13、rver 2005. sql server 2005. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发 4.1.2 transact-sql语句分类语句分类transact-sql语言中的语句根据用途分为语言中的语句根据用途分为4种类型。种类型。(1)数据定义语言()数据定义语言(ddl)。数据定义语言)。数据定义语言(data definition language)通常是数据库管理系统的一部分,在通常是数据库管理系统的一部分,在sql server 2005中,数据库对象包括表、视图、触发器、存储中,数据库对象包括表、视图、触发器、存储过程、规则、默认、用户
14、自定义的数据类型等。定义语言过程、规则、默认、用户自定义的数据类型等。定义语言的语句有的语句有create,alter,drop等。等。(2)数据操纵语言()数据操纵语言(dml)。数据操作语言)。数据操作语言 (data manipulation language)用于检索和操作数据的用于检索和操作数据的 sql 语句语句的子集。数据操纵语言语句包括的子集。数据操纵语言语句包括select、insert、update、delete等命令。等命令。 清华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 2005. sql server 2005数
15、据库应用与开发数据库应用与开发数据库应用与开发 4.1.2 transact-sql语句分类语句分类(3)数据控制语言。数据控制语言()数据控制语言。数据控制语言(dcl)是用来设置)是用来设置或更改数据库用户或角色权限的语句,包括或更改数据库用户或角色权限的语句,包括grant,deny,revoke等命令。在默认状态下,只有等命令。在默认状态下,只有sysadmin,dbcreator,db_owner或或db_securityadmin等等人员才有权限执行数据控制语言。人员才有权限执行数据控制语言。(4)控制流语句。)控制流语句。transact-sql还为用户提供了控制流还为用户提供了
16、控制流语句,用于控制语句,用于控制sql语句、语句块或者存储过程的执行语句、语句块或者存储过程的执行流程。常用流程控制语句有流程。常用流程控制语句有beginend、ifelse、while、break、goto、waitfor、return等等主要语句。主要语句。清华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 2005. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发 4.2.1 unicode码与码与asc码码(1)asc码。码。ansi标准机构制定了一种编码标准标准机构制定了一种编码标准asc码,要求用
17、码,要求用8个二进制位来表示字母的范围。存个二进制位来表示字母的范围。存在的缺陷是只能表示在的缺陷是只能表示256个不同的字符,不能在一个单个不同的字符,不能在一个单独的独的8位编码体系中指定所有的字符。位编码体系中指定所有的字符。(2) unicode码。码。unicode标准使用标准使用2个字节来表示每个字个字节来表示每个字符。符。sql server 2005将将unicode定义的一组字母、数字定义的一组字母、数字和符号识别为和符号识别为nchar、nvarchar 和和 ntext 数据类型。数据类型。在在unicode标准编码机制下,标准编码机制下,unicode 具有具有65,0
18、00多个可选多个可选的值,的值,unicode 可以包含大多数语言的字符。每个不同可以包含大多数语言的字符。每个不同的字符都用一种唯一的编码进行表示,不同语言的系统的字符都用一种唯一的编码进行表示,不同语言的系统之间传输数据时不需要任何编码转换,这就使得字符数之间传输数据时不需要任何编码转换,这就使得字符数据可以完全可移植了。据可以完全可移植了。清华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 2005. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发 4.2.2标识符标识符根据命名对象的方式,对象标识符可分为
19、常规标识符和分根据命名对象的方式,对象标识符可分为常规标识符和分隔标识符。其字符数都必须在隔标识符。其字符数都必须在 1 到到 100 之间。之间。1常规标识符常规标识符常规标识符是符合成为常规标识符的下列格式规则的对象常规标识符是符合成为常规标识符的下列格式规则的对象名称。常规标识符的字母要符合名称。常规标识符的字母要符合unicode standard 2.0标标准和如下格式规则:准和如下格式规则:n标识符可以以字母开头,也可以符号标识符可以以字母开头,也可以符号(表示局部变表示局部变量量)、#(表示临时变量表示临时变量)或者下划线或者下划线_开头。字母要符合开头。字母要符合unicode
20、 standard 2.0标准。标准。n后续字符可以是字母、数字和下划线(后续字符可以是字母、数字和下划线(_)。)。n标识符不能是标识符不能是transact-sql的保留字。的保留字。n标识符中不允许嵌入空格或特殊字符。标识符中不允许嵌入空格或特殊字符。例如,下面给出的示例都是合法的常规标识符。例如,下面给出的示例都是合法的常规标识符。-声明了一个名为声明了一个名为ex_local的局部变量。的局部变量。declare ex_local nchar(10)-声明了一个名为声明了一个名为ex_table的表变量。的表变量。declare ex_table table(col1,char)-用
21、于创建一个名为用于创建一个名为temptable的临时表变量。的临时表变量。create table #temptable(itemid,int)-定义了一个名为定义了一个名为sp_user1的存储过程标识符。的存储过程标识符。create procedure sp_user1 asbegin end清华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 2005. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发 4.2.2标识符标识符2分隔标识符分隔标识符对于使用分隔标识符,不符合成为常规标识符的格式规则对于使用分
22、隔标识符,不符合成为常规标识符的格式规则的标识符必须始终使用方括号的标识符必须始终使用方括号 “ ”进行分隔。分隔符进行分隔。分隔符仅用于标识符,不能用于关键字。仅用于标识符,不能用于关键字。(1)下列情况下需要使用分隔标识符:)下列情况下需要使用分隔标识符:n当对象的名称或名称中的一部分使用保留关键字时。当对象的名称或名称中的一部分使用保留关键字时。必须先更改对象的标识符,才能使用分隔标识符引用必须先更改对象的标识符,才能使用分隔标识符引用对象。对象。n当对象的名称使用未被列为限定标识符的字符时,允当对象的名称使用未被列为限定标识符的字符时,允许分隔标识符使用当前代码页中的任意字符。许分隔标
23、识符使用当前代码页中的任意字符。清华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 2005. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发 4.2.2标识符标识符2分隔标识符分隔标识符(2)分隔标识符的格式规则:)分隔标识符的格式规则:n分隔标识符的主体可以包含当前代码页中的分隔标识符的主体可以包含当前代码页中的字符(包括分隔符本身)的任意组合。如果字符(包括分隔符本身)的任意组合。如果分隔标识符的主体包含分隔符,则需进行特分隔标识符的主体包含分隔符,则需进行特殊处理:殊处理:n如果标识符的主体只包含左方括号
24、如果标识符的主体只包含左方括号( ),则无,则无需进行额外处理。需进行额外处理。n如果标识符的主体包含一个右方括号,则必如果标识符的主体包含一个右方括号,则必须指定两个右方括号须指定两个右方括号 ( )。例如,下面给出的示例都是合法的分隔标识符。例如,下面给出的示例都是合法的分隔标识符。假设语句中,假设语句中,sales volume、sales cube 和和 select 都都是分隔标识符。是分隔标识符。- 在在 sales volume 和和 sales cube 标识符中插入标识符中插入空格,而空格,而select是一个保留关键字。是一个保留关键字。select measures.sa
25、les volumefrom sales cubewhere product.select-下面的示例中,对象的名称是下面的示例中,对象的名称是 total profit domestic。若要引用此对象,必须使用以下分隔标。若要引用此对象,必须使用以下分隔标识符:识符: total profit domestic请注意,不必更改请注意,不必更改 domestic前面的左方括号来创前面的左方括号来创建分隔标识符。但是,必须将建分隔标识符。但是,必须将domestic 后面的右方后面的右方括号替换为两个右方括号。括号替换为两个右方括号。清华大学出版社清华大学出版社清华大学出版社. sql ser
26、ver 2005. sql server 2005. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发 4.2.3 常量常量常量表示一个特定数据值的符号。常量表示一个特定数据值的符号。(1)字符串常量。)字符串常量。n字符串常量括在单引号内并包含字母数字字符(字符串常量括在单引号内并包含字母数字字符(a-z、a-z 和和 0-9)以及特殊字符(如)以及特殊字符(如!、和和#等)的字符等)的字符序列。序列。n字符串常量遵循当前数据库的默认排序规则,除非使字符串常量遵循当前数据库的默认排序规则,除非使用用 collate 子句为其指定了排序规则。子句为其指定了排序规则
27、。n如果单引号中的字符串包含一个嵌入的引号,则可以如果单引号中的字符串包含一个嵌入的引号,则可以使用两个单引号表示嵌入的单引号。也可以使用双引使用两个单引号表示嵌入的单引号。也可以使用双引号定义字符串常量,则对于嵌入在双引号中的单引号号定义字符串常量,则对于嵌入在双引号中的单引号不必作特别处理。不必作特别处理。n空字符串用中间没有任何字符的两个单引号表示。空字符串用中间没有任何字符的两个单引号表示。以下是字符串的示例:以下是字符串的示例: ca123obrienprocess x is 50%.the level for job_id: %d should be between %d and
28、%d.obrien对于对于unicode 字符串,其前面必须有一个大字符串,其前面必须有一个大写字母写字母n 前缀。例如,前缀。例如,abcd 是字符串常量是字符串常量而而 nabdc 则是则是 unicode 常量。常量。清华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 2005. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发 以下是在以下是在 transact-sql 中使用的分隔符中使用的分隔符类型:类型:n引用的标识符用双引号引用的标识符用双引号 (“) 分隔开:分隔开:select * from “
29、blanks in table name”n括在括号中的标识符用方括号括在括号中的标识符用方括号 ( ) 分隔开:分隔开: select * from blanks in table name n仅当仅当 quoted_identifier 选项设为选项设为 on 时,时,引用的标识符才有效。默认情况下,当用于引用的标识符才有效。默认情况下,当用于 sql server 的的 microsoft ole db 提供程序和提供程序和 sql server odbc 驱动程序连接时,将驱动程序连接时,将 quoted_identifier 设为设为 on。 清华大学出版社清华大学出版社清华大学出版
30、社. sql server 2005. sql server 2005. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发 当当 quoted_identifier 设为设为 on 时,对于时,对于 sql 语句中的双引号语句中的双引号 () 和单引号和单引号 () 的用法,的用法,sql server 遵循遵循 sql-92 规则。例如:规则。例如: n双引号只能用于分隔标识符,不能用于双引号只能用于分隔标识符,不能用于分隔字符串。分隔字符串。 n单引号只用于包含字符串,不能用于分单引号只用于包含字符串,不能用于分隔标识符。隔标识符。 如果字符串包含嵌入的单引号
31、,则应在如果字符串包含嵌入的单引号,则应在该嵌入的单引号前再添加一个单引号。该嵌入的单引号前再添加一个单引号。例如:例如: 清华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 2005. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发 select * from my table where last name = obrien 如果如果 quoted_identifier 设为设为 off,对于单引号和双引号的用法,对于单引号和双引号的用法,sql server 遵循以下规则:遵循以下规则: n引号不能用于分隔
32、标识符,而必须将括引号不能用于分隔标识符,而必须将括号用作分隔符。号用作分隔符。n单引号或双引号可用于包含字符串。单引号或双引号可用于包含字符串。 如果使用双引号,嵌入的单引号将不必如果使用双引号,嵌入的单引号将不必用两个单引号来表示。例如:用两个单引号来表示。例如: 清华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 2005. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发 select * from my table where last name = obrien 无论采用哪种无论采用哪种 quoted_
33、identifier 设设置,都可以使用括号分隔符。置,都可以使用括号分隔符。清华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 2005. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发 4.2.3 常量常量(2)二进制常量)二进制常量 。二进制常量具有前辍二进制常量具有前辍0 x并且是十并且是十六进制数字字符串。这些常量不使用引号括起。六进制数字字符串。这些常量不使用引号括起。下面是二进制字符串的示例:下面是二进制字符串的示例:0 xaa 0 x1ce0 x69048aefbb010e0 x ( 表示空二进制
34、字符表示空二进制字符)(3)bit 常量。常量。bit常量使用数字常量使用数字0或或1表示,并且不表示,并且不括在引号中。如果使用一个大于括在引号中。如果使用一个大于 1 的数字,则该数的数字,则该数字将转换为字将转换为1。清华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 2005. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发 4.2.3 常量常量(4)日期时间常量)日期时间常量。datetime 常量使用特定格式的字常量使用特定格式的字符日期值来表示,并被单引号括起来。符日期值来表示,并被单引号括起来。常
35、用的常用的datetime常量格式的示例如下:常量格式的示例如下: april 15, 201015 april, 201109041504/15/10下面是时间常量的示例:下面是时间常量的示例:16:30:2707:27 pm (5)整型常量。)整型常量。integer 常量以没有用引号括起常量以没有用引号括起来并且不包含小数点的来并且不包含小数点的数字字符序列来表示。数字字符序列来表示。integer 常量不能包含小常量不能包含小数且必须全部为数字。数且必须全部为数字。清华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 2005. sql
36、server 2005数据库应用与开发数据库应用与开发数据库应用与开发 4.2.3 常量常量(6)数值型常量。)数值型常量。decimal 常量由没有用引号括起来并常量由没有用引号括起来并且包含小数点的数字字符串来表示。且包含小数点的数字字符串来表示。 下面是下面是 decimal 常量的示例:常量的示例: 3.14159269.807(7)浮点型常量。)浮点型常量。float 和和 real 常量一般使用科学记数常量一般使用科学记数法来表示。法来表示。 下面是下面是 float 或或 real 值的示例:值的示例:13.76e9 2.77e-3清华大学出版社清华大学出版社清华大学出版社. s
37、ql server 2005. sql server 2005. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发 4.2.3 常量常量(8)货币型常量。)货币型常量。money 常量以前缀为可选的小常量以前缀为可选的小数点和可选的货币符号的数字字符串来表示。数点和可选的货币符号的数字字符串来表示。下面是下面是 money 常量的示例:常量的示例: $20137$5420437数值型常量数值型常量(包括(包括integer 、decimal、 float 、money等类型)若要指示一个数是正数还是负等类型)若要指示一个数是正数还是负数,可以对数值常量应用数,可以
38、对数值常量应用 + 或或 - 一元运算符,一元运算符,成为一个表示有符号数字值的表达式。如果没成为一个表示有符号数字值的表达式。如果没有应用有应用+或或-一元运算符,则数值常量为正数。一元运算符,则数值常量为正数。例如,各数值类型的正负数示例如下:例如,各数值类型的正负数示例如下: +3356 918 -2277 +3.1426 7.3789 -2.71828 +123e-3 -12e5-$45.56 +$423456.99 $423455(9)guid常量。常量。全局唯一标识符(全局唯一标识符(uniqueidentifier)常量是表示常量是表示 guid 的字符串。可以使用字符或二进制字
39、的字符串。可以使用字符或二进制字符串格式指定。符串格式指定。以下是以下是 guid类型示例:类型示例:6f9619ff-8b86-d011-b42d-00c04fc964ff0 xff19966f868b11d0b42d00c04fc964ff清华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 2005. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发 4.2.4 变量变量n两种形式的变量:两种形式的变量:用户自己定义的局部变量和系统提供用户自己定义的局部变量和系统提供的全局变量。的全局变量。n声明变量声明变量:
40、使用:使用declare命令,为变量赋值时则需要命令,为变量赋值时则需要使用使用set和和select命令。命令。set命令一次只能为一个变命令一次只能为一个变量赋值,而量赋值,而select命令可以同时为多个变量赋值。命令可以同时为多个变量赋值。 1局部变量局部变量局部变量是一个能够拥有特定数据类型的对象,它的作用局部变量是一个能够拥有特定数据类型的对象,它的作用范围仅限制在程序内部。局部变量被引用时要在其名称范围仅限制在程序内部。局部变量被引用时要在其名称前加上标志,而且必须先用前加上标志,而且必须先用declare命令定义后才命令定义后才可以使用。可以使用。 定义局部变量的语法形式如下:
41、定义局部变量的语法形式如下:declaer local_variable data_type,n如果想要设定局部变量的值,必须使用如果想要设定局部变量的值,必须使用select命令或者命令或者set命令。其语法形式为:命令。其语法形式为:set local_variable = expression 或者:或者: select local_variable = expression ,.n 例例4.1声明一个声明一个myvar 变量,然后将一变量,然后将一个字符串值放在变量中,再输出个字符串值放在变量中,再输出myvar 变量的值。变量的值。程序代码如下:程序代码如下:declare myva
42、r nchar(20)set myvar = this is a testselect myvar go清华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 2005. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发 4.2.4 变量变量 2. 全局变量全局变量 n全局变量是全局变量是sql server系统内部使用的变量,可以让任系统内部使用的变量,可以让任何程序均可以随时调用。何程序均可以随时调用。n全局变量通常存储一些全局变量通常存储一些sql server的配置设定值和统计的配置设定值和统计数据。用户可以在
43、程序中用全局变量来测试系统的设定数据。用户可以在程序中用全局变量来测试系统的设定值或者是值或者是transact-sql命令执行后的状态值。命令执行后的状态值。n在使用全局变量时应该注意以下几点:在使用全局变量时应该注意以下几点:n全局变量是在服务器级定义的。全局变量是在服务器级定义的。n用户只能使用预先定义的全局变量。用户只能使用预先定义的全局变量。n引用全局变量时,必须以标记符引用全局变量时,必须以标记符“”开头。开头。n局部变量名称不能与全局变量的名称相同,否则会在局部变量名称不能与全局变量的名称相同,否则会在应用程序中出现不可预测的结果。应用程序中出现不可预测的结果。例例4.2显示到当
44、前日期和时间为止试图显示到当前日期和时间为止试图登录登录sql server 2005的次数。的次数。程序代码如下:程序代码如下:select getdate() as 当前的时当前的时期和时间期和时间, connections as 试图登录的试图登录的次数次数清华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 2005. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发 4.2.5注释注释n注释是程序代码中非可执行的文本字符串。使用注释对注释是程序代码中非可执行的文本字符串。使用注释对代码进行说明,不仅能使程序
45、易读易懂,而且有助于日代码进行说明,不仅能使程序易读易懂,而且有助于日后的管理和维护。后的管理和维护。n注释通常用于记录程序名称、作者姓名和主要代码更改注释通常用于记录程序名称、作者姓名和主要代码更改的日期。注释还可以用于描述复杂的计算或者解释编程的日期。注释还可以用于描述复杂的计算或者解释编程的方法。的方法。n在在sql server 2005中,可以使用两种类型的注释方法:中,可以使用两种类型的注释方法:n-注释。该方式用于单行注释。注释。该方式用于单行注释。n/* */注释。注释。“/*”用于注释文字的开头,用于注释文字的开头,“*/”用于用于注释文字的结尾,利用它们可以在程序中标识多行
46、文注释文字的结尾,利用它们可以在程序中标识多行文字为注释。当然,单行注释也可以使用。字为注释。当然,单行注释也可以使用。 例例4.3 为前面的例子添加注释。为前面的例子添加注释。程序代码如下:程序代码如下:declare myvar nchar(20) -定义变量定义变量myvar/* 下面第一行给变量赋值下面第一行给变量赋值 第第2行输出变量值行输出变量值 */set myvar = this is a testselect myvar go 清华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 2005. sql server 2005数据库
47、应用与开发数据库应用与开发数据库应用与开发 运算符是用来执行算术运算、字符串连接、赋值运算符是用来执行算术运算、字符串连接、赋值以及在字段、常量和变量之间进行比较的操作以及在字段、常量和变量之间进行比较的操作符。运算符主要有以下符。运算符主要有以下6大类:大类:n算术运算符算术运算符n赋值运算符赋值运算符n位运算符位运算符n比较运算符比较运算符n逻辑运算符逻辑运算符n字符串串联运算符。字符串串联运算符。清华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 2005. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发
48、4.3.1算术运算符算术运算符算术运算符主要用于实现数学计算功能,包算术运算符主要用于实现数学计算功能,包含的运算符及功能说明如表含的运算符及功能说明如表4.2所示。主要所示。主要包括包括+、 - 、*、 /、 % 。4.3.2 比较运算符比较运算符比较运算符用于比较两个表达式的值是否相比较运算符用于比较两个表达式的值是否相等。等。transact-sql支持的比较运算符有支持的比较运算符有、=、= 、 、=、 、 != 、! 、!、=、=、!=、!、!=60print pass ,very good !elseprint no pass , try again!清华大学出版社清华大学出版社清
49、华大学出版社. sql server 2005. sql server 2005. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发 4.6.2 beginend语句语句nbeginend语句能够将多个语句能够将多个transact-sql语语句组合成一个语句块,并将它们视为一个单元句组合成一个语句块,并将它们视为一个单元处理。在条件语句和循环等控制流程语句中,处理。在条件语句和循环等控制流程语句中,当符合特定条件便要执行两个或者多个语句时,当符合特定条件便要执行两个或者多个语句时,就需要使用就需要使用beginend语句。语句。nbeginend语句的语法形式为
50、:语句的语法形式为:begin sql_statement | statement_block end 例例4.12 用用begin end 语句可使语句可使if 语句语句在计算结果为在计算结果为false时跳过语句块。时跳过语句块。程序代码如下:程序代码如下:declare myvar floatset myvar=5.7if myvar10.8 begin set myvar = 123.456 print 变量变量myvar的值为:的值为: print cast(myvar as varchar(12 ) endelse print cast(myvar as varchar(12 )清
51、华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 2005. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发 4.6.3 while语句语句nwhilecontinuebreak语句用于设置重语句用于设置重复执行复执行 sql 语句或语句块的条件。语句或语句块的条件。continue语句可以使程序跳过语句可以使程序跳过continue语句后面的语句。语句后面的语句。nbreak语句则使程序完全跳出循环。语句则使程序完全跳出循环。nwhile语句的语法形式为:语句的语法形式为: while boolean_expr
52、ession sql_statement | statement_block break sql_statement | statement_block continue 例例4.13 循环控制语句循环控制语句while的使用方法。程序代码如下:use teaching godeclare count as intset count =1while exists(select * from student where point800) beginset count = count+1 break endprint 入学成绩入学成绩800分的有:分的有:+cast(count as char(
53、2)+人人清华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 2005. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发 4.6.4 case语句语句 ncase语句可以计算多个条件式,并将其中一个符合条语句可以计算多个条件式,并将其中一个符合条件的结果表达式返回。件的结果表达式返回。ncase语句按照使用形式的不同,可以分为简单语句按照使用形式的不同,可以分为简单case语语句和搜索句和搜索case语句。语句。n简单简单case语句的语法格式为:语句的语法格式为:case input_expression wh
54、en when_expression then result_expression .n else else_result_expression end 例例4.14 简单简单case语句举例。程序代码如下。程序代码如下。use teachinggoselect tname as 姓名姓名 , department as 院系院系, case prof when 教授教授 then高级高级 when 副教授副教授 then 高级高级 when 讲师讲师 then 中级中级 when 助教助教 then 初级初级 end as 职称类别职称类别from teacherwhere departme
55、nt=计算机学院计算机学院go程序执行结果如下:姓名 院系 职称类别- - -韩晋升 计算机学院 高级刘元朝 计算机学院 高级海封 计算机学院 高级卢明欣 计算机学院 中级(4 行受影响)清华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 2005. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发 4.6.4 case语句语句 搜索搜索case语句的语法格式为:语句的语法格式为:case when boolean_expression then result_expression .n else else_res
56、ult_expression end 例例4.15搜索搜索case语句举例。程序代码如下。use teachinggoselect studentno as 学号学号,courseno as 课程课程, case when usually*0.2+ final*0.8=90 then 优秀优秀 when usually*0.2+ final*0.8=80 then 良好良好 when usually*0.2+ final*0.8=70 then 中等中等 when usually*0.2+ final*0.8=60 then 及格及格 when usually*0.2+ final*0.860
57、 then 不及格不及格 end as 总评成绩总评成绩from score where courseno in (c06108,c08106,c05109 ) go程序执行结果如下:学号 课程 总评成绩- - -0822111208 c05109 良好0822111208 c06108 优秀0824113307 c05109 良好. .0935222201 c05109 优秀0937221508 c05109 良好0937221508 c08106 优秀(11 行受影响)清华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 2005. sql
58、server 2005数据库应用与开发数据库应用与开发数据库应用与开发 4.6.5 其他语句其他语句 1go 语句语句 go 语句是批处理的结束语句。批处理是一起提语句是批处理的结束语句。批处理是一起提交并作为一个组执行的若干交并作为一个组执行的若干sql语句。语句。 2. print语句语句nprint语句的功能是向客户端返回用户定义消语句的功能是向客户端返回用户定义消息。息。nprint语句的语法格式:语句的语法格式:print local_variable | string_expr清华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 20
59、05. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发 4.6.5 其他语句其他语句 3goto语句语句 ngoto语句可以使程序直接跳到指定的标有标语句可以使程序直接跳到指定的标有标识符的位置处继续执行,而位于识符的位置处继续执行,而位于goto语句和语句和标识符之间的程序将不会被执行。标识符可以标识符之间的程序将不会被执行。标识符可以为数字与字符的组合,但必须以为数字与字符的组合,但必须以“: ”结尾。结尾。ngoto语句的语法形式为:语句的语法形式为: label : statement | statement_block goto label例例4.16
60、 利用利用goto语句求出从语句求出从1加到加到7的总和。的总和。程序代码如下:程序代码如下:declare sum int,count int select sum=0,count=0label_1:select count=count+1select sum=sum+countif count=6goto label_1select count as 数值数值,sum as 17累加和累加和清华大学出版社清华大学出版社清华大学出版社. sql server 2005. sql server 2005. sql server 2005数据库应用与开发数据库应用与开发数据库应用与开发 4.6.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农药代加工合同范例
- 出售新华城商铺合同标准文本
- 临时用工合同标准文本 文档
- 2002专业设计合同标准文本
- 2025年国家电网有限公司直流技术中心招聘7人(第一批)笔试参考题库附带答案详解
- 2025国家电投集团中国电力招聘24人笔试参考题库附带答案详解
- 2025四川科瑞软件有限责任公司北京分公司招聘销售代表1人笔试参考题库附带答案详解
- 2024陕西渭河煤化工集团有限责任公司专职消防员招聘10人笔试参考题库附带答案详解
- 2024莆田市城厢粮食购销有限公司第五批拟聘用笔试参考题库附带答案详解
- 2024广西贵港市城市投资发展集团有限公司招聘2人笔试参考题库附带答案详解
- -小学英语人称代词与物主代词讲解课件(共58张课件).课件
- 2024年山东省济南市中考化学试卷( 含答案)
- 医学课件疼痛的护理
- (2020修订版)闽教版信息技术-三年级下册教案(全册)
- 2023年10月中共南充市委组织部(四川)度市级机关(单位)公开遴选(考调)公务员笔试历年典型考题及考点剖析附答案详解
- 乡村振兴民宿产业项目可行性研究报告
- 走近湖湘红色人物智慧树知到答案2024年湖南工商大学
- DL∕ T 1122-2009 架空输电线路外绝缘配置技术导则
- GB/T 44150-2024金属及其他无机覆盖层锌与镍、钴或铁合金电镀层
- 无人机应用技术产教融合整体解决方案
- AQ6111-2023个体防护装备安全管理规范
评论
0/150
提交评论