数据库-存储过程、触发器、视图-考研笔记

概念一:存储过程

定义

存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

基本SQL语法

创建:create
create procedure sp_name
@[参数名] [类型],@[参数名] [类型]
as
begin
.........
end
调用:exec/call

存储过程可以在三种环境下被调用:

1.  command命令下,基本语法为:exec sp\_name [参数名];
2.  SQL环境下,基本语法为:call sp\_name [参数名];
3.  PL/SQL环境下,基本语法为:begin sp\_name [参数名] end;
删除:drop
drop procedure sp\_name

注意:不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程

优缺点:

优:

1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
3.存储过程可以重复使用,可减少数据库开发人员的工作量
4.安全性高,可设定只有某些用户才具有对指定存储过程的使用权

缺:

已定义好的存储过程不能适应数据库数据结构的改变。

注意:

触发器也是一种特殊的存储过程,与一般存储过程不同之处在于:触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。

概念二:触发器

定义:

触发器是一种特殊的存储过程。根据触发条件,DBMS会自动调用触发器。

作用:

1.触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。
2.触发器可以进行级联操作(Cascaded operation)。
3.触发器可以调用一个或多个存储过程。
4.触发器还可以侦测数据库内的操作,从而不允许数据库中未经许可的指定更新和变化。

SQL语法:

CREATE TRIGGER \`<databaseName>\`.\`<triggerName>\`
< [ BEFORE | AFTER ] > < [ INSERT | UPDATE | DELETE ] >
ON [dbo]<tableName> //dbo代表该表的所有者
FOR EACH ROW
BEGIN
--do something
END

概念三:视图

定义:

  1. 视图是从一个或几个基本表(或视图)中导出的虚拟的表。在系统的数据字典中仅存放了视图的定义,不存放视图对应的数据。
  2. 视图是原始数据库数据的一种变换,是查看表中数据的另外一种方式。可以将视图看成是一个移动的窗口,通过它可以看到感兴趣的数据。
  3. 一个视图也可以从另一个视图中产生。

特性:

  1. 简单性。看到的就是需要的。
  2. 安全性。通过视图用户只能查询和修改他们所能见到的数据。

视图能否更新:

1.若视图是由两个以上基本表导出的,则此视图不允许更新
2.若视图的字段来自字段表达式或常数,则不允许对此视图执行INSERT和UPDATE操作,但允许执行DELETE
3.若视图字段来自聚集函数,则此视图不允许更新
4.若视图定义中含有GROUP BY 子句,则此视图不允许更新
5.若视图中含有DISTINCT语句,则此视图不允许更新
6.若视图定义中含有嵌套查询,并且内层查询的FROM子句涉及的表也是导出该视图的基本表,则此视图不允许更新
7.一个不允许更新的视图上定义的视图也不允许更新

原文地址:https://www.cnblogs.com/xxxxxiaochuan/p/12625659.html