2016年6月19日
12:45
Main 数据库编程
1.介绍Transact-SQL
Transact-SQL是所用应用程序与SQL ServerDBMS进行交互所使用的语言。
Transact-SQL = SQL + 高级编程语言
可以应用Transact-SQL进行数据库编程实现数据处理功能
2.Transact-SQL中的变量
局部变量:
局部变量是用户自定义的变量,它的作用范围仅限于程序内部。
在程序中通常用来储存从表中查询到的数据,或当作程序执行过程中暂存变量使用。
局部变量必须以@开头,而且必须先用DECLARE 命 令说明后才可使用。其说明形式如下:
DECLARE @变量名 变量类型[,@变量名变量类型…]
在Transact-SQL 中不能像在一般的程序语言 中一样使用“变量=变量值”来给变量赋值, 必须使用SELECT 或SET 命令来设定变量的值。 其语法如下:
SELECT @局部变量= 变量值
SET @局部变量= 变量值
全局变量:
全局变量是SQL Server 系统内部使用的变量,其作用范围并不局限于某一程序,而是任何程序均可 随时调用。
全局变量不是由用户的程序定义的,它们是在服务 器级定义的,只能使用预先说明及定义的全局变量。
引用全局变量时必须以“@@”开头。
局部变量的名称不能与全局变量的名称相同,否则 会在应用中出错
注释符:
1.ANSI 标准的注释符“--”用于单行注释。
2.与C 语言相同的程序注释符号,即 “/*……*/”,/* 用于注释文字的开头,*/ 用于注释文字的结尾,可在程序中标识多行 文字为注释
3.流程控制命令
BEGIN…END 其语法如下:
BEGIN <命令行或程序块块> END
BEGIN…END用来设定一个程序块,将在 BEGIN…END 内的所有程序视为一个单元 执行。
BEGIN…END 经常在条件语句(如 IF…ELSE)中使用。
在BEGIN…END 中可嵌套另外的 BEGIN…END 来定义另一程序块。
IF … ELSE 其语法如下:
IF <条件表达式式>
<命令行或程序块块>
[ELSE [条件表达式式]
<命令行或程序块块>]
说明:
<条件表达式>可以是各种表达式的组合,但表达式的值必须是逻辑值“真”或“假”。
ELSE 子句是可选的,最简单的IF 语句没有ELSE 子句部分。
IF…ELSE 用来判断当某一条件成立时执行某段程序,条件不成立时执行另一段程序。
如果不使用程序块,IF 或ELSE 只能执行一条命令。
IF ELSE 可以进行嵌套,在Transact-SQL 中最多可嵌套32 级。
CASE
格式1:
CASE <运算式>
WHEN <运算式>
THEN <运算式>
…
WHEN <运算式>
THEN <运算式>
[ELSE <运算式>]
END
该语句的执行过程是:
将CASE后面表达式的值与各WHEN子句中的表达式的值进行比较,
如果二者相等,则返回THEN后的表达式的值,然后跳出CASE语句,否则返回ELSE子句中的表达式的值。
ELSE子句是可选项。当CASE语句中不包含ELSE子句时,如果所有比较失败时,CASE语句将返回NULL。
格式2:
CASE
WHEN <条件表达式> THEN <运算式>
…
WHEN <条件表达式> THEN <运算式>
[ELSE <运算式>]
END
该语句的执行过程是:
首先测试WHEN后的表达式的值
如果其值为真,则返回THEN后面的表达式的值,否则测试下一个WHEN子句中的表达式的值
如果所有WHEN子句后的表达式的值都为假,则返回ELSE后的表达式的值
如果在CASE语句中没有ELSE子句,则CASE表达式返回NULL。
WHILE…CONTINUE…BREAK
其语法如下:
WHILE <条件表达式>
BEGIN
<命令行或程序块>
[BREAK]
[CONTINUE]
[命令行或程序块]
END
WHILE 命令在设定的条件成立时,会重复执行命令行或程序块。
CONTINUE 命令可以让程序跳过CONTINUE 命令之后的语句,回到WHILE 循环的第一行,继续进行下一次循环。
BREAK 命令则让程序完全跳出循环,结束WHILE 命令的执行。
WHILE 语句也可以嵌套。
WAITFOR
其语法如下:
WAITFOR {DELAY <‘时间’> | TIME <‘时间’>
| ERROREXIT | PROCESSEXIT | MIRROREXIT}
WAITFOR 命令用来暂时停止程序执行,直到所设定的等待时间已过或所设定的时间已到才继续往下执行。
其中‘时间’必须为DATETIME(hh:mm:ss) 类型的数据,但不能包括日期。
各关键字含义如下:
1.DELAY:用来设定等待的时间,最多可达24 小时
2.TIME:用来设定等待结束的时间点
3.ERROREXIT:直到处理非正常中断
4.PROCESSEXIT:直到处理正常或非正常中断
5.MIRROREXI: 直到镜像设备失败
GOTO
语法如下:
GOTO 标识符
GOTO 命令用来改变程序执行的流程,使程序跳到标有标识符的指定的程序行再继续往下执行。
作为跳转目标的标识符可为数字与字符的组合。但必须以“:”结尾。
在GOTO 命令行,标识符后不必跟“:”
4.数据库命令
1.BACKUP
BACKUP 命令用于将数据库内容或其事务处理日志备份到存储介质上(软盘、硬盘、磁带等)。
2.CHECKPOINT
CHECKPOINT 命令用于将当前工作的数据库中被更改过的数据页或日志页从数据缓冲器中强制写入硬盘。
3.DBCC
DBCC(Database Base Consistency Checker 数据库一致性检查程序)命令用于验证数据库完整性、查找错误、分析系统使用情况等。
DBCC 命令后必须加上子命令,系统才知道要做什么。
如:DBCC CHECKALLOC 命令检查目前数据库内所有数据页的分配和使用情况。
5.EXECUTE
EXECUTE 命令用来执行存储过程。
6.KILL
KILL 命令用于终止某一过程的执行。
7.PRINT
PRINT 命令向客户端返回一个用户自定义的信息,即显示一个字符串、局部变量或全局变量。
如果变量值不是字符串的话,必须先用数据类型转换函数CONVERT()将其转换为字符串。
8.RAISERROR
RAISERROR 命令用于在SQL Server 系统返回错误信息时,同时返回用户指定的信息。
5.常用函数
6.游标编程
SQL语句以关系为操作对象和操作结果;
例如由 SELECT 语句返回的行集包括满足该语句的 WHERE 子句中条件的所有行;
应用程序有时需要遍历关系表,对每行数据进行单独处理。SQL语言不能实现这样的操作要求;
应用程序需要一种机制以便每次处理一行或一部分行。游标就是提供这种机制的对SELECT查询结果集的一种扩展 。
游标作用:
游标提供了一种对表中检索出的数据进行操作的灵活手段。
游标从多数据记录的结果集中每次只提取一条记录。
游标总是与一条select语句相关。
游标由结果集和结果集中指向特定记录的游标位置组成。
使用时必须声明一个指向该结果集的游标。
游标特点:
游标允许应用程序对查询语句返回的行结果集中的每一行进行操作,提供基于游标位置而对表中数据进行删除和更新的功能。
游标主要功能包括:
定位在结果集中的指定行;
从结果集的当前位置检索一行或多行;
可对结果集中当前位置的行进行数据修改;
可以显示其它用户对结果集中的数据库数据进行的数据更改;
提供存储过程和触发器中使用的访问结果集的T-SQL语句。
7.存储过程