MySQL中关于视图的一点两点

这里是MySQL的基础内容,我将他们的链接放到下面,方便大家阅读

mysql中DDL的操作方法
mysql中的DML操作
点了五根烟,终于把MySql中查询操作(DQL)搞懂了!
MySql中数据完整性彻底解析
MySQL多表查询一遍打通
MySQL中子查询看不明白?那就得好好练
一些我们在MySQL中常用的函数
让我们来聊聊MySQL中的权限操作
MySQL中关于视图的一点两点
MySQL中的存储过程一路通关!
MySQL中索引一遍过

一、什么是视图

  1. 视图是一个虚拟表,其内容由查询定义。
  2. 简单的来说视图时由select结果组成的表。
  3. 同真实表一样,视图包含一系列带有名称的列和行数据。
  4. 行和列数据来自定义视图的查询所引用的表,并且在引用视图时动态生成。

二、视图的特性

  1. 视图是对若干基本表的而引用,一张虚表,查询语句执行的结果。
  2. 不存在具体的数据(基本表数据发生了改变,视图也会跟着改变)。
  3. 可以跟基本表一样,进行增删改查操作(有条件限制)。

三、视图的作用

  1. 安全性

    创建一个视图,定义好该视图所操作的数据。之后将用户权限与视图绑定,这样的方式是使用到一个特性:grant语句可以针对视图进行授予权限。这样就可以将原本的数据表中的数据经过处理再给其他人看,保存了自己隐私。

  2. 查询性能提高

  3. 提高了数据的独立性

四、视图的创建、修改、删除

  1. 创建语句
CREATE [ALGORITHM]={UNDEFINED|MERGE|TEMPTABLE}
VIEW 视图名 [(属性清单)]
AS SELECT [...]
FROM [...]
[WITH [CASCADED|LOCAL] CHECK OPTION;

ALGORITHM参数:

  1. marge 处理方式为替换式,可以进行更新真实表中的数据。
  2. temptable 处理方式为具化式,由于数据存储再临时表中,所以不可以进行更新操作。
  3. undefined 没有定义ALGORITHM参数,更倾向于选择替换式,因为它更加有效。

WITH CHECK OPTION
更新数据不能插入或更新不符合视图限制条件的记录。

LOCAL和CASCADED
为可选参数,决定了查询测试的范围,默认值为CASCADED。

  1. 修改语句
CREATE ON REPLACE VIEW 视图名
AS SELECT [...]
FROM [...];
  1. 删除语句
DROP VIEW 视图名;

五、视图机制

  • 替代式

    操作视图时,视图名直接被视图定义给替换掉。

    //直接用括号里面的代码代替emp_salary这个视图
    SELECT * FROM emp_salary;
    SELECT * FROM (SELECT * FROM emp WHERE salary > 2000);
    
  • 具化式

    mysql先得到了视图执行的结果,给结果形成一个中间结果暂时存在内存中,外面的select语句就调用了这些中间结果(临时表)。

    SELECT * FROM emp WHERE salary > 2000;  
    ——>    temptable		//将查询结果存入临时表中
    
    SELECT * FROM temptable;    //查询临时表
    

六、视图中不可修改的部分

  • 聚合函数
  • DISTINCT关键字
  • GROUP BY 子句
  • HAVING子句
  • UNION运算符
  • FROM子句中包含多个子表
  • SELECT语句中引用了不可更新的视图

只要视图当中的数据不是来自于基表,就不能够直接修改。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值