T-SQL程序设计基础

上传人:灯火****19 文档编号:121020060 上传时间:2020-02-14 格式:PPT 页数:171 大小:877.50KB
返回 下载 相关 举报
T-SQL程序设计基础_第1页
第1页 / 共171页
T-SQL程序设计基础_第2页
第2页 / 共171页
T-SQL程序设计基础_第3页
第3页 / 共171页
T-SQL程序设计基础_第4页
第4页 / 共171页
T-SQL程序设计基础_第5页
第5页 / 共171页
点击查看更多>>
资源描述

《T-SQL程序设计基础》由会员分享,可在线阅读,更多相关《T-SQL程序设计基础(171页珍藏版)》请在金锄头文库上搜索。

1、第9章 T SQL程序设计基础 9 1 SQL语言和 T SQL语言 9 2 T SQL的标识符 9 3 T SQL 的数据类型 9 4 T SQL的运算符及表达式 9 6 T SQL中的语句 9 5 T SQL中的变量 9 7 T SQL 函数 SQL与T SQL u SQL 结构化查询语言 数据库能够识别指令 执 行对应的操作并为程序提供数据的指令集 u T SQL是SQL的加强版 u T SQL由数据定义语言 DDL 数据操纵语言 DML 数据控制语言 DCL 组成 u T SQL语句的语法格式规定 1 语句中的字母大小写均可 2 关键字有特殊用途 定义变量名时不得使用关键字 3 语句中

2、的日期型常量和字符型常量必须用单引号 括起来 4 语句中的标点符号必须用英文标点 即半角符号 5 一条语句可以分行写 一行也可以写多条语句 语句末尾不写任何标点 标识符 u 标识符是指用户在SQL Server中定义的服务器 数据库 数据库对象 变量和列等对象名称 u SQL Server标识符分为规则标识符和定界标识 符两类 规则标识符 规则标识符是严格按标识符命名规则定义的标 识符 不需要任何定界符号括起来 定界标识符 定界标识符是使用定界符号 或 将标识符括起 来的标识符 使用了定界标识符 既可以遵守标识 符的命名规则 也可以不遵守标识符命名规则 标识符 u 标识符命名规则 1 标识符必

3、须以字母 下划线 或 开头 2 标识符可以是字母 数字 或 的组合 3 标识符不允许使用保留字 4 标识符不允许使用除 或 之外的其他符号 例如 不能使用空格符号 5 标识符大小写等价 u 特殊标识符 某些以特殊符号打头的标识符在T SQL中具有特殊意义 例如 以 开头的标识符表示临时表 以 开头的标识符表示局部变量 以 开头的标识符表示全局变量 提示 全局变量由系统提供 用户不要定义以 开头的标识符 T SQL数据类型 语语法存储长储长 度适用范围围 整 型 数 据 类类 型 Int4个字节节 231 231 1 内所有正负负整数 Smallint2个字节节 215 215 1 内所有正负负

4、整数 Tinyint1个字节节0 255范围围的所有正整数 bigint8个字节节 263 263 1 T SQL数据类型 语语法 存储长储长 度 适用范围围备备注 浮 点 数 据 类类 型 Real 4个字节节精确到7位小数存储储十 进进制小 数 Float 8个字节节最多可精确到15 位小数 Decimal 实际实际 存 储储空间间 Decimal p s p表 示总总位数 s表示小数 点后的位数 0 s p and or u 位运算 运算符 取反 版本号 参数名 参数类型 缺省值 OUTPUT WITH RECOMPILE ENCRYPTION RECOMPILE ENCRYPTION

5、AS SQL语句组 1 版本号是整数 它用于将有相同名字的存储过程编为不同 的组 2 OUTPUT用于给调用者返回值 3 RECOMPILE为重编译 4 ENCYPTION为加密选项 5 参数前加 为局部变量 加 则说明为全局变量 调用存储过程 MS u 3 过程的调用语句为 EXE UTE 过程名 参数名 参数 版本号 u 2 删除存储过程 DROP PROCEDURE 存储过程名组 例 包含SELECT语句的存储过程 use 学生 课程 go create procedure p1 as select from 选课 where 成绩 70 执行 exec p1 带参数的过程 u CREA

6、TE PROCEDURE 存储过程名 参数名 数 据类型 default output u AS u SQL语句 例9 2 创建带精确匹配参数的存储过程 u CREATE procedure p2 cx int uas uselect from 选课 uwhere 成绩 cx u GO 运行存储过程 Execute p2 70 例 创建带通配符参数的存储过程 use 学生 课程 go CREATE procedure p3 xm varchar 10 李 明 as select from 学生 where 姓名 like xm GO 执行方式 u 1 exec p3 使用缺省值 u 2 exe

7、c p3 张小红 指定参数 u 3 exec p3 李 u 4 declare cc varchar 10 u set cc 明 u execute p3 cc 使用企业管理器创建存储过程 u 利用企业管理器创建存储过程步骤如下 u 1 展开要在其中创建存储过程的数据库 右击 存储 过程 图标弹出快捷菜单 如下图所示 u 2 在快捷菜单中选择 新建存储过程 选项 打开 新建存储过程 对话框 在其文本框中书写存储过程 定义 如下图所示 u 3 定义完存储过程后 单击 确定 按钮保存存储过 程 u 查看存储过程时 可以在前面选择 新建存储过程 图 的右边窗格中选择指定的存储过程 如下图所示 单击

8、右键选择 属性 选项 即可查看指定存储过程的详细 内容 删除存储过程时 可以在该图所示的快捷菜单中 选择 删除 选项 使用命令方式修改和删除存储过程 u 1 修改存储过程 u ALTER PROCEDURE基本语句格式如下 CREATE PROC EDURE 存储过程名 参数1 数据类型 默认值 OUTPUT 参数n 数据类型 默认值 OUTPUT AS SQL语句 u 2 删除存储过程 使用DROP PROCEDURE可以删除存储过程 其 基本语句格式如下 DROP PROCEDURE 存储过程名 9 6 游标的创建与使用 9 6 1 游标的概念 SELECT语句是对数据表的整行 记录 整列

9、 字 段 数据进行操作的 其结果是若干行若干列的 结果 集 也是一张 表格 而不是针对某个特定的数据项进 行操作 在我们实际需要中 尤其在应用程序中 并不能 把 表格 作为一个整体进行处理 通常使用数组表 示同种类型的某一 列 数据 使用结构体或记录类 表示多个不同类型的某一 行 数据 使用结构体或 记录数组可以表示一张表 游标的概念 u 我们如何把数据表中的某一行 某一列的一个数据项 从一个完整的表中提取出来呢 游标的主要用途就是在T SQL脚本程序 存储过程 触发 器中对SELECT语句返回的结果集进行逐行逐字段处理 把一 个完整的数据表按行分开 一行一行的逐一提取记录 并从 这一记录行中

10、逐一提取各项数据 游标与变量类似 必须先定义后使用 u 游标的使用过程 定义声明游标 打开游标 从游标中提取记录并分离数据 关闭游标 释放游标 9 4 2 用DECLARE语句定义游标 1 基于SQL 92标准的DECLARE语句 DECLARE 游标名 INSENSITIVE SCROLL CURSOR FOR SELECT语句 FOR READ ONLY UPDATA OF 字段名 n SELECT指定该游标使用的结果集 不允许使用COMPUTE或INTO子句 READ ONLY表示只读 该游标中的 数据不允许修改 即不允许在UPDATE 或DELETE语句中引用该游标 UPDATA OF

11、 字段名 n 表示在 该游标内可以更新基本表的指定字段 省略字段名列表表示可以更新所有 字段 INSENSITIVE定义游标时自动在系统tempdb数据库 中创建一个临时表存储游标使用的数据 在游标使用 过程中基表数据改变不影响游标的数据 但该游标的 数据不允许修改 省略该项表示游标直接从基表中取 得数据 即游标使用的数据将随基表数据的变化而动 态变化 SCROLL表示该游标可以在 FETCH语句中任意指定数据的提 取方式 省略该项表示该游标仅 支持NEXT顺序提取方式 6 4 2 用DECLARE语句定义游标 u 2 SQL Server 2000 T SQL中的扩展DECLARE语句 DE

12、CLARE 游标名 CURSOR FORWARD ONLY SCROLL STATIC KEYSET DYNAMIC FAST FORWARD READ ONLY OPTIMISTIC TYPE WARNING FOR SELECT语句 FOR UPDATE OF 字段名 n FORWARD ONLY 指定该游标为顺序 结果集 只能用 NEXT向后方式顺序 提取记录 SCROLL指定 该游标为滚动结 果集 可以使用 向前 向后 定 位方式提取记录 STATIC与INSENSITIVE 含义相同 在系统tempdb 数据库中创建临时表存储 游标使用的数据 即游标 不会随基本表内容而变化 同时也无

13、法通过游标来 更新基本表 例 定义一个学生游标 DECLARE 学生游标 cursor FOR SELECT 学号 姓名 性别 年龄 所在系 FROM 学生 WHERE 年龄0 判断游标结果集记录个数大 于0 实例练习 BEGIN PRINT 游标记录数为 convert varchar 2 cursor rows DECLARE xm varchar 8 xb nchar nl int bm nvarchar 5 rs int pjnl int FETCH absolute 2 FROM 学生游标 into xm xb nl bm 提取记录 PRINT 第2条记录 xm xb cASt nl

14、 AS char 2 bm FETCH relative 2 FROM 学生游标 into xm xb nl bm PRINT 后移2条记录 xm xb cASt nl AS char 2 bm SET rs 0 SET pjnl 0 PRINT 全部记录为 FETCH first FROM 学生游标 into xm xb nl bm 先提取第一条记录 WHILE FETCH STATUS 0 BEGIN PRINT cASt rs 1 AS char 2 xm xb cASt nl AS char 2 bm FETCH next FROM 学生游标 into xm xb nl bm SET

15、rs rs 1 SET pjnl pjnl nl END PRINT 实际统计记录数为 cASt rs AS char 2 平均年龄为 cASt pjnl rs AS char 6 END 实例练习 END ELSE PRINT 游标打开失败 CLOSE 学生游标 关闭游标 DEALLOCATE 学生游标 删除游标 USE 学生 课程 DECLARE 学生游标 cursor keySET 定义游标 FOR SELECT 姓名 性别 年龄 所在系 FROM 学生 OPEN 学生游标 打开游标 IF error 0 判断游标打开成功 BEGIN IF cursor rows 0 判断游标结果集记录

16、个数大于0 BEGIN PRINT 游标记录数为 convert varchar 2 cursor rows DECLARE xm varchar 8 xb nchar nl int bm nvarchar 5 rs int pjnl int FETCH absolute 2 FROM 学生游标 into xm xb nl bm 提取记录 PRINT 第2条记录 xm xb cASt nl AS char 2 bm FETCH relative 2 FROM 学生游标 into xm xb nl bm PRINT 后移2条记录 xm xb cASt nl AS char 2 bm SET rs 0 SET pjnl 0 PRINT 全部记录为 FETCH first FROM 学生游标 into xm xb nl bm 先提取第一条记录 WHILE FETCH STATUS 0 BEGIN PRINT cASt rs 1 AS char 2 xm xb cASt nl AS char 2 bm FETCH next FROM 学生游标 into xm xb nl bm SET rs r

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

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