当前位置:
文档之家› 第7章 SQL Server 2008高级应用
第7章 SQL Server 2008高级应用
常用算术函数 幂函数 EXP LOG LOG10 SQRT 取近似值函数 CEILING FLOOR ROUND 符号函数 返回表达式的指数值 返回表达式的自然对数值 返回表达式的以10 为底的对数值 返回表达式的平方根 返回大于等于表达式的最小整数 返回小于等于表达式的最大整数 取整数,小数的第一位四舍五入
DECLARE @MyCounter INT; SET @MyCounter = 1;
字符串串联运算符
加号 (+) 是字符串串联运算符,可以用它将字符串串 联起来。其他所有字符串操作都使用字符串函数进 行处理。
例如'good' + ' ' + 'morning'的结果是'good morning'。
ABS SIGN
其他函数
返回表达式的绝对值 测试参数的正负号,返回0、1或-1 返回值为π,即3.1415926535897936 返回0到1之间的随机浮点数
PI RAND
字符串函数
字符转换函数
ASCII(character_expression) 返回字符表达式最左端字符的ASCII 码值 CHAR (integer_expression) CHAR函数用于将ASCII 码转换为字符 LOWER (character _expression) LOWER函数用于把字符串全部转换为小写
CHECKPOINT
用于将当前工作的数据库中被更改过的数据页或日 志页从数据缓冲器中强制写入硬盘。
DBCC
用于验证数据库完整性、查找错误、分析系统使用 情况等。
DECLARE
DECLARE的语法格式如下: DECLARE {{ @local_variable data_type } | { @cursor_variable_name CURSOR } | { table_type_definition } } [, ...n] DECLARE命令用于声明一个或多个局部变量、游标 变量或表变量。 例:
7.1.3 批处理
批处理是包含一个或多个T-SQL语句的组,批处理 的所有语句被整合成一个执行计划。 批处理是使用GO语句将多条SQL语句进行分隔,其 中每两个GO之间的SQL语句就是一个批处理单元。 如果在编译过程中出现语法错误,那么批处理中所 有的语句均无法正常执行。 【例7-3】 执行批处理程序,依次查询学生选课表 SC、学生总数。
【例7-5】 从S数据表中读取学号为S1同学的数据记 录,如果存在,则输出“存在学号为S1的学生”, 否则输出“不存在学号为S1的学生”。
USE Teach /*将教学管理数据库Teach置为当前数 据库*/ GO DECLARE @message VARCHAR(255) /*定义变量message */ IF EXISTS (SELECT * FROM S WHERE SNo='S1') SET @message='存在学号为S1的学生' ELSE SET @message='不存在学号为S1的学生' PRINT @message GO
DECLARE @s SMALLINT,@i SMALLINT SET @i=1 SET @s=0 BEG: IF (@i<=10) BEGIN SET @s=@s+@i SET @i=@i+1 GOTO BEG END PRINT @s
7.1.5 常用命令
BACKUP
用于将数据库内容或其事务处理日志备份到存储介 质上(软盘、硬盘、磁带等)。
存储过程、 触发器等
7.1.1 变量
全局变量
全局变量由系统定义和维护的,只能使用预先说明 及定义的全局变量。 全局变量对用户而言是只读的,用户无法对它们进 行修改或管理 。
局部变量
声明局部变量: DECLARE @变量名 变量类型 [,@变量名 变量类型,„] 为局部变量赋值: SELECT @局部变量=变量值 或 SET @局部变量=变量值 [例7-1] 声明一个长度为8个字符的变量id,并赋值。
CASE <表达式> WHEN <表达式> THEN <表达式> … WHEN <表达式> THEN <表达式> [ELSE <表达式>] END
CASE
【例7-4】 从SC数据表中求出学号为S7同学的平均 成绩,如果此平均成绩大于或等于60分,则输出 “Pass!”信息。
IF (SELECT AVG(Score) FROM SC WHERE SNo='S7')>=60 BEGIN PRINT 'Pass!' END
【例7-6】 从学生表S中,选取Sno和Sex,如果Sex为“男” 则输出“M”,如果为“女”则输出“F”。
SELECT SNo, Sex= CASE Sex WHEN '男' THEN 'M' WHEN '女' THEN 'F' END FROM S 格式2: CASE WHEN <表达式> THEN <表达式> „ WHEN <表达式> THEN <表达式> [ELSE <表达式>] END
按位运算符
按位运算符对两个二进制数据或整数数据进行位操作,但是两 个操作数不能同时为二进制数据,必须有一个为整数数据。
一元运算符
一元运算符只对一个表达式进行运算
运算符优先级和结合性
SQL Server 2008中运算符的优先级顺序如下
● ~(按位取反) ● *(乘)、/(除)、%(取余) ● +(正)、-(负)、+(加)、+(字符串串联)、-(减)、& (按位与)、^(按位异或)、|(按位或) ● =、>、<、>= 、<= 、<> 、!=、!>、!<(比较运算符) ● Not ● And ● All、Any、Between、In、Like、Or、Some ● =(赋值)
第7章 SQL Server 2008高级应用
7.1 7.2 7.3 7.4
Transact-SQL程序设计 存储过程 触发器 备份和还原
7.1 Transact-SQL程序设计
Transact-SQL语言就是在标准SQL的基础上进行扩 充而推出的SQL Server专用的结构化SQL。 Transact-SQL语言最主要的用途是设计服务器端的 能够在后台执行的程序块。
比较运算符
比较运算符用来比较两个表达式值之间的大小关系,可以用于 除了text、ntext和image 数据类型之外的所有数据类型。运算 的结果为True或False,通常用来构造条件表达式。
逻辑运算符
逻辑运算符用来对多个条件进行运算,运算的结果为True或 False,通常用来表示复杂的条件表达式。
算术运算符
算术运算符对两个表达式执行数学运算,参与运算 的表达式必须是数值数据类型或能够进行算术运算 的其他数据类型。
赋值运算符
等号 (=) 是唯一的 Transact-SQL 赋值运算符。在以 下示例中,将创建一个 @MyCounter 变量,然后赋 值运算符将 @MyCounter 的值赋为1。
SELECT 命令可以一次给多个变量赋值。
SET 命令有两种用法。
(1)用于给局部变量赋值。 (2)用于用户执行SQL 命令时,SQL Server 处理选 项的设定 。
SET:选项ON; SET:选项OFF; SET:选项值。
SHUTDOWN
SHUTDOWN [WITH NOWAIT]
SHUTDOWN 命令用于停止SQL Server 的执行。
WHILE <条件表达式> BEGIN <命令行或程序块> [BREAK] [CONTINUE] [命令行或程序块] END
GOTO 标识符
RETURN([整数值])
WAITFOR {DELAY <'时间'> | TIME <'时间'> | ERROREXIT | PROCESSEXIT | MIRROREXIT}
DECLARE @x CHAR, @y CHAR(10) SELECT @x ='123', @y ='data_type' PRINT @x PRINT @y
EXECUTE
Eபைடு நூலகம்ECUTE命令用来执行存储过程 。
PRINT
PRINT的语法格式如下:
PRINT 'any ASCII text' | @local_variable | @@FUNCTION | string_expression
【例7-9】 等待1小时2分零3秒后才执行SELECT语句。
WAITFOR DELAY '01:02:03' SELECT * FROM S
【例7-10】 指定在11:24:00时间点时开始执行SELECT语句。
WAITFOR TIME '11:24:00' SELECT * FROM S
【例7-11】 求1+2+3+„+10的总和。
注释符
在T-SQL中可以使用两类注释符:
(1)ANSI标准的注释符“- -”用于单行注释; (2)与C语言相同的程序注释符,即“/*„„*/”,“/*”用 于注释文字的开头,“*/”用于注释文字的结尾,可在程序中 标识多行文字为注释。
7.1.2 运算符
运算符是一种符号,用来指定要在一个或多个表达式中执行的操作。
WRITETEXT
WRITETEXT {table.column text_pointer} [WITH LOG] {data}