搞懂视图!MySQL 数据表、视图核心差异实战总结
一、核心概念区分1. 数据表基表物理存储实体会在磁盘上真实保存行数据、字段结构、索引是数据库存储数据的底层载体。2. 视图虚表逻辑虚拟表不存储真实数据仅保存一条 SELECT 查询语句访问视图时动态从基表计算数据。2.特点为用户集中数据简化用户的数据查询和处理操作。屏蔽数据库的复杂性。简化用户权限的管理。便于数据共享。可以重新组织数据以便输出到其他应用程序中使用。二、创建语法对比数据表 CREATE TABLECREATE TABLE book( 图书编号 CHAR(20) PRIMARY KEY, 书名 VARCHAR(50) NOT NULL, 图书类别 VARCHAR(20) );无字段存储定义仅封装查询逻辑OR REPLACE覆盖已有视图WITH CHECK OPTION限制增改数据必须匹配 WHERE 条件创建仅保存查询文本不占用数据存储空间。视图 CREATE VIEWCREATE OR REPLACE VIEW jsj_book AS SELECT * FROM book WHERE 图书类别计算机 WITH CHECK OPTION;语法格式CREATE [OR REPLACE] VIEW 视图名 [(自定义列名列表)] AS SELECT 查询语句 [WITH [CASCADED | LOCAL] CHECK OPTION];关键字详解OR REPLACE如果同名视图已存在直接覆盖重定义避免视图已存在报错(列名列表)手动指定视图字段别名别名数量必须和SELECT查询字段数量完全一致WITH CHECK OPTION约束通过视图INSERT/UPDATE的数据必须满足WHERE视图筛选条件CASCADED默认递归校验所有嵌套依赖视图的 WHERE 条件LOCAL仅校验当前视图自身 WHERE 条件不检查下层视图创建视图硬性限制SELECT 语句不能包含以下内容FROM子查询、系统变量、预处理参数UNION、聚合函数、GROUP BY、DISTINCT、HAVING多表关联 JOIN多表视图会限制增删改、ORDER BY特殊场景三、修改语法格式1. 修改数据表 ALTER TABLE可增删字段、修改字段类型、增减约束、调整索引、修改表名-- 新增字段 ALTER TABLE book ADD 单价 DECIMAL(6,2); -- 修改字段类型 ALTER TABLE book MODIFY 书名 VARCHAR(100);2. 修改视图 ALTER VIEW仅能重写内部 SELECT 查询逻辑无法修改字段约束、存储结构ALTER VIEW jsj_book AS SELECT 图书编号,书名,单价 FROM book WHERE 图书类别计算机;四、删除语法对比删除数据表 DROP TABLEDROP VIEW IF EXISTS jsj_book;直接删除磁盘中全部数据、表结构、索引若存在视图 / 外键依赖删除会报错。删除视图 DROP VIEWDROP VIEW IF EXISTS jsj_book;仅删除保存的查询语句不会影响底层基表和真实数据仅清除逻辑定义磁盘数据完全保留。五、增删改操作对比核心区别数据表1.天然支持INSERT/UPDATE/DELETE不受额外限制可直接修改磁盘原始数据INSERT INTO book VALUES(TP001,MySQL教程,计算机); UPDATE book SET 单价45 WHERE 图书编号TP001; DELETE FROM book WHERE 图书类别文学;视图仅单表、无聚合函数、无 GROUP BY、无多表连接的视图才可增删改多表 / 聚合视图完全不可更新1.不可更新场景聚合、多表、GROUP BY-- 该视图含GROUP BY无法执行INSERT/UPDATE/DELETE CREATE VIEW sale_avg AS SELECT 书名,AVG(订购册数) FROM jsj_sell GROUP BY 书名;2.限制多表视图一次修改只能操作一张基表不支持同时修改两张表字段WITH CHECK OPTION强制校验新增 / 修改数据符合视图过滤条件。六、查询操作对比相同点查询语法完全一致SELECT 字段 FROM 表/视图 WHERE 条件-- 查表 SELECT * FROM book; -- 查视图 SELECT * FROM jsj_book;不同点查表直接读取磁盘存储数据速度更快查视图执行封装的 SELECT 语句动态关联基表计算结果基表新增字段不会同步到视图基表删除字段会导致视图失效。七、总结数据表是数据存储载体负责永久保存业务原始数据视图是查询封装工具用于简化查询、控制数据访问权限。创建 / 修改 / 删除语法完全分离表操作面向存储结构视图操作面向查询逻辑。DML 操作差异最大数据表自由增删改视图仅简单单表视图支持更新且存在条件校验约束。视图不替代数据表二者搭配使用数据表存原始数据视图对外提供简化、安全的数据访问接