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]
创建只有一个执行语句的触发器基本形式:
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_03_存储过程,触发器,权限,视图,函数
- MySQL学习笔记 第九讲:视图、事务、触发器
- MySQL学习笔记14:视图
- MySQL学习笔记——索引和视图
- MySQL存储过程和触发器的实现--数据库学习笔记
- java 从零开始,学习笔记之基础入门<Oracle_函数_触发器_游标_存储过程_视图>(三十五)
- [原]java专业程序代写(qq:928900200),学习笔记之基础入门<Oracle_函数_触发器_游标_存储过程_视图>(三十五)
- MySQL学习笔记--视图的创建,删除,修改,算法
- MySQL学习笔记九:存储过程,存储函数,触发器
- MySQL学习笔记14:视图
- MySQL学习笔记15:触发器
- MySQL学习笔记15:触发器
- Mysql 存储过程,触发器,视图 学习记录
- 学习笔记-mysql_触发器
- MySQL服务器学习笔记!(三) ——视图/事物/锁,以及数据引擎
- MYSQL触发器学习笔记
- Mysql学习笔记十六——视图
- [原]java专业程序代写(qq:928900200),学习笔记之基础入门<SQL_Server_视图_函数_存储过程_触发器等>(二十三)
- MySQL学习笔记(1)视图操作
- MySQL学习笔记—视图