当前位置:
文档之家› SQL语言——SQL高级应用(1)
SQL语言——SQL高级应用(1)
二、局部变量
局部变量是用户自定义的变量,其作用范围仅在声明 它的批处理、存储过程或触发器中,处理结束后,存 储在局部变量中的信息将丢失。 在程序中通常用来储存从表中查询到的数据,或当作 程序执行过程中暂存变量使用。
变量的定义
局部变量的定义可使用DECLARE语句,其语法格式如下 : declare @local_variable data_type [,…] 语法说明: local_variable:用于指定新创建的局部变量的名称, 局部变量名称前必须为:“@”,命名时必须符合标识 符规则,并且不能与全局变量的名称相同,否则会在 应用中出错。 data_type:指定变量的数据类型,可以是SQL Server 支持的所有数据类型,也可以是用户自定义的数据类 型,但不能是text、ntext或image类型。
二、浮点数据类型
real:可精确到第 7 位小数,其范围为从- 3.40E+38 到 3.40E+38,占用4个字节的存储空间。 float:可精确到第 15 位小数,其范围为从- 1.79E+308 到1.79E+308,占用8个字节的存储空间。 decimal:可以提供小数所需要的实际存储空间,可以 用2到17个字节来存储从-1038-1到1038-1之间的数值。 numeric:与decimal数据类型完全相同。
三、二进制数据类型源自binary(n):固定长度为 n 个字节二进制数据,最大长度可 达8KB。n取值为1到8000。 varbinary(n):n 个字节可变长二进制数据,不能超过 8KB。 image :可用于存储字节数超过8KB的可变长度的二进制 数据,如Microsoft Word文档、Microsoft Excel图表以及 图像数据等,其最大长度为231-1个字节。 二进制常量以 0X 开始,后面跟着位模式的十六进制表示。 例如:0X1A表示十六进制的值1A,它等于十进制的数26。
五、逻辑型
bit:bit数据类型占用1个字节的存储空间,其值为0 或1。如果输入0或1以外的值,将被视为1。
六、日期/时间数据类型
Datetime:存储从1753年1月1日零时起到9999年12月31 日 23 时 59 分 59 秒之间的所有日期和时间,其精确度可 达三百分之一秒,即 3.33毫秒。所占存储空间为 8 个字 节。 Smalldatetime:存储从1900年1月1日到2079年6月6日, 但精度较低,只能精确到分钟。所占存储空间为4个字 节。 日期/时间常量使用特定格式的字符日期表示,用单引 号括起来。
1.1
标识符
在SQL Server中,每一个对象都由一个标识符来唯一标 识。 对象标识符在定义对象时创建,包含的字符数必须在 1~128之间,随后就可通过标识符引用相应对象。 标识符可分为常规标识符和分隔标识符。
一、常规标识符
常规标识符的第一个字符必须是下列字符之一: 字母、下划线(_)、at符号(@)或者数字符号(#); 后续字符可以是: 所有的字母、十进制数字、@符号、美元符号($)、数字符 号或下划线。 注意: 1、不能是T-SQL保留字 2、不允许嵌入空格或其它特殊字符
返回运行SQL Server的本地服务器名称
返回SQL Server当前运行的服务器名称 返回当前连接的有效事务数 返回当前用户进程的服务器进程标识符 返回自SQL Server本次启动以来,所接受的连 接或试图连接的次数
@@VERSION
返回当前SQL Server服务器、OS的版本信息
例4 下面的示例返回当前用户进程的进程ID、 登录名和用户名。 select @@spid as 'ID',system_user as 'LOGIN NAME',user as 'USER NAME' 运行结果为:
四、字符数据类型
char[(n)]:使用固定长度来存储字符,每个字符和符号占一个字节的存 储空间。n表示所有字符所占的存储空间,n的取值为1到8000,默认值 为1 。 varchar[(n)]:与char类型相似,n的取值为1到8000。varchar数据类型具 有变动长度的特性,存储长度为实际数值长度。 nchar[(n)]:与 char 类型相似, n 的取值为 1 到 4000 。 NCHAR 类型采用 UNICODE 标准字符集( CharacterSet)。UNICODE 标准规定每个字符 占用两个字节的存储空间,存储空间是:字符数×2(字节)。 nvarchar[(n)]:与varchar类型相似,n的取值为1到4000。nvarchar数据类 型采用UNICODE标准字符集。 text:专门用于存储数量庞大的变长字符数据。最大长度可达231-1 (2 147 483 647)个字符。 ntext::用于存储可变长度的unicode数据,最多可存储230-1个 unicode数据。 例如:’this is a string’就是一个合法的字符型常量。
SQL Server日期时间格式
输入格式 october 1,2009 1:12:23.122 10/1/2009 1pm 10.1.2009 13:00 15:30:29 10/1/2009 datetime值 Smalldatetime值 2009-10-01 01:12:23.123 2009-10-01 01:12:24
局部变量的赋值
当局部变量定义好后,其初始值为NULL,可使用 SELECT或SET命令为局部变量重新赋值,其语法格式 如下: select @ local_variable =expression[,…] 或 set @ local_variable =expression 语法说明: local_variable:要赋值的局部变量的名称。 Expression:为变量所赋的值,可以是任何有效的 SQL Server表达式。 使用SELECT赋值时,可同时为多个局部变量赋值。
SQL Server常用的全局变量
变量 @@CURSOR_ROWS @@ERROR @@FETCH_STATUS @@ROWCOUNT 含 义 返回游标打开后,游标中的行数 返回上一条T-SQL语句产生的错误编号 返回FETCH语句的状态 返回上一条语句影响的行数
@@SERVERNAME
@@SERVICENAME @@TRANCOUNT @@SPID @@CONNECTIONS
注释举例
use bank --打开bank数据库 go /*多行注释的第一行:查询loan表中的 多行注释中的第二行:全体数据*/ select * from loan
1.3
变量
全局变量(Global Variable) 局部变量(Local Variable)
一、全局变量
全局变量是 SQL Server 系统内部使用的变量,其作用 范围并不局限于某一程序,而是任何程序均可随时调 用。全局变量通常存储一些 SQL Server 的配置设定值 和效能统计数据。用户可在程序中用全局变量来测试 系统的设定值或Transact-SQL命令执行后的状态值。 注意:全局变量不是由用户的程序定义的,它们是在 服务器级定应义的。只能使用预先说明及定义的全局 变量。引用全局变量时,必须以“@@”开头。
例5(1):查找101同学高于70分的选课信息
--定义两个变量 Declare @sno varchar(10),@grade decimal(20,2) --为变量赋值 Select @sno=’101’ Set @grade=70 Use student --打开数据库student /*从score表中,查找101同学高于70分的选课信息*/ Select * from score where sno=@sno and grade>=@grade
1.4 SQL Server 数据类型
整数数据类型 浮点数据类型 二进制数据类型 字符数据类型 逻辑型 日期/时间数据类型 货币数据类型 其他数据类型 用户自定义数据类型
一、整型数据类型
tinyint:可以存储从0到255之间的所有正整数。所占存 储空间大小为1个字节。 smallint:可存储从-215到215-1之间的所有正负整数。 所占存储空间大小为2个字节,其中1位表示整数值的 正负号,其它15位表示整数值的长度和大小。 int:可存储从-231到231-1之间的所有正负整数。所占 存储空间大小为4个字节,其中1位表示整数值的正负 号,其它31位表示整数值的长度和大小。 bigint:可存储从-263到263-1之间的所有正负整数。 所占存储空间大小为8个字节。
例2
一个用户名为sdfi的用户登录到myserver服务 器上,在bank数据库中创建了一个loan表,则 loan表的全称为: Myserver.bank.sdfi.loan
1.2
注释
在SQL Server中,有两种类型的注释字符: 单行注释 单行注释是使用两个连在一起的减号“--”作为注释; 注释语句写在注释符的后面,以最近的回车符作为注释的 结束。 多行注释 多行注释是使用“/* */”作为注释符;“/*”用于注 释文字的开头,“*/”用于注释文字的结尾,中间部分加 上注释性文字说明。
SQL高级应用
本章首先介绍Transact-SQL程序设计基础:标识符、 数据类型、各类运算符、变量、批处理、流程控制语句、 函数等,然后介绍存储过程、游标的使用。
SQL高级应用
1 T-SQL程序设计基础 2 存储过程 3 游标
1 T-SQL程序设计基础