您的位置:首页 > 数据库 > MySQL

MySQL学习笔记 4 -触发器、MySQL视图

2014-01-02 15:35 561 查看
MySQL触发器
创建只有一个执行语句的触发器基本形式:

CREATE TRIGGER 触发器名 BEFORE | AFTER 触发事件

ON 表名 FOR EACH ROW 执行语句
创建具有多个执行语句的触发器

基本形式:

CREATE TRIGER 触发器名称 BEFORE | AFTER 触发事件

ON 表名 FOR EACH ROW

BEGIN

执行语句列表

END
注意:在MySQL中,一个表在相同的时间和相同的触发时间只能创建一个触发器,如触发事件INSERT,触发时间AFTER的触发器只能有一个,但是可以定义BEFORE的触发器。

查看触发器
SHOW TRIGGERS;
SELECT * FROM information_schema.triggers;

或者:SELECT * FROM information_schema.triggers WHERE TRIGGER_NAME='触发器名称';

information_schema是MySQL中默认存在的库,用于记录触发器信息的数据表。

应用触发器

触发器中不能包含START TRANSCATION、COMMIT或ROLLBACK等关键词,也不能包含CALL语句。
删除触发器

DROP TRIGGER 触发器名称

MySQL视图
视图是一个虚表,是从数据库中一个或多个表中导出来的表,其内容由查询定义。数据库中只存放了视图的定义,没有存放视图中的数据。视图中的数据是依赖于原来的表中的数据的。
视图是存储在数据库中的查询的sql语句,它主要出于安全和可使复杂的查询易于理解和 使用。
视图作用:
简单性
安全性
逻辑数据独立性

创建视图
查看用户是否具有创建视图的权限

 select select_priv,create_view_priv from mysql.user where user='用户名';

创建视图

CREATE [ALGORITHM={UNDEFINDE | MERGE | TEMPTABLE}]

              VIEW 视图名 [(属性清单)]

              AS SELECT 语句

              [WITH [CASCADED | LOCAL] CHECK OPTION];
创建视图注意事项
有创建视图的权限
select语句不能包含from子句中的子查询;
select语句不能引用系统或用户变量
select语句不能引用预处理语句参数
在存储子程序内,定义不能引用子程序参数或局部变量
在定义中引用的表或视图必须存在。
在定义中不能引用temporary表,不能创建temporary视图;
视图定义中命名的表必须存在
不能将触发器与视图关联在一起
在视图定义中允许使用order by,但是,如果从特定视图进行选择,而该视图使用了具有自己order by的语句,它将被忽略

查看视图
DESCRIBE/DESC 视图名;
SHOW TABLE STATUS LIKE ‘视图名’;

修改视图
CREATE OR REPLACE [ALGORITHM={UNDEFINDE | MERGE | TEMPTABLE}]

VIEW 视图 [(属性清单)]

AS SELECT 语句

[WITH [CASCADED | LOCAL] CHECK OPTION]
ALTER

更新视图
视图中的数据虽然可以更新,但是有很多的限制。一般情况下,最好将视图作为查询数据的虚拟表,而不要通过视图更新数据。

删除视图
DROP VIEW IF EXISTS <视图名> [RESTRICT | CASCADE]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql