MySQL视图

一、MySQL视图是什么?

视图可以理解为虚拟的表,它本身不存储任何实际的数据,而是一个基于一个或多个基表(真实表)的查询语句的封装。你可以像操作普通表一样查询视图,但视图展示的数据其实是实时从基表中计算出来的。

打个比方:基表是仓库里所有的商品明细(包含价格、库存、分类、供应商等),而视图就像是一份“热销商品清单”——这份清单不单独存放商品数据,只是从仓库明细中筛选出“销量>100”的商品,每次查看清单时,都会实时从仓库明细里取最新数据。

二、视图的核心用法

1. 创建视图

基本语法:

CREATE VIEW 视图名 AS
SELECT 字段1, 字段2,... 
FROM 基表1 [JOIN 基表2 ON 关联条件]
[WHERE 筛选条件];

示例
假设有一个真实表 students(学生表),结构如下:

idnameagegenderscore
1张三1890
2李四1985
3王五1860

创建一个“男生成绩视图”:

-- 创建视图:只展示男生的id、姓名、成绩
CREATE VIEW male_students_score AS
SELECT id, name, score 
FROM students 
WHERE gender = '男';
2. 使用视图

视图创建后,查询方式和普通表完全一致:

-- 查询视图(和查普通表一样)
SELECT * FROM male_students_score;

执行结果:

idnamescore
1张三90
3王五60
3. 修改/删除视图
-- 修改视图(替换原有视图)
CREATE OR REPLACE VIEW male_students_score AS
SELECT id, name, score, age 
FROM students 
WHERE gender = '男';

-- 删除视图
DROP VIEW IF EXISTS male_students_score;

三、视图的核心作用

  1. 简化复杂查询:如果有一个需要多表关联、多层筛选的复杂查询,把它封装成视图后,后续只需查询视图即可,无需重复写复杂SQL。
  2. 数据安全与权限控制:可以给不同用户开放不同视图的权限,比如只让财务看“薪资视图”(仅包含姓名、薪资字段),而不让其看到员工的手机号、地址等敏感信息。
  3. 数据抽象:隐藏基表的结构细节,用户只需关注自己需要的字段,无需了解底层表的关联逻辑。

四、注意事项

  • 视图不存储数据:每次查询视图,都会重新执行底层的SELECT语句,基表数据变化后,视图结果也会实时更新。
  • 部分视图支持更新(INSERT/UPDATE/DELETE):但有严格限制(比如视图不能包含GROUP BY、DISTINCT、聚合函数等),大部分场景下视图仅用于查询。

总结

  1. MySQL视图是基于基表查询语句的虚拟表,不存储实际数据,仅封装查询逻辑。
  2. 核心作用是简化复杂查询、控制数据权限、抽象数据结构
  3. 使用方式和普通表一致,但更新操作有严格限制,主要用于查询场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值