现在的位置: 首页 > 综合 > 正文

SQL第五章

2014年12月03日 ⁄ 综合 ⁄ 共 4192字 ⁄ 字号 评论关闭

概述、注释
多条SQL语句作为一个批处理。这样的语句组从应用程序一次性地发送到SQL Server服务器进行执行。SQL Server服务器将批处理编译成一个可执行单元,称为执行计划。

在SQL Server中,有两种类型的注释字符:
单行注释:使用两个连在一起的减号“- -”作为注释符;
多行注释:使用“/*  */”作为注释符。
变量
全局变量
全局变量在整个SQL Server系统内使用。存储的通常是一些SQL Server的配置设定值和统计数据。在使用全局变量时应该注意以下几点:
全局变量是在服务器级定义的。
用户只能使用预先定义的全局变量。
引用全局变量时,必须以标记符“@@”开头。
全局变量对用户来说是只读的。
局部变量的名称不能与全局变量的名称相同。
常用
@@fetch_status:返回被fetch执行的最后游标的状态
@@max_connections:返回允许同时连接用户最大数目
@@rowcount:返回受上一语句影响的行数
@@servername:返回运行SQL的本地服务器名称

局部变量
利用局部变量还可以保存程序执行过程中的中间数据值,保存由存储过程返回的数据值等。
1.局部变量的定义
必须先用DECLARE命令定义后才可以使用
DECLARE {@局部变量名  数据类型} […n] 
2.局部变量的赋值方法
SET {{@局部变量名 = 表达式}或者
SELECT {@局部变量名 = 表达式} [ ,...n]
3.局部变量的显示
SELECT @局部变量名 [as 别名] [into 新表名]
例:显示符合局部变量指定职称的人员记录
    显示局部变量指定部门的人员记录
    将平均基本工资保存到局部变量中显示
运算符
算术运算符
算术运算符包括加(+)、减(-)、乘(*)、除(/)和取模(%)
赋值运算符
只有一个赋值运算符,即等号(=)
比较运算符
比较运算符包括:等于(=)、大于(>)、大于或等于(>=)、小于(<)、小于或等于(<=)、不等于(<>或!=)、不小于(!<)、不大于(!>)。
逻辑运算符
逻辑运算符包括与(AND)、或(OR)和非(NOT)等运算符。
逻辑运算返回布尔值,值为TRUE或FALSE。

字符串连接运算符 (+)
运算符的优先级
括号:();
乘、除、求模运算符:*,/,%;
加减运算符:+,-;
比较运算符:=,>,<,>=,<=,<>,!=,!>,!<;
逻辑运算符:NOT;
逻辑运算符:AND;
逻辑运算符:OR。

函数
字符串函数
ASCII 
CHAR       常用于将重要字符进行改变保存
DIFFERENCE 比较两个串是否相同
LEFT
RIGHT
SUBSTRING  常用于取出串中字符进行比较、查找
LOWER
UPPER      常用于忽略字母大小写处理
REPLICATE  将串复制指定次数
REVERSE    将串进行反转,可用于重要数据反转保存
LTRIM
RTRIM      常用于去串空格进行模糊比较
LEN
SPACE
STR        数值转换成串,常用于Like等
函数
数学函数 
ABS
SQRT
FLOOR 返回小于或等于给定值的最小整数
POWER 返回乘方结果
        POWER(数,乘方次数)
ROUND 返回四舍五入数值
        ROUND(数,小数位数)
RAND  产生(0,1)间随机数
        floor(rand()*(B-A+1)+A)
PI()
函数
日期和时间函数
DATAADD   日期加上天数后的值
            日期+N;DATAADD(DAY,N,日期)
DATADIFF  两个日期之差
            DATADIFF(DAY,始日期,终日期)
DATENAMAE 日期指定部分的字符串
DATEPART  日期指定部分的数字    同上
            DATENAME(YEAR|MONTH|DAY, 日期)
GETDATE() 当前日期和时间
DAY
MONTH
YEAR
函数
转换函数
CAST (表达式 AS 数据类型)
允许一种类型转换成另一种类型;串长增大;
CONVERT (数据类型[(length)],表达式 [,样式])
允许一种类型转换成另一种类型;日期型按指定样式显示
例:显示基本工资是400-499的记录
    显示1960-1969年间出生的记录
函数
系统函数
DB_NAME   数据库名称
HOST_NAME 客户机名称
ISDATE    是否为合法日期
ISNULL    是否为空值
ISNUMERIC 是否为数值
OBJECT_NAME 数据库对象名称
SUSER_SID   用户的服务器安全帐号
SUSER_NAME  用户的服务器登录名称

用户自定义函数
CREATE  FUNCTION 函数名称(形式参数名称 AS 数据类型)
RETURNS 返回数据类型(单值,表)
BEGIN
  函数内容
RETURN 表达式
END
返回单值;返回结果集;返回表
调用用户自定义函数的基本语法为:
变量=用户名.函数名称(实际参数列表)
注意:在调用返回数值的用户自定义函数时,一定要在函数名称的前面加上用户名

例:利用函数显示任意部门的部门,姓名
函数定义:create function dbo.dispbm(@bm1 varchar(20))
returns table
as
return
  (select bm.部门,rs.姓名 from rs,bm where rs.部门号=bm.部门号 and bm.部门=@bm1)
函数调用:select * from dispbm('计算机系')
流程控制语句
BEGIN…END语句
BEGIN
{sql_statement|statement_block}
END

IF…ELSE语句
IF Boolean_expression
  {sql_statement|statement_block}
[ELSE
  {sql_statement|statement_block}]

CASE语句(多路分支语句)
简单CASE语句的语法形式为:
CASE input_expression
    WHEN when_expression THEN
        result_expression [ ...n ]
   [ ELSE else_result_expression]
END 

搜索CASE语句的语法形式为:
CASE
WHEN  Boolean_expression
THEN result_expression[ ...n ]
[ELSE else_result_expression]
END

WHILE…CONTINUE…BREAK语句
WHILE Boolean_expression
BEGIN
{sql_statement|statement_block}
[BREAK]
{sql_statement|statement_block}
[CONTINUE]
[END]

GOTO语句
GOTO label
……
label:

WAITFOR语句
WAITFOR { DELAY 'time' | TIME 'time' }

RETURN语句
RETURN [ integer_expression ]
存储过程的概念
SQL Server的存储过程类似于编程语言中的过程。在使用Transact-SQL语言编程的过程中,我们可以将某些需要多次调用的实现某个特定任务的代码段编写成一个过程,将其保存在数据库中,并由SQL Server服务器通过过程名来调用它们,这些过程就叫做存储过程。

存储过程在创建时就被编译和优化,调用一次以后,相关信息就保存在内存中,下次调用时可以直接执行。

存储过程的优点
实现了模块化编程。
存储过程具有对数据库立即访问的功能。
使用存储过程可以加快程序的运行速度。
使用存储过程可以减少网络流量。
使用存储过程可以提高数据库的安全性。
存储过程的分类
系统存储过程
用户自定义存储过程

创建存储过程
使用企业管理器创建存储过程
在SQL Server企业管理器中,选择指定的服务器和数据库,右击要创建存储过程的数据库,在弹出的快捷菜单中依次选择“新建|存储过程…”选项。
使用Transact-SQL语句创建存储过程
可以使用Transact-SQL语句中的CREATE PROCEDURE命令创建存储过程。
使用向导创建存储过程
在企业管理器中,选中某个SQL Server服务器,选择要创建存储过程的数据库,选择“工具”菜单中的“向导”菜单项,系统会弹出“选择向导”对话框,单击向导中“数据库”选项左边的加号,选中“创建存储过程向导”选项。
执行存储过程
存储过程创建成功后,保存在数据库中。在SQL Server中可以使用EXECUTE命令来直接执行存储过程。
查看和修改存储过程
查看存储过程
使用企业管理器查看用户创建的存储过程
使用系统存储过程查看用户创建的存储过程
修改存储过程
使用企业管理器修改存储过程
使用Transact-SQL语句修改存储过程

重命名和删除存储过程
重命名存储过程
使用企业管理器修改存储过程名称
使用系统存储过程修改存储过程名称
删除存储过程
使用企业管理器删除存储过程
使用Transact-SQL语句删除存储过程

触发器的概念
触发器是一种特殊类型的存储过程,它不同于前面介绍过的一般的存储过程。
一般的存储过程通过存储过程名称被直接调用,而触发器主要是通过事件进行触发而被执行
触发器是一个功能强大的工具,它与表格紧密相连,在表中数据发生变化时自动强制执行。触发器可以用于SQL Server约束、默认值和规则的完整性检查,还可以完成难以用普通约束实现的复杂功能。
触发器的优点
触发器是自动的执行的。
触发器可以通过数据库中的相关表进行层叠更改。
触发器的类型
AFTER触发器
INSTEAD OF触发器
创建触发器
使用企业管理器创建触发器
在企业管理器中,展开指定的服务器和数据库,右击某个表,从弹出的快捷菜单中依次选择“所有任务|管理触发器”选项,会出现触发器属性对话框。
使用Transact-SQL语句创建触发器
使用Transact-SQL语言中的CREATE TRIGGER命令可以创建触发器,其中需要指定定义触发器的基表、触发器执行的事件和触发器的所有指令。
查看、修改和删除触发器
查看触发器
1.使用企业管理器查看触发器信息
2.使用系统存储过程查看触发器
修改触发器
1.使用企业管理器修改触发器正文
2.使用Transact-SQL语句修改触发器正文
3.使用系统存储过程修改触发器的名称
删除触发器
1.使用企业管理器删除触发器
2.使用系统命令删除触发器
3.直接删除触发器所在的表

【上篇】
【下篇】

抱歉!评论已关闭.