SQL Server创建存储过程、触发器、函数等创建存储过程、触发器、函数等(学习札记学习札记)
SQL的存储过程、触发器等建立的存储过程、触发器等建立视图存储过程触发器函数(自定义函数)索引
视图视图
视图是从一个或几个基本表(或视图)导出的表。不同的是,它是一虚表虚表,数据库中只存放视图的定义,而不存放视图对应
的数据,这些数据仍然存放在原本的基本表中。所以一旦基本表发生变化,从视图中查询的数据也就随之改变.
作用:视图更加方便用户的查询。
存储过程存储过程
存储过程是事先经过编译并保存事先经过编译并保存在数据库中的一段sql语句集合.
使用时调用即可.
例:例: 返回学号为返回学号为”2020005″学生的成绩情况,存储过程命名为学生的成绩情况,存储过程命名为p1
-- 如果不使用存储过程的查询
select * from sc where sno="2020005"
-- 存储过程:返回学号2020005学生的成绩情况
create proc p1
as
begin
select * from sc where sno="2020005"
end
--调用存储过程p1
exec p1
可编程性可编程性中查看建立的存储过程
上面的学号被写死了,现在假如有一个需求是:查询某同学指定课程号的成绩和学分,alter存储存储过程p1
alter proc p1 @sno varchar(13),@cno varchar(13)
as
begin
select sc.*,course.credit
from sc,course
where sno=@sno and sc.cno=@cno and sc.cno=course.cno
end
-- 执行存储过程(传入指定参数即可)
exec p1 '2020004','20203'
如何删除存储过程p1呢
drop proc p1
可以发现存储过程类似于传统编程语言中函数的概念。
触发器触发器
触发器的定义:监视某种情况,并触发某种操作,当对一个表格进行增删改操作就有可能自动激活执行它自动激活执行它,不同于存储过
程需要手动调用执行。
触发器的语法结构如下:
create trigger trigger_name on [table_name | view_name] [for | after | instead of] [update | insert | delete] as
begin
sql_statement
end
例:学生人数不能大于例:学生人数不能大于17
方法一:先插入后检查先插入后检查(after),不符合要求则回滚(rollback)操作
create trigger t1 on stu
after insert
as
begin
if (select count(*) from stu) >17
begin
print 'error'
rollback tran
-- rollback transaction事务回滚
end
else
begin
print 'right'
end