SQL数据库基础002
Opened this issue · 0 comments
zengbinsi commented
SQL数据库基础002
[可选项]
一、视图(View)
1.创建视图
create view v_表名
as
select 视图要显示的列名 from 表名 where 筛选条件 order by 排序的列名 desc[asc]
2.查看视图内容
select * from v_表名
3.修改视图定义
alter view v_表名
as
select 视图要显示的列 from 表名 where 筛选条件 order by 列名 desc[asc]
4.删除视图
drop view v_表名
二、函数
1、创建函数(function)
1.1、创建标量函数
create function f_表名(@参数1 数据类型,@参数2 数据类型, ......)
returns 数据类型m
as
begin
declare @结果变量 数据类型m
set @结果变量=?
函数体
......
return @结果变量
end
1.2、创建表值函数
create function f_表名(@参数1 数据类型,@参数2 数据类型, ......)
returns @result table
(
--返回表的定义
字段名1 数据类型1,
字段名2 数据类型2,
... ...
)
as
begin
函数体[一个select语句]
......
end
2、函数调用
2.1、标量函数的调用
select dbo.f_表名(参数1,参数2,......) from 对应的表名
2.2、表值函数的调用
select 要显示的列 from f_表名(参数1,参数2,......)
3、修改函数定义
alter function f_表名(@参数1 数据类型,@参数2 数据类型, ......)
returns ...
--这里是重新定义的代码(参考上面函数定义的内容)
4、删除函数
drop function f_表名
三、存储过程(proc)
1、创建存储过程
create proc p_表名 @参数1 数据类型,@参数2 数据类型, ......,@输出参数 数据类型 output
as
begin
存储过程定义内容
end
2、调用存储过程
exec p_表名 @参数1,@参数2, ......
3、修改存储过程定义
alter proc p_表名 @参数1 数据类型,@参数2 数据类型, ......,@输出参数 数据类型 output
as
begin
存储过程定义内容
end
4、删除存储过程
drop proc p_表名
四、触发器(trigger)
1、创建触发器
create trigger tri_表名 on 表名
for inset[update/delete]
as
触发器定义内容
......
--上面for语句为可选句[for:与原语句同时进行/insted of:替换原来的语句/after:原语句执行后执行]
--注意:对于列级update触发器可用update(列名)函数判断是否修改了该列的数据
2、使用触发器
- 可以使用修改表的命令(alter table 表名),在该语句中使用disable trigger选项暂停某触发器作用。
- 当重新需要使该触发器有效时,在(alter table 表名)命令中使用enable trigger选项即可。
3、修改触发器
alter trigger tri_表名 on 表名
for inset[update/delete]
as
触发器定义内容
......
--上面for语句为可选句【for:与原语句同时进行/insted of:替换原来的语句/after:原语句执行后执行】
4、删除触发器
drop trigger tri_表名
五、事务(tran)
1.1、标记事务起点
begin transaction
1.2、提交事务
commit transaction
1.3、回滚事务
raiserror('报错内容',错误级别(11~19),1)--自定义报错
rollback transaction --回滚一般写在异常处理机制 try 的“begin catch”与“end catch”之间
六、游标
1、定义游标
--定义一个名choice_curs的游标;该游标装载choice表中的所有数据行.
--要求: 可前后滚动
declare choice_curs scroll cursor for select * from choice
2、打开游标
--打开游标
open choice_curs
3、提取数据
--提取游标中的第一行
fetch first from choice_curs
--提取游标中的下一行
fetch next from choice_curs
或者
fetch from choice_curs
--提取游标中的最后一行
fetch last from choice_curs
或者
fetch absolute -1 from choice_curs
--提取游标集中的第4行
fetch absolute 4 from choice_curs
4、使用游标修改数据
--修改当前游标所在行的数据(即第四行)成绩为100
update choice set score=100 where current of choice_curs
--用select语句查看choice表,看是否已被修改
select * from choice
5、关闭游标
--关闭游标
close choice_curs
6、销毁游标
--销毁游标
deallocate choice_curs
7、其他操作
--判断游标是否存在下一行,0为存在
@@fetch_status=0
--获取行数
@@rowcount
--获取异常
@@error