Mysql 数据库 第十二节视图基础

mac2023-06-10  19

                                                         视图 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 BYHAVINGUNIONFROM 句中 包含多个表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;

 

最新回复(0)