MySQL数据视图学习笔记
钱树瑞 人工智能高本贯通2501一、视图基础概念视图是从一张或多张数据表、其他视图中导出的虚拟表视图本身不会存储物理数据仅保存一条SELECT查询语句每次查询视图时数据库会执行该查询语句从底层原始数据表实时获取数据。数据表是真实存在的物理存储结构会占用磁盘空间完整存储字段、约束、索引与业务原始数据是数据的实际载体。二、视图与数据表 增删改操作对比1. 创建操作对比数据表创建使用CREATE TABLE关键字定义字段名称、数据类型、主键、外键、非空等约束执行后会在数据库生成物理存储文件永久保存数据结构。示例语句CREATE TABLE student(id INT PRIMARY KEY,name VARCHAR(20));视图创建使用CREATE VIEW关键字后接AS关键字搭配完整SELECT查询语句执行后仅保存查询逻辑不会生成物理文件无独立字段约束。示例语句CREATE VIEW v_student AS SELECT id,name FROM student;2. 更新插入、修改、删除操作对比数据表更新无额外限制可正常执行INSERT、UPDATE、DELETE语句操作会直接修改磁盘中存储的原始数据支持所有复杂数据修改场景。视图更新存在严格限制。仅单表查询、不含聚合函数、GROUP BY、DISTINCT、UNION关键字的简单视图才能执行增删改操作对视图的数据修改会同步作用到底层基表多表联查、带统计聚合、分组去重的视图不支持任何数据更新操作仅能查询。3. 删除操作对比删除数据表语法为DROP TABLE IF EXISTS 表名。执行后会直接删除物理存储文件表内所有数据、索引、约束全部永久丢失所有依赖该表创建的视图都会失效无法使用。删除视图语法为DROP VIEW IF EXISTS 视图名。执行后仅删除保存的查询逻辑底层原始数据表、表内数据、约束完全不受任何影响。三、视图的核心使用作用1. 简化复杂查询将多表联查、多条件统计的SQL封装为视图后续业务只需简单查询视图不用重复编写冗长语句。2. 保障数据安全可以创建只包含部分字段的视图对外只开放视图访问权限隐藏数据表中手机号、密码等敏感信息。3. 统一业务口径固定业务统计逻辑所有业务代码统一调用同一张视图避免多人编写查询语句出现统计标准不一致的问题。四、视图优缺点优点降低SQL编写复杂度隔离敏感数据提升数据库访问安全性底层数据表小幅调整时仅需修改视图语句上层业务代码无需改动。缺点无独立物理索引复杂视图查询效率低于直接查询数据表数据更新限制较多多数统计类视图无法修改数据多层嵌套视图会大幅降低查询性能代码可读性变差。五、完整实操流程LibraryDB图书馆案例1. 创建借阅信息视图CREATE VIEW v_borrow_info AS SELECT reader.rd_name,book.bk_name,borrow.br_date FROM reader JOIN borrow ON reader.rd_idborrow.rd_id JOIN book ON book.bk_idborrow.bk_id;2. 查询视图数据SELECT * FROM v_borrow_info;3. 删除无用视图DROP VIEW IF EXISTS v_borrow_info;六、单元核心总结数据表是存储原始业务数据的物理载体支持完整无限制的增删改查删除后数据永久丢失视图是封装查询逻辑的虚拟工具侧重简化查询数据修改存在大量限制删除视图不会损伤底层原始数据。项目开发中数据表用于落地存储真实数据视图用于封装对外展示、统计的查询结果。