当前位置:   article > 正文

MySQL | 视图_康师傅mysql高级篇

康师傅mysql高级篇

1.视图概念

  • 根据一个表创建一个视图,则这个表称为基表

    视图的构造基于基本表视图
    视图可以被嵌套,一个视图中可以嵌套另一个视图。

  • 视图是一个虚拟表,相当于SELECT语句的封装。

    套着羊皮 SELECT的视图

  • 创建视图或者删除视图本身,不会影响基表。
    在这里插入图片描述

2.为什么要用视图?——查询查询查询!

为了方便查询。重复三遍,记住,只做查询使用!
当只想给特定人看特定的内容时,使用视图可以简化查询。

形象记忆:视图像个魔法镜子,它只显示允许你看到基表的一部分。

(1)优点

将经常使用的查询操作定义为视图,简化开发时对数据库的操作。
与新建字表相比,可以减少数据的冗余。
视图具有隔离性,保护原始数据,有助于数据安全。
当查询比较复杂时,可以创建多个视图,然后将这些视图的结果进行整合,完成复杂查询。

所以,针对视图,不要整那些花里胡哨的,比如增删改!
视图相当一个虚拟窗口,所以对它进行DML(增删改)操作时,即直接对基表进行DML操作。

  • 插入数据INSERT(基表中字段有约束时,插入数据如果不符合约束,则会插入失败)
  • 更新数据UPDATE
  • 删除数据DELETE
    视图中的字段,可能在基表中没有对应字段。比如,根据基表计算出的字段。对于这些字段,是无法执行UPDATEDELETE操作的。
    这段话看看就好,实际操作不建议使用!

(2)缺点

视图过多时,维护成本高

如果实际数据表的结构变更了,我们就需要及时对相关的视图进行相应的维护。特别是嵌套的视图(就是在视图的基础上创建视图),维护会变得比较复杂, 可读性不好,容易变成系统的潜在隐患。因为创建视图的 SQL 查询可能会对字段重命名,也可能包含复杂的逻辑,这些都会增加维护的成本。
所以,在创建视图的时候,你要结合实际项目需求,综合考虑视图的优点和不足,这样才能正确使用视图,使系统整体达到最优。

3.创建视图

CREATE OR REPLACE VIEW 视图可以直接用于创建或修改视图。实际上也基本都是这样写。
.
因为此处还没有讲到修改视图,所以先简单用CREATE VIEW进行介绍。

(1)单表

CREATE VIEW 视图名(字段别名1, 字段别名2, ...)  -- 如果与查询中字段同名,可以省略起别名`(字段别名1, 字段别名2, ...)`
AS
SELECT 字段1, 字段2, ...
FROM 表名
WHERE 过滤条件
  • 1
  • 2
  • 3
  • 4
  • 5

(2)多表

CREATE VIEW 视图名(字段别名1, 字段别名2, ...)  -- 如果与查询中字段同名,可以省略起别名`(字段别名1, 字段别名2, ...)`
AS
SELECT 表名.字段1, 表名.字段2, ...
FROM 表名1, 表名2
ON 表名1.字段 = 表名2.字段;
WHERE 过滤条件
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

(3)基于视图创建视图

视图看做去写代码就好了,代码上没啥区别。

4.查看视图

(1)展示视图

SHOW TABLES;

(2)查看视图的结构

DESC 视图名称

(3)查看视图的详细信息

SHOW CREATE VIEW 视图名称

(4)查询视图中的全部内容

SELECT *
FROM 视图名
  • 1
  • 2

(5)查看视图的属性信息

查看视图信息(显示数据表的存储引擎版本数据行数数据大小等)
SHOW TABLE STATUS LIKE '视图名称';

执行结果显示:注释Comment为VIEW,说明该表为视图,其他的信息为NULL,说明这是一个虚表。

5.修改视图

常见题目:将...限制在...范围内

(1)加一个OR REPLACE就行

可以直接用这段代码进行创建或修改视图

CREATE OR REPLACE VIEW 视图名 
AS
针对基表的查询语句
  • 1
  • 2
  • 3

(2)ALTER VIEW

ALTER TABLE 视图名
AS 
针对基表的查询语句
  • 1
  • 2
  • 3

6.删除视图

DROP VIEW IF EXISTS 视图名

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/777148
推荐阅读
相关标签
  

闽ICP备14008679号