当前位置: 首页 > news >正文

数据视图学习博客笔记(含数据表对比)

一、视图基础概念

视图是虚拟表,不存储真实物理数据,仅存储一条 SELECT 查询逻辑;数据表是物理实体,会持久保存全部数据。二者核心操作(创建、更新、删除)存在明显差异。

二、创建操作对比

1. 数据表创建

语法CREATE TABLE 表名(字段1 类型,字段2 类型...);

特点:分配磁盘存储空间,定义字段、约束、主键、外键,数据永久落地。

示例:

sql

CREATE TABLE students( id INT PRIMARY KEY, name VARCHAR(20), gender CHAR(1) );

2. 视图创建

语法CREATE [OR REPLACE] VIEW 视图名 AS SELECT 查询语句;

特点:无物理存储,仅保存查询逻辑,不定义独立字段约束;OR REPLACE可直接覆盖旧视图。

示例:

sql

CREATE VIEW v_male AS SELECT * FROM students WHERE gender='男';

创建核心区别

表:开辟存储空间,定义完整数据结构;

视图:仅保存查询语句,无存储分配,依赖已有数据表。


三、更新(增删改)操作对比

1. 数据表更新

无强制限制,支持INSERT/UPDATE/DELETE,可修改任意字段、新增、删除行,不受查询条件约束。

sql

INSERT INTO students VALUES(101,'张三','男'); UPDATE students SET name='张三丰' WHERE id=101; DELETE FROM students WHERE id=101;

2. 视图更新

存在严格限制,仅单表、无聚合、无分组的视图才可更新;多表关联、含 AVG/COUNT/GROUP BY 的视图禁止更新。

额外约束WITH CHECK OPTION强制修改 / 新增数据必须匹配视图 WHERE 条件,否则报错。

sql

-- 可更新单表视图 CREATE VIEW v_male AS SELECT * FROM students WHERE gender='男' WITH CHECK OPTION; UPDATE v_male SET name='张三丰' WHERE id=101; -- 多表聚合视图无法执行UPDATE CREATE VIEW v_avg_score AS SELECT major,AVG(score) FROM students JOIN scores GROUP BY major; UPDATE v_avg_score SET avg_score=90; -- 执行报错

更新核心区别 (注意

  • 表:自由增删改,无逻辑限制;
  • 视图:受查询定义约束,聚合、多表视图无法更新,可附加数据校验约束;

四、删除操作对比

1. 删除数据表

语法:DROP TABLE [IF EXISTS] 表名;

后果:彻底销毁物理存储、全部数据、索引、约束,关联视图会失效;

sql

DROP TABLE IF EXISTS students;

2. 删除视图

语法:DROP VIEW [IF EXISTS] 视图名;

后果:仅删除查询逻辑,底层数据表、真实数据完全不受影响;

sql

DROP VIEW IF EXISTS v_male;

删除核心区别 (注意

  • 表:删除实体与全部数据,影响所有依赖对象;
  • 视图:仅删除查询封装,底层原始数据完好无损。

五、视图三大核心价值

  1. 简化查询:多表关联、复杂统计逻辑封装,不用重复编写长 SQL;
  2. 数据安全:隐藏手机号、身份证等敏感字段,分配用户仅访问视图权限;
  3. 逻辑解耦:底层表结构调整时,只需修改视图定义,上层业务代码无需改动;

六、整体总结表格

表格

操作类型数据表 Table视图 View
存储特性物理存储,永久保存数据虚拟表,仅存查询语句,无数据
创建方式CREATE TABLE,定义字段与约束CREATE VIEW,基于已有表查询
更新权限完全支持 INSERT/UPDATE/DELETE仅单表无聚合视图可更新,多表 / 统计视图禁止更新
删除影响销毁数据、结构、索引仅删除查询逻辑,底层数据不变
安全作用无原生字段隐藏能力可隔离敏感字段,实现权限管控
http://www.jsqmd.com/news/1132403/

相关文章:

  • 5个VADER情感分析技巧:社交媒体情感分析终极指南
  • 01-PEFT源码阅读-项目总览与设计理念
  • dbus的如何使用教程以及相关概念
  • 酷哇科技递表:从无人环卫成长起来的具身独角兽
  • Redis——分布式锁
  • 【windows】安装MiMoCode并使用
  • 计组面试--h自用
  • Lua--协同线程与文件IO
  • 小红书博主都在偷偷用的AI工具,不用懂代码就能自动运营
  • 从Copilot到Agent:AI编程助手的演进与未来
  • logback-spring.xml 完整生产模板
  • 完整RAG工作流达成!手把手教你使用NAS部署企业生产级AI知识库
  • 2000+机柜怎么管?数据中心U位资产管理方案拆解
  • CSS View Transitions:页面过渡要连续,也要可控
  • 智能办公本X2:端侧AI驱动的手写语音协同工作流
  • Java 面试:ConcurrentHashMap 为什么线程安全?
  • Lua--基础入门
  • 库存并发安全控制的架构设计
  • 谷歌两款AI学习工具大揭秘:NotebookLM与Learn About谁更胜一筹?
  • MySQL视图学习笔记——视图与数据表增删改操作对比
  • 多服务上线日记一:
  • Windows 7 Problem Steps Recorder
  • 5分钟掌握Spectralizer:OBS直播音频可视化插件终极配置指南
  • 大语言模型解码策略与低资源部署技术详解
  • 机器人操作鲁棒性:当灵巧手遇上真实世界的不确定性
  • LinkedIn钓鱼攻击深度解析:识别伪装官方通知与账户安全防护指南
  • 别再硬写提示词了!LangChain PromptTemplate从入门到实战
  • 在ASP.NET MVC中对表进行通用的增删改
  • Selenium 高级进阶操作详解
  • p006-py文件编译成pyd