Mysql 数据库 第十二节 视图基础
程序员文章站
2022-06-01 17:06:28
...
视图 View 基础
1.什么是视图
视图是一个虚拟表, 其内容由 查询产生
与真实的表一样,包含 行 和 列
行和列数据 来源于定义 视图查询所 引用的表, 并且在引用 视图的时候 动态生成。
简单来说, 视图是由 Select 结果集 组成的 表
2. 视图的特性
不储存具体的 数据(基础表 数据发生变化,视图结果也会跟着发生改变)
可以跟基本表 一样, 进行 增删改查 操作(增删 改 有条件限制)
视图 一般用作查询
3.视图作用
安全性: 创建一个视图, 定义好该视图 所操作的数据。 之后将 用户权限 与 视图绑定,这样的方式 是使用到了授权特征,
查询性能的提升
提高了数据的独立性
创建 视图
Create View 语法:
CREATE
Create View 参数:
ALGORITHM:
MERGE :处理方式为替换方式,可以进行更新真实表中的数据
TEMPTALE :具化方式,由于数据保存在历史表中,所以不可以进行更新操作
UNDEFIND :没有定义 ALGORITHM 参数, MySql 更倾向于 选择替换方式,应为他更加有效
WITH CHECK OPTION :更新数据时 不能插入 或 更新不符合视图限制条件的记录
LOCAL和 CASCADED : 可选参数, 决定了 检查测试的范畴, 默认值为 CASCADED
视图机制:
替换式:操作视图时,视图名直接被视图定义给替换掉, 先替换 SQL 语句,将视图公式 替换后,整体处理替换后的SQL,
具化式:Mysql先得到了 视图执行的结果, 该结果形成一个中间 结果 暂时存在内存中, 先处理视图结果,然后处理外面的查询需求
视图不可更新的部分
- 聚合函数
- DISTINCT 关键字
- GROUP BY
- HAVING
- UNION
- FROM 句中 包含多个表
- SELECT 语句中引用了不可 更新的视图语句
- 只要视图当中 数据不是来自于 基表,就不能够直接修改
CREATE ALGORITHM = MERGE VIEW view_emp as SELECT * FROM emp;
SELECT * FROM view_emp;
CREATE ALGORITHM = TEMPTABLE VIEW view_emp as SELECT * FROM emp;
SELECT * FROM view_emp;
DROP VIEW view_emp;
SELECT * FROM emp;