MySQL进阶学习三(视图)

一、什么是视图

视图是基于一个或多个表的查询结果构建的虚拟表 ,本身不存储数据 (除非物化视图),只保存查询定义

  • 虚拟表:使用时才执行底层 SQL
  • 不占数据空间:只存定义(普通视图)
  • 简化查询:把复杂 SQL 封装成"表"
  • 安全控制:只暴露部分列/行

二、创建视图语法

  1. OR REPLACE(存在则替换)等价于"存在先删再建",但不报错
sql 复制代码
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
    VIEW 视图名 [(列名1, 列名2, ...)]
    AS
    SELECT 语句
    [WITH [CASCADED | LOCAL] CHECK OPTION];

1. 基本创建

sql 复制代码
CREATE VIEW v_employee AS
SELECT id, name, dept_id, salary
FROM employee
WHERE status = 1;

2. 指定列名

sql 复制代码
CREATE VIEW v_emp (emp_id, emp_name, dept, sal) AS
SELECT id, name, dept_id, salary
FROM employee;

不指定列名时,默认用 SELECT 的列名/别名。

三、查看视图

sql 复制代码
-- 查看所有视图
SHOW FULL TABLES WHERE TABLE_TYPE = 'VIEW';

-- 查看视图定义
SHOW CREATE VIEW v_employee;

-- 查看视图结构
DESC v_employee;

-- 信息模式查询
SELECT * FROM information_schema.VIEWS
WHERE TABLE_NAME = 'v_employee';

四、使用视图

视图使用方式和表一样

sql 复制代码
-- 查询
SELECT * FROM v_employee WHERE salary > 10000;

-- 聚合
SELECT dept_id, COUNT(*) FROM v_emp_dept GROUP BY dept_id;

-- 连接
SELECT * FROM v_employee e JOIN department d ON e.dept_id = d.id;

-- 排序分页
SELECT * FROM v_employee ORDER BY salary DESC LIMIT 10;

五、修改视图

方式 1:CREATE OR REPLACE

sql 复制代码
CREATE OR REPLACE VIEW v_employee AS
SELECT id, name, salary FROM employee WHERE status = 1;

方式 2:ALTER VIEW

sql 复制代码
ALTER VIEW v_employee AS
SELECT id, name, dept_id, salary FROM employee WHERE status = 1;

两者等价,ALTER VIEW 更语义化。

六、删除视图

sql 复制代码
DROP VIEW [if exists] v_employee;

-- 多个
DROP VIEW v1, v2, v3;

-- 存在才删(避免报错)
DROP VIEW IF EXISTS v_employee;
相关推荐
猿人谷1 小时前
Jev:当 AI 不再生成 Token,而是直接做决策
后端·langchain·aigc
苍何1 小时前
WorkBuddy + 腾讯乐享,原来知识库还能这么用
后端
站大爷IP1 小时前
Python的生成器把我坑惨了,原来yield和return的区别这么大
后端
苍何1 小时前
一份来自大厂内部的《AI 原生实践避坑指南》
后端
codigger1 小时前
服务器又卡了?一篇讲透 Linux 性能排查(基础四件套 + perf/strace/火焰图)
linux·后端·性能优化
+VX:Fegn08952 小时前
计算机毕业设计|基于java+ vue共享单车信息系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
苏渡苇2 小时前
Spring Insight 里如何把 Span 画成瀑布时间线
后端·spring·spring cloud·springboot·监控·apm
Charlie_Byte2 小时前
Spring AI 2 手把手:把 filesystem MCP Server 跑通(SSE / stdio + 真调工具)
后端
程序猿DD2 小时前
OctaFuse Gateway 2.11.0:流式请求优化、用户折扣策略与错误契约升级
前端·后端