数据视图博客笔记 📅 2026/7/6 4:49:59 一、视图基础概念1.视图是虚拟表本身不存储真实数据仅保存一条查询SQL语句访问视图时会动态执行绑定的查询从底层基表中提取数据。数据表是物理实体会在磁盘存储真实行数据、占用存储空间。2. 视图核心作用1 简化复杂多表查询把常用查询封装成视图直接 select * from 视图名 调用2 屏蔽数据库的复杂性。3简化用户权限管理。二、视图 vs 数据表创建、修改、删除对比一创建操作对比1. 创建数据表语法CREATE TABLE 表名(字段1 类型 约束,字段2 类型 约束);特点分配磁盘空间写入字段结构、存储真实数据永久占用存储。2. 创建视图虚拟表语法CREATE [OR REPLACE] VIEW 视图名 ASSELECT 列 FROM 基表 WHERE 条件;OR REPLACE 视图存在时直接覆盖更新定义。特点仅保存查询语句不存储任何数据无磁盘数据占用。创建示例对比1. 创建学生物理表CREATE TABLE student(sid INT PRIMARY KEY,sname VARCHAR(20),score INT);-- 2. 创建学生成绩视图基于student表CREATE VIEW v_student_score ASSELECT sid,sname,score FROM student WHERE score60;二修改操作对比1. 修改数据表结构修改字段、新增字段、删除字段 ALTER TABLE修改表内真实数据 UPDATE / INSERT / DELETE 会永久改动底层存储数据修改表结构ALTER TABLE student ADD age INT;修改表数据UPDATE student SET score90 WHERE sid1;2. 修改视图分两类① 修改视图定义修改绑定的查询语句ALTER VIEW v_student_score ASSELECT sid,sname,score,age FROM student WHERE score60;仅更换视图对应的查询逻辑不会改动基表任何数据。② 通过视图修改底层基表数据视图本身无数据 UPDATE/INSERT/DELETE 视图本质是操作原始基表通过视图更新学生分数实际修改student表UPDATE v_student_score SET score88 WHERE sid1;限制多表连接视图、聚合函数视图、去重视图无法执行增删改。三删除操作对比1. 删除数据表DROP TABLE IF EXISTS student后果磁盘中表结构、全部存储数据、索引全部清除数据彻底丢失。2. 删除视图DROP VIEW IF EXISTS v_student_score;后果仅删除视图保存的查询语句底层原始数据表、数据完全不受影响。四.视图与数据表核心区别1存储本质数据表是物理实体磁盘存真实数据视图是虚拟表只能存查询SQL且没有数据2创建语句数据表CREATE TABLE)视图CREATE VIEW)3修改结构数据表ALTER TABLE);视图ALTER VIEW)4删除语句数据表DROP TABLE);视图DROP VIEW)5使用场景数据表是永久存储业务原始数据视图是封装查询、简化开发和权限控制五.总结(1)视图只是查询语句的封装和物理数据表本质完全不同(2)增删改视图定义只会改变查询逻辑不会影响原始数据(3)通过视图增删改数据等价于直接操作底层基表多表聚合视图不支持数据修改(4)删除视图不会丢失业务数据删除数据表会彻底丢失存储内容生产环境谨慎删表。