MySQL:VIEW视图

概述

MySQL 视图(View)是一种虚拟存在的表,同真实表一样,视图也由列和行构成,但视图并不实际存在于数据库中行和列的数据来自于定义视图的查询中所使用的表,并且是在使用视图时动态生成的

数据库中只存放了视图的定义,并没有存放视图中的数据,这些数据都存放在定义视图查询所引用的真实表中。

使用视图查询数据时,数据库会从真实表中取出对应的数据。视图中的数据是依赖于真实表中的数据的。一旦真实表中的数据发生改变,显示在视图中的数据也会发生改变

视图可以从原有的表上选取对用户有用的信息,那些对用户没用,或者用户没有权限了解的信息,都可以直接屏蔽掉,作用类似于筛选。这样做既使应用简单化,也保证了系统的安全。

MySQL 的视图不支持输入参数的功能,因此交互性上还有欠缺。但对于变化不是很大的操作,使用视图可以很大程度上简化用户的操作。

如果经常需要从多个表查询指定字段的数据,可以在这些表上建立一个视图,通过这个视图显示这些字段的数据

视图与数据表的区别

视图不同于数据表

  • 视图不是数据库中真实的表,而是一张虚拟表,其结构和数据是建立在对数据中真实表的查询基础上的。

  • 存储在数据库中的查询操作 SQL 语句定义了视图的内容,列数据和行数据来自于视图查询所引用的实际表,引用视图时动态生成这些数据。

  • 视图没有实际的物理记录,不是以数据集的形式存储在数据库中的,它所对应的数据实际上是存储在视图所引用的真实表中的。

  • 视图是数据的窗口,而表是内容。表是实际数据的存放单位,而视图只是以不同的显示方式展示数据,其数据来源还是实际表。

  • 视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些 SQL 语句的集合。从安全的角度来看,视图的数据安全性更高,使用视图的用户不接触数据表,不知道表结构

  • 视图的建立和删除只影响视图本身,不影响对应的基本表

视图的优点

视图与表在本质上虽然不相同,但视图经过定义以后,结构形式和表一样,可以进行查询、修改、更新和删除等操作。同时,视图具有如下优点:

  1. 定制用户数据

    聚焦特定的数据在实际的应用过程中,不同的用户可能对不同的数据有不同的要求。

    例如,当数据库同时存在时,如学生基本信息表、课程表和教师信息表等多种表同时存在时,可以根据需求让不同的用户使用各自的数据。学生查看修改自己基本信息的视图,安排课程人员查看修改课程表和教师信息的视图,教师查看学生信息和课程信息表的视图。

  2. 简化数据操作

    在使用查询时,很多时候要使用聚合函数,同时还要显示其他字段的信息,可能还需要关联到其他表,语句可能会很长,如果这个动作频繁发生的话,可以创建视图来简化操作。

  3. 提高数据的安全性

    视图是虚拟的,物理上是不存在的。可以只授予用户视图的权限,而不具体指定使用表的权限,来保护基础数据的安全。

  4. 共享所需数据

    通过使用视图,每个用户不必都定义和存储自己所需的数据,可以共享数据库中的数据,同样的数据只需要存储一次。

  5. 更改数据格式

    使用视图,可以重新格式化检索出的数据,并组织输出到其他应用程序中。

  6. 重用 SQL 语句:

    视图提供的是对查询操作的封装,本身不包含数据,所呈现的数据是根据视图定义从基础表中检索出来的,如果基础表的数据新增或删除,视图呈现的也是更新后的数据。视图定义后,编写完所需的查询,可以方便地重用该视图。

在 MySQL 中操作视图

CREATE VIEW 创建视图

通过 CREATE VIEW 语句在数据库中创建视图:

CREATE [OR REPLACE] VIEW [db_name.] view_name [column_list]
AS 
  SELECT column_lists
  FROM table_name
  [WHERE condition];
  • view_name 在数据库中必须是唯一的,不能与其他表或视图同名
  • 使用 OR REPLACE 选项替换已存在的视图
  • [column_list] 也可以显式指定视图的列列表
  • 如果从视图中选择具有自己的 ORDER BY 子句的查询,则忽略它。
基于另一个视图创建视图

视图可以基于现有的视图创建,这样可以进一步抽象查询逻辑或添加额外的过滤条件。

"""也可以基于另一个视图创建视图"""
CREATE VIEW view_name [column_list]
AS
  SELECT column_list
  FROM another_view
  [...];

假设已经有了一个视图 view_sales_summary,它显示了销售数据的汇总信息,现在想创建一个新的视图 view_top_customers,该视图基于 view_sales_summary 并且只显示销售额最高的前10位客户。

CREATE VIEW view_top_customers
 AS
  SELECT *
  FROM view_sales_summary
  ORDER BY total_sales DESC
  LIMIT 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值