MySQL(四)视图,存储过程,触发器

一:视图

什么是视图?

视图(View)是一种虚拟存在的表,对于使用视图的用户来说基本上是透明的。视图并
不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时
动态生成的

视图的优点?

  1. 简单:使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件, 对用户来说已经是过滤好的复合条件的结果集,可以屏蔽复杂的业务逻辑,只用关心结果
  2. 安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能
    限制到某个行某个列,但是通过视图就可以简单的实现。
  3. 数据独立:一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加列对视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响。

视图的操作

  1. 创建视图
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
  1. 修改视图
ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
  1. 删除视图,需要用户具有删除权限
DROP VIEW [IF EXISTS] view_name
  1. 查看视图
SHOW TABLE STATUS  
  1. 查看的定义
show create view 名称

二: 存储过程跟存储函数

定义:

  1. 存储过程和函数是事先经过编译并存储在数据库中的一段 SQL 语句的集合
  2. 存储过程和函数的区别在于函数必须有返回值,而存储过程没有,存储过程的参数可以使用
    IN、OUT、INOUT 类型
    ,而函数的参数只能是 IN 类型的。如果有函数从其他类型的数据库迁
    移到 MySQL,那么就可能因此需要将函数改造成存储过程

优点

  • 可以将数据的处理放在数据库服务器上进行,避免将大量的结果集传输给客户端,减少数据的传输

缺点

  • 数据库服务器上进行大量的复杂运算也会占用服务器的 CPU,造成数据库服务器的压力

存储过程或者函数的操作

  1. 创建
CREATE PROCEDURE 存储过程名称 (参数]) 语句
CREATE FUNCTION 函数名称 (参数]) RETURNS 返回值类型 语句
存储过程参数:
[ IN | OUT | INOUT ] 参数名 参数类型
函数参数:
参数名 参数类型
  1. 调用
CALL 存储过程名称(参数1,参数2.....)
  1. 删除存储过程或者函数
DROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name
  1. 查看存储过程或者函数
SHOW {PROCEDURE | FUNCTION} STATUS [LIKE 'pattern']
  1. 查看定义
SHOW CREATE {PROCEDURE | FUNCTION} 名称

三:触发器

  1. 创建触发器
CREATE TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt
示例:(DELIMITER 将解为标志符替换为$$)
DELIMITER $$
CREATE TRIGGER ins_film
AFTER INSERT ON film FOR EACH ROW BEGIN
INSERT INTO film_text (film_id, title, description)
VALUES (new.film_id, new.title, new.description);
END;
$$
delimiter ;
 trigger_time 是触发器的触发时间,可以是 BEFORE 或者 AFTER,BEFORE 的含义指在检
查约束前触发,而 AFTER 是在检查约束后触发。
而 trigger_event 就是触发器的触发事件,可以是 INSERT、UPDATE 或者 DELETE
mysql中对同一个表相同触发时间的相同触发事件,只能定义一个触发器
  1. 删除触发器
DROP TRIGGER [数据库.]trigger_name
不写数据库名称,默认为当前数据库
  1. 查看触发器
    可以通过执行 SHOW TRIGGERS 命令查看触发器的状态、语法等信息,但是因为不能查询指
    定的触发器,所以每次都返回所有的触发器的信息,使用起来不是很方便
show  triggers

猜你喜欢

转载自blog.csdn.net/qq_41907991/article/details/84953502