我在夏理当农码 - CSDN: dio夹心小面包

『MySQL』视图

  |   0 评论   |   15 浏览

1 什么是视图

这里的视图与前文关于事务中所提到的View无关;

视图是MySQL中的一种虚拟表, 临时表, 是MySQL通过视图查询所建立的一张临时表;

虽然是一张临时表, 但也是一张真实存在的表, 为查询结果的一种映射;

当对视图进行修改时, 修改操作会映射至主表, 相对的, 当对主表进行修改时, 同样会映射到视图;


2 视图的使用

  • 创建视图

    CREATE VIEW view_name AS SELECT xxxx;
    
    • 示例

      假设存在一张表;

      mysql> select * from stu;
      +----+----------+--------+
      | id | name     | sex    |
      +----+----------+--------+
      |  1 | LiuYi    | Female |
      |  2 | ChenEr   | Male   |
      |  3 | ZhangSan | Female |
      |  4 | LiSi     | Male   |
      |  5 | WangWu   | Male   |
      |  6 | ZhaoLiu  | Female |
      +----+----------+--------+
      6 rows in set (0.005 sec)
      

      对其进行创建视图, 结果为:

      当视图创建后, 当前数据库内将会存在一张新表(视图);

  • 修改视图

    通常对视图进行CURD操作时与正常表无异, 但在上文中, 我们提到, 当修改视图数据时, 原表会受影响, 而当原表数据进行修改时, 同样会影响视图;

    可以看到, 当对视图进行UPDATE操作时, 原表中的数据一样会受影响;

    相反也是如此, 当对原表进行修改时, 修改同样会映射到视图中;

  • 视图的删除

    DROP VIEW view_name;
    

    该语句与对表的语句类似, 只不过这里的删除对象不是表而是视图, 因此采用DROP VIEW;


3 视图的规则限制

  1. 视图与表一样, 需要唯一命名, 不能出现同名视图或表;

  2. 一张表可以存在无数目限制的视图, 但需要考虑复杂查询为视图之后的性能影响;

  3. 视图无法添加索引, 也不能有关联的触发器或者默认值;

  4. 视图可以提高安全性, 但必须有足够的访问权限;

  5. 创建视图时可以建立ORDER BY规则, 但若是在视图中进行ORDER BY查询, 那么原有的ORDER BY将被覆盖;

  6. 视图可以与表一起使用;


标题:『MySQL』视图
作者:orion
地址:http://orionpeng.top/articles/2025/11/26/1764141210645.html

评论

发表评论


取消