Skip to content

Mysql 中的视图

统计信息:字数 2739 阅读6分钟

视图是基于一个或多个基本表的查询结果的虚拟表。它是一个逻辑概念,不实际存储数据,但可以像基本表一样使用。视图是通过 SELECT 语句创建的,并可以对其进行查询、插入、更新和删除等操作。

视图的主要作用是简化复杂查询和保护数据的安全性。通过创建视图,可以隐藏底层表结构和数据,只暴露需要的信息给用户。视图还可以将多个表的数据合并到一个虚拟表中,简化查询操作。

1、特点

  • 不存储实际数据,只保存查询定义
  • 可以像基本表一样使用,进行CRUD操作
  • 可以简化复杂查询和保护数据安全

2、优点

简化查询:通过创建视图,可以将复杂的查询操作封装成一个简单的查询语句,并且可以重复使用。

数据安全:通过视图,可以隐藏底层表的结构和数据,只暴露必要的信息给用户。可以给用户授予对视图的访问权限,而不直接访问基本表,从而提高数据的安全性。

数据一致性:通过视图,可以将多个相关的表的数据合并到一个虚拟表中,保证了数据的一致性。

3、缺点

查询效率:视图的查询效率可能会低于直接查询基本表,因为视图需要在查询时动态生成结果。

更新限制:由于视图是基于基本表的查询结果,对视图的更新操作可能会受到限制。例如,视图中使用了聚合函数或 GROUP BY 子句,则不能对视图进行更新。

存储空间:虽然视图不存储实际数据,但是需要占用一定的存储空间来保存查询定义。

4、用途

简化复杂查询:通过将复杂的查询逻辑封装到视图中,可以简化应用程序中的查询操作。

数据安全性:视图可以限制用户对底层表的访问权限,从而提供更高的数据安全性和隐私保护。

数据抽象和封装:通过视图,可以将多个表的数据抽象为一个虚拟表,简化数据模型和应用程序开发。

性能优化:视图可以预先计算和存储结果集,以提高查询性能,并避免重复执行复杂查询。

基本使用

视图的增删和表类似

CREATE VIEW view_name AS
SELECT column1, column2
FROM table1, table2
WHERE conditions;

案例

create table t(quantity int, price int);

insert into t values (3,50);

create view view_t as select quantity,price,quantity*price from t;

select * from view_t;

CREATE VIEW view_t2(qty,price,total) AS SELECT quantity,price,quantity*price FROM t;

参考链接

https://blog.csdn.net/qq_21891743/article/details/132590386

https://blog.csdn.net/2301_78341899/article/details/131533874


Last update: November 9, 2024