zoukankan      html  css  js  c++  java
  • 八、视图

    含义

    虚拟表,和普通表一样使用。Mysql 5.1版本出的新特性,通过普通表动态生成的数据,只保存了sql逻辑,不保存查询结果。

    应用场景

    • 多个地方用到用样的查询结果
    • 该查询结果使用的 sql 比较复杂

    简单示例

    mysql> select * from account;
    +----+----------+---------+
    | id | username | balance |
    +----+----------+---------+
    |  2 | 哈哈哈   |    1000 |
    |  3 | 嘿嘿和   |    2000 |
    |  4 | 嘻嘻嘻   |    1000 |
    |  5 | 拉拉阿拉 |       1 |
    |  6 | 哇哇哇   |     545 |
    +----+----------+---------+
    5 rows in set (0.06 sec)
    
    mysql> SELECT * FROM `account` where username like '%哈%';
    +----+----------+---------+
    | id | username | balance |
    +----+----------+---------+
    |  2 | 哈哈哈   |    1000 |
    +----+----------+---------+
    1 row in set (0.06 sec)
    
    mysql> create view select_like_username as (SELECT * FROM `account` where username like '%哈%');
    Query OK, 0 rows affected (0.01 sec)
    mysql> select * from select_like_username where username like '%哈%';
    +----+----------+---------+
    | id | username | balance |
    +----+----------+---------+
    |  2 | 哈哈哈   |    1000 |
    +----+----------+---------+
    1 row in set (0.07 sec)
    
    

    视图好处

    • 重用sql语句
    • 简化复杂的sql操作,不许知道它的查询细节
    • 保护数据,提高安全性

    视图的修改

    方式一

    ​ create or replace view 视图名 as 查询语句;

    方式二

    ​ alter view 视图名 as 查询语句;

    视图的删除

    语法

    ​ drop view 视图名,视图名,.........; # 可删除多个

    查看视图

    语法

    ​ desc 视图名;

    ​ show create view 视图名;

    视图的更新

    语法

    # 创建视图
    create or replace view select_all_account as (SELECT * FROM `account`);
    # 查看
    select * from select_all_account;
    # 插入
    insert into select_all_account values(null,'张飞',111);
    # 修改
    update select_all_account set username = '关云长' where id = 7;
    # 删除
    delete from select_all_account where id = 7;
    

    视图的可更新性和视图中查询的定义有关系,以下类型的视图是不能更新的

    • 包含以下关键字的 sql 语句:分组函数、distinct、group by、having、union或者union all
    • 常量视图
    • Select中包含子查询
    • jion
    • from一个不能更新的视图
    • where子句的子查询引用了from子句中的表

    视图和表的对比

    创建语法的关键字 是否占用物理内存 使用
    视图 create view 几乎不占用,保存了 sql 逻辑 增删改查
    create table 占用,保存了数据 增删改查
  • 相关阅读:
    PHP | 运算符优先级
    Docker配置PHP+Nginx+MySQL
    Windows下Mysql主从配置
    php-fpm重启配置修改无效
    MySQL事务
    hadoop伪集群搭建
    Springboot2.x源码下载安装
    微服务——服务之间访问,用Feign请求服务接口超时如何解决?
    Lua安装
    日期——计算每月第一天和最后一天
  • 原文地址:https://www.cnblogs.com/yliucnblogs/p/11489407.html
Copyright © 2011-2022 走看看