1. 视图
1. 含义
- 本身 是一个虚拟表,它的数据来自于表,通过执行动态生成
- 好处
- 简化sql语句
- 提高了sql 的重用性
- 保护基表的数据,提高了安全性
2. 创建
create view 视图名
as
查询语句;
3. 修改
-
方式一:
create or replace view 视图名 as 查询语句;
-
方式二
alter view 视图名
as
查询语句
4. 删除
drop view 视图1,视图2...;
5. 查看
desc 视图名;
show create view 视图名;
6. 使用
- 插入
- insert
- 修改
- update
- 删除
- delete
- 查看
- select
7. 注意:
- 视图一般用于查询的,而不是更新的,所以具备以下的特点的视图都不容许更新
1. 包含分组函数、group by、distinct、having、union、
2. join
3. 常量视图
4. where后的子查询用到了from中的表
5. 用到了不可更新的视图
8. 视图和表的对比
关键字 | 是否占用物理空间 | 使用 | |
---|---|---|---|
视图 | view | 占用较小,只保存sql逻辑 | 一般用于查询 |
表 | table | 保存实际的数据 | 增删改查 |
触发器
- 如果你想要某条语句(或者某些语句) 在事件发生时自动执行。
创建触发器
-
需要给出4条信息
- 唯一的触发器名(是每个表唯一)
- 触发器关联的表
- 触发器应该相应的活动(DELETE , INSERT 或 UPDATE);
- 触发器何时执行(处理之前或之后)
create trigger newproduct after insert on products for each row select 'Product added'; 执行上面这个,就是对每个成功插入都是显示 product added信息
每个表最多支持6个出发器,增删改 的前后
单一触发器不能与多个事件或多个表关联,所有你应该使用两个触发器去满足你的条件
-
触发器的失败 : 如果before 触发器失败,则mysql 将不执行请求的操作,此外 ,如果before 触发器 或 语句本身 失败,mysql 将不执行 after 触发器
-
删除触发器
drop trigger netproduct;
触发器不能更新和覆盖,,只能删除掉,然后重新创建
-
使用触发器
create trigger neworder after insert on orders
for each row select new.order_num;
此代码 创建一个名为neworder的触发器,他按照after insert on orders 执行,在插入一个新订单到orders表时,mysql申城一个新订单号并保存到order_num中。
管理实务处理
-
事务处理,可以用来维护数据库的完整性,他可以保证成批的mysql操作要么完全执行,要么完全不执行
-
关于事务处理 : 有 几个术语:
- 事务 : 指一组sql语句
- 回退 : 撤销执行sql语句的过程
- 提交 : 将未存储的sql语句 写入数据库表
- 保留点 : 指事务处理中设置的临时占位符,你可以对它发布回退(与回退事务不同)
-
控制事务处理
-
start transaction 开始
-
rollback 回退
-
commit 提交
-
savepoint delete1; 唯一名字保留点
-
rollback to delete1 ; 返回保留点