您的位置:首页 > 房产 > 家装 > 电信网络服务商_小程序广告平台_搜索关键词的软件_百度一下官网首页百度一下

电信网络服务商_小程序广告平台_搜索关键词的软件_百度一下官网首页百度一下

2025/7/1 16:04:58 来源:https://blog.csdn.net/eternal__day/article/details/143684388  浏览:    关键词:电信网络服务商_小程序广告平台_搜索关键词的软件_百度一下官网首页百度一下
电信网络服务商_小程序广告平台_搜索关键词的软件_百度一下官网首页百度一下

由于我们上讲复习了前面的所有知识点,所以今天不再去复习之前的知识了,我们直接开始正题。

1.什么是视图?

视图是⼀个虚拟的表,它是基于⼀个或多个基本表或其他视图的查询结果集。视图本⾝不存储数 据,⽽是通过执⾏查询来动态⽣成数据。⽤⼾可以像操作普通表⼀样使⽤视图进⾏查询、更新和管 理。视图本⾝并不占⽤物理存储空间,它仅仅是⼀个查询的逻辑表⽰,物理上它依赖于基础表中的数 据。

2.视图基本概念

  • 视图(View):视图是一个虚拟表,基于一个或多个表的查询结果。视图不存储实际数据,它只是在使用时运行SQL查询来生成结果。
  • 用途:可以简化复杂的隐藏查询、提升数据安全性(字段)、实现数据聚合或某些分区等功能。

3.创建视图

    基本语法

CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;

示例

假设有一个名为sanguo的表,包含学生的idname和成绩。我们可以创建一个视图,筛选出所有数学超过 80 的学生:

解释

  • 该视图see_sanguo将显示所有数学超过 80 的学生。
  • 我们在这里可以看到视图下面有我们刚定义的see_sanguo的视图表
  • 视图可以像表一样查询,例如:SELECT * FROM see_sanguo;

3. 使用视图查询数据

视图一旦创建,就可以像表格一样进行查询:

SELECT * FROM see_sanguo;

视图查询的结果是动态生成的,因此每次执行视图查询时,都是基于原始表当前数据生成的,不需要担心数据同步问题。

4. 修改视图定义

如果需要修改视图的定义,可以使用ALTER VIEWCREATE OR REPLACE VIEW语句。

CREATE OR REPLACE VIEW view_name AS
SELECT new_column1, new_column2, ...
FROM table_name
WHERE new_condition;

示例

我们将see_sanguo的条件修改为数学超过90:

CREATE OR REPLACE VIEW see_sanguo AS
SELECT *
FROM sanguo
WHERE math > 90;

修改后得视图的定义表

5. 删除视图

如果不再需要某个视图,可以使用DROP VIEW删除它。

DROP VIEW view_name;

示例

6. 视图应用程序场景

简化综合

视图可以将复杂的SQL查询封装起来,简化查询过程。例如,通过视图创建聚合或计算字段,用户只需查询视图,而不需要重新编写复杂的SQL语句。

数据安全性

可以通过视图限制用户特定访问数据。例如,只给用户提供特定字段或条件下的数据,而隐藏敏感信息。

数据聚合与分组

视图可以用于创建数据的聚合或分组,例如计算命令、总和等统计数据。

7.观点的优缺点

优点
  • 简单性:视图可以将复杂的查询封装成⼀个简单的查询。例如,针对⼀个复杂的多表连接查询,可 以创建⼀个视图,⽤⼾只需查询视图⽽⽆需了解底层的复杂逻辑。
  • 数据安全性:通过视图,可以隐藏表中的敏感数据。例如,⼀个系统的⽤⼾表中,可以创建⼀个不包含 密码列视图,普通⽤⼾只能访问这个视图,⽽不能访问原始表。
  • 数据更新同步:视图本质上是一个查询,数据更新时自动反映在视图中。
  • 逻辑数据独立性:视图提供了⼀种逻辑数据独⽴性,即使底层表结构发⽣变化,只需修改视图定 义,⽽⽆需修改依赖视图的应⽤程序。使⽤到应⽤程序与数据库的解耦
  • 重命名列:视图允许⽤⼾重命名列名,以增强数据可读性。
缺点
  • 性能问题:ViewQuery每次运行都会重新执行查询,复杂View可能会增加查询负担。
  • 更新限制:有些视图不能直接更新数据(特别是多表连接的视图)。
  • 依赖:视图依赖基础表结构,如果基础表发生改变,视图可能需要重建。

8. 审查的更新限制

视图并不总是可以更新,更新限制取决于视图的复杂性。以下是一些更新限制的情况:

  • 单表视图:仅当视图基于单个表,且不包含聚合、分组等复杂操作时,视图可以更新。
  • 多表视图:基于多表的视图通常是不可更新的。
  • 含有聚合或分组操作的视图:视图中包含GROUP BY、、SUMAVG操作时不可更新。
  • DISTINCT、JOIN 等:含有这些关键字的视图通常也是不可更新的。
检查报告是否可以更新

可以通过IS_UPDATABLE字段来查看视图是否可以更新:

SHOW TABLE STATUS WHERE Name='view_name';

9.注意事项

• 修改真实表会影响视图,修改视图同样也会影响真实表

• 以下视图不可更新:

      创建视图时使⽤聚合函数的视图

      创建视图时使⽤ DISTINCT

      创建视图时使⽤ GROUP BY 以及 HAVING ⼦句

      创建视图时使⽤ UNION 或UNION ALL

      查询列表中使⽤⼦查询

      在FROM⼦句中引⽤不可更新视图

10. 小结

MySQL View提供了一种方便管理复杂查询和提高数据安全性的方式,通过View可以:

  • 封装查询;
  • 实现数据隔离和数据隐藏;
  • 提供聚合或聚合信息。

视图,在性能和数据更新上有一定的限制,使用时要根据业务需求进行权衡。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com