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 占用,保存了数据 增删改查
  • 相关阅读:
    LeetCode Find Duplicate File in System
    LeetCode 681. Next Closest Time
    LeetCode 678. Valid Parenthesis String
    LeetCode 616. Add Bold Tag in String
    LeetCode 639. Decode Ways II
    LeetCode 536. Construct Binary Tree from String
    LeetCode 539. Minimum Time Difference
    LeetCode 635. Design Log Storage System
    LeetCode Split Concatenated Strings
    LeetCode 696. Count Binary Substrings
  • 原文地址:https://www.cnblogs.com/yliucnblogs/p/11489407.html
Copyright © 2011-2022 走看看