新手上路教程4_其他-视图-触发器

1. 视图

1. 含义

  1. 本身 是一个虚拟表,它的数据来自于表,通过执行动态生成
    1. 好处
    • 简化sql语句
    • 提高了sql 的重用性
    • 保护基表的数据,提高了安全性

2. 创建

create view 视图名
as
查询语句;

3. 修改

  1. 方式一:

    create or replace view 视图名
    as
    查询语句;
    
  2. 方式二

alter view 视图名
as
查询语句

4. 删除

drop view 视图1,视图2...;

5. 查看

desc 视图名;
show create view 视图名;

6. 使用

  1. 插入
    1. insert
  2. 修改
    1. update
  3. 删除
    1. delete
  4. 查看
    1. select

7. 注意:

  1. 视图一般用于查询的,而不是更新的,所以具备以下的特点的视图都不容许更新
    1. 包含分组函数、group by、distinct、having、union、
    2. join
    3. 常量视图
    4. where后的子查询用到了from中的表
    5. 用到了不可更新的视图

8. 视图和表的对比

关键字 是否占用物理空间 使用
视图 view 占用较小,只保存sql逻辑 一般用于查询
table 保存实际的数据 增删改查

触发器

  1. 如果你想要某条语句(或者某些语句) 在事件发生时自动执行。

创建触发器

  1. 需要给出4条信息

    1. 唯一的触发器名(是每个表唯一)
    2. 触发器关联的表
    3. 触发器应该相应的活动(DELETE , INSERT 或 UPDATE);
    4. 触发器何时执行(处理之前或之后)
    create trigger newproduct after insert on products 
    for each row select 'Product added';
    执行上面这个,就是对每个成功插入都是显示 product added信息
    

    每个表最多支持6个出发器,增删改 的前后

    单一触发器不能与多个事件或多个表关联,所有你应该使用两个触发器去满足你的条件

  2. 触发器的失败 : 如果before 触发器失败,则mysql 将不执行请求的操作,此外 ,如果before 触发器 或 语句本身 失败,mysql 将不执行 after 触发器

  3. 删除触发器

    drop trigger netproduct;
    
    

    触发器不能更新和覆盖,,只能删除掉,然后重新创建

  4. 使用触发器

create trigger neworder after insert on orders
for each row select new.order_num;


此代码 创建一个名为neworder的触发器,他按照after insert on orders 执行,在插入一个新订单到orders表时,mysql申城一个新订单号并保存到order_num中。

管理实务处理

  1. 事务处理,可以用来维护数据库的完整性,他可以保证成批的mysql操作要么完全执行,要么完全不执行

  2. 关于事务处理 : 有 几个术语:

    1. 事务 : 指一组sql语句
    2. 回退 : 撤销执行sql语句的过程
    3. 提交 : 将未存储的sql语句 写入数据库表
    4. 保留点 : 指事务处理中设置的临时占位符,你可以对它发布回退(与回退事务不同)
  3. 控制事务处理

  4. start transaction 开始

  5. rollback 回退

  6. commit 提交

  7. savepoint delete1; 唯一名字保留点

  8. rollback to delete1 ; 返回保留点

posted @ 2019-03-24 13:59  Firewine  阅读(150)  评论(0编辑  收藏  举报