mysql视图,触发器,存储过程优缺点及应用分析

mysql视图,触发器,存储过程优缺点及应用分析

视图

mysql使用较少,是sql server和orcale使用多mysql

  1. create view 视图名 as 查询语句sql

    • create view user_view as select name,id from user;
    • select * from user_view; //查询视图,查询视图的结果和视图绑定的语句返回的数据相同
    • 修改视图数据 update user_view set username='two' where id=2;
    • 视图保存了sql逻辑,并无保存真实的数据,数据仍是从数据表获取的
    • drop view view_name
    • 创建视图时,最后增长with check option,在插入数据时,须要知足视图条件才容许操做
  2. 优势数据库

    • 简化操做,能够把复杂的sql进行封装,使用起来简单
    • 下降耦合,只须要修改视图,不须要修改代码中的sql语句
    • 安全,能够隐藏某些字段安全

      • create view a as select name,id,age from user;
      • 操做a视图时,只能获得name,id,age字段 select name from a; 视图中没有select的字段也不能修改、排序、group by等,例如 select commit from a; 会报错,没有commit字段
      • create view custom_view as select * from user group by id; 而后update custom_view set name=1 where id=1; 会报错,custom_view不可更新
  3. 缺点sqlserver

    • 数据库发生改变,视图须要手动修改
    • 不易于维护

触发器

针对写操做(insert,delete,update),去触发事件,例如写一张表的时候去更新另外一张表调试

  1. create trigger 触发器名 触发时间(after、before) 触发事件(insert,delete,update) on table for each row begin 方法体 end; for each row表示行级触发code

    • create trigger user_trigger after insert on user for each row begin insert test vales(1,2) end;
    • drop trigger user_trigger;
    • 一个事件只能增长一个触发器
    • show triggers 查看全部的触发器建立信息
  2. 缺点server

    • 批量操做不适用
    • 触发器错误不易定位
  3. 优势

存储过程

对mysql并不友好,sqlserver和orcale支持更好,sqlserver指望全部业务都交由存储过程来实现排序

  1. create procedure 存储过程名(参数列表) begin 方法体 end
-- in表示输入,out表示输出,inout即表示输入又表示输出

create procedure user_procedure(in x int,out y varchar(25))
begin
-- into表明将结果存入到y
    select username into y from user where id=x;

end
  1. call user_procedure(1,@a); 调用
  2. drop procedure procedure_name;
  3. select @a; 搜索输出
  4. 优势事件

    • 执行块,存储过程会预编译,第一次运行存储过程会进行编译,再次次奥用不会再通过sql解释器
    • 安全性高
  5. 缺点

    • 不便维护
    • 移植性差,很差调试,也不易扩展
相关文章
相关标签/搜索