MySQL视图学习笔记——视图与数据表增删改操作对比

MySQL视图学习笔记——视图与数据表增删改操作对比
视图View是一种虚拟数据表本身不会在磁盘中存储真实数据仅保存一条预先定义好的SELECT查询语句每次查询视图时数据库都会执行这条SQL语句从底层原始数据表基表中动态提取数据。而普通数据表Table是物理实体会在硬盘中持久存储数据占用磁盘存储空间。创建数据表使用CREATE TABLE语句执行后会生成物理数据文件用来存放业务数据代码示例CREATE TABLE student(id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20),age INT);创建视图使用CREATE VIEW语句仅保存查询逻辑不会生成物理数据几乎不占用存储空间示例CREATE VIEW v_student ASSELECT id,name FROM student WHERE age 18;修改数据表结构依靠ALTER TABLE可以新增、修改、删除字段直接改动物理存储结构ALTER TABLE student ADD COLUMN gender CHAR(1);ALTER TABLE student MODIFY COLUMN name VARCHAR(30);视图没有独立字段结构只能通过ALTER VIEW改写对应的查询语句ALTER VIEW v_student ASSELECT id,name,gender FROM student WHERE age 18;对视图执行插入、更新数据最终等价于修改底层原始数据表多表联查构建的视图通常不支持数据更新。删除数据表执行DROP TABLE整张表连同全部数据会被永久清除DROP TABLE student;删除视图执行DROP VIEW只会删除查询语句底层数据表和原有数据不会受到任何影响DROP VIEW v_student;视图拥有诸多优势可以封装复杂联查语句简化日常重复查询操作能够管控数据权限只对外暴露部分字段隐藏原始表中的敏感信息还可以屏蔽底层表结构变动减少上层业务代码的修改量。同时视图也存在短板无法建立索引在高频查询场景下性能不足多表连接创建的视图大多无法执行新增与更新操作一旦依赖的基表被删除视图会直接失效。总而言之数据表是持久存放数据的实体容器视图只是封装好的查询脚本所有对视图的数据操作最终都会作用于它所依赖的原始数据表。