SQL语言——SQL高级应用(1)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、局部变量
局部变量是用户自定义的变量,其作用范围仅在声明 它的批处理、存储过程或触发器中,处理结束后,存 储在局部变量中的信息将丢失。 在程序中通常用来储存从表中查询到的数据,或当作 程序执行过程中暂存变量使用。
变量的定义
局部变量的定义可使用DECLARE语句,其语法格式如下 : declare @local_variable data_type [,…] 语法说明: local_variable:用于指定新创建的局部变量的名称, 局部变量名称前必须为:“@”,命名时必须符合标识 符规则,并且不能与全局变量的名称相同,否则会在 应用中出错。 data_type:指定变量的数据类型,可以是SQL Server 支持的所有数据类型,也可以是用户自定义的数据类 型,但不能是text、ntext或image类型。
三、使用标识符
在SQL Server 2000中,一个对象的全称语法格式为: [[[server_name.][database_name].][owner_name].]ob ject_name 语法说明: server_name:对象所在的服务器名称。 database_name:对象所在的数据库名称。 owner_name:表示对象的所有者,若当前用户不是 所有者,则当前用户使用过程时必须指定所有者名 称。 object_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’就是一个合法的字符型常量。
注释举例
use bank --打开bank数据库 go /*多行注释的第一行:查询loan表中的 多行注释中的第二行:全体数据*/ select * from loan
1.3
变量
全局变量(Global Variable) 局部变量(Local Variable)
一、全局变量
全局变量是 SQL Server 系统内部使用的变量,其作用 范围并不局限于某一程序,而是任何程序均可随时调 用。全局变量通常存储一些 SQL Server 的配置设定值 和效能统计数据。用户可在程序中用全局变量来测试 系统的设定值或Transact-SQL命令执行后的状态值。 注意:全局变量不是由用户的程序定义的,它们是在 服务器级定应义的。只能使用预先说明及定义的全局 变量。引用全局变量时,必须以“@@”开头。
返回运行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' 运行结果为:
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
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个字节。
二、浮点数据类型
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数据类型完全相同。
SQL Server常用的全局变量
变量 @@CURSOR_ROWS @@ERROR @@FETCH_STATUS @@ROWCOUNT 含 义 返回游标打开后,游标中的行数 返回上一条T-SQL语句产生的错误编号 返回FETCH语句的状态 返回上一条语句影响的行数
@@SERVERNAME
@@SERVICENAME @@TRANCOUNT @@SPID @@CONNECTIONS
1.1
标识符
在SQL Server中,每一个对象都由一个标识符来唯一标 识。 对象标识符在定义对象时创建,包含的字符数必须在 1~128之间,随后就可通过标识符引用相应对象。 标识符可分为常规标识符和分隔标识符。
一、常规标识符
常规标识符的第一个字符必须是下列字符之一: 字母、下划线(_)、at符号(@)或者数字符号(#); 后续字符可以是: 所有的字母、十进制数字、@符号、美元符号($)、数字符 号或下划线。 注意: 1、不能是T-SQL保留字 2、不允许嵌入空格或其它特殊字符
SQL高级应用
本章首先介绍Transact-SQL程序设计基础:标识符、 数据类型、各类运算符、变量、批处理、流程控制语句、 函数等,然后介绍存储过程、游标的使用。
SQL高级应用
1 T-SQL程序设计基础 2 存储过程 3 游标
1 T-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
例2
一个用户名为sdfi的用户登录到myserver服务 器上,在bank数据库中创建了一个loan表,则 loan表的全称为: Myserver.bank.sdfi.loan
Fra Baidu bibliotek
1.2
注释
在SQL Server中,有两种类型的注释字符: 单行注释 单行注释是使用两个连在一起的减号“--”作为注释; 注释语句写在注释符的后面,以最近的回车符作为注释的 结束。 多行注释 多行注释是使用“/* */”作为注释符;“/*”用于注 释文字的开头,“*/”用于注释文字的结尾,中间部分加 上注释性文字说明。
2009-10-01 13:00:00.000 2009-10-01 13:00:00 2009-10-01 13:00:00.000 2009-10-01 13:00:00 1900-01-01 15:30:29.000 1900-01-01 15:30:29 2009-10-01 00:00:00.000 2009-10-01 00:00:00
五、逻辑型
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个字 节。 日期/时间常量使用特定格式的字符日期表示,用单引 号括起来。
二、分隔标识符
如果标识符是保留字或者包含空格,则需要使用分隔标 识符进行处理。 分隔标识符包含在双引号(")或方括号([])中。 例4.1 创建一个名为:my table的表,表中有属性 smallint类型的名为order的属性。 create table [my table]([order] smallint) 或 create table "my table"("order" smallint) 示例说明: 表名my table中出现了空格,属性名order是T-SQL的保 留字,所以必须使用分隔符双引号(")或方括号([] )进行分隔。
局部变量的赋值
当局部变量定义好后,其初始值为NULL,可使用 SELECT或SET命令为局部变量重新赋值,其语法格式 如下: select @ local_variable =expression[,…] 或 set @ local_variable =expression 语法说明: local_variable:要赋值的局部变量的名称。 Expression:为变量所赋的值,可以是任何有效的 SQL Server表达式。 使用SELECT赋值时,可同时为多个局部变量赋值。
例5(2):
declare @age int select @age=year(GETDATE()) - 1980 select * from teacher where age > @age ------------------------------------------------------------------------declare @xh varchar(10),@xm varchar(20) select @xm='张三' select @xh=sno from student where sname=@xm select * from score where sno=@xh
三、二进制数据类型
binary(n):固定长度为 n 个字节二进制数据,最大长度可 达8KB。n取值为1到8000。 varbinary(n):n 个字节可变长二进制数据,不能超过 8KB。 image :可用于存储字节数超过8KB的可变长度的二进制 数据,如Microsoft Word文档、Microsoft Excel图表以及 图像数据等,其最大长度为231-1个字节。 二进制常量以 0X 开始,后面跟着位模式的十六进制表示。 例如:0X1A表示十六进制的值1A,它等于十进制的数26。