新手上路教程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 ; 返回保留点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值