zengbinsi/zengbinsi.github.io

SQL数据库基础002

Opened this issue · 0 comments

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