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 占用,保存了数据 增删改查
  • 相关阅读:
    常用Linux命令:ls/cd/pwd/mkdir/rm/mv/cp
    设计模式(5)---代理模式
    设计模式(4)---装饰模式
    设计模式(3)---基本原则
    设计模式(2)---策略模式
    设计模式(1)---简单工厂模式
    linux系统硬件配置查看方法
    boost.asio系列(一)——deadline_timer
    ubuntu 安装JDK
    计算图像数据集的RGB均值
  • 原文地址:https://www.cnblogs.com/yliucnblogs/p/11489407.html
Copyright © 2011-2022 走看看