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

MySQL视图与数据表CRUD对比学习笔记

一、视图基础概念

视图(View)是虚拟表,本身不存储真实数据,仅保存查询语句;数据来源于底层基础表,访问视图时动态查询基表数据。

数据表(Table)是实体表,磁盘存储真实行数据,拥有完整字段、索引、约束。

二、创建操作对比

1. 数据表创建

sql

CREATE TABLE student(

id INT PRIMARY KEY AUTO_INCREMENT,

name VARCHAR(20) NOT NULL,

age INT,

class_id INT

);

- 存储:磁盘生成物理文件,分配存储空间

- 约束:可设置主键、外键、非空、自增、唯一、默认值

- 索引:创建后可单独建立索引提升查询

2. 视图创建

sql

CREATE VIEW v_student_class AS

SELECT s.id,s.name,c.class_name

FROM student s

LEFT JOIN class c ON s.class_id=c.id;

- 存储:仅保存SELECT查询逻辑,无物理数据

- 约束:不支持主键、自增、外键,仅继承基表字段约束

- 索引:标准MySQL视图无法建立索引(物化视图除外)

创建核心差异

维度 数据表 视图

存储介质 物理存储真实数据 仅存储查询SQL,无数据

依赖关系 独立存在,不依赖其他表(外键除外) 依赖1张/多张基表,基表删除视图失效

约束支持 完整约束体系 仅复用基表约束,无法新增

三、更新(INSERT/UPDATE)操作对比

1. 数据表更新

sql

-- 新增

INSERT INTO student(name,age) VALUES('张三',18);

-- 修改

UPDATE student SET age=19 WHERE id=1;

- 限制:仅受自身字段约束、事务、触发器限制

- 影响:直接修改磁盘原始数据,所有关联查询同步变化

2. 视图更新(可更新视图)

sql

-- 单表简单视图支持更新

CREATE VIEW v_stu_simple AS SELECT id,name,age FROM student;

UPDATE v_stu_simple SET name='小张' WHERE id=1;

INSERT INTO v_stu_simple(name,age) VALUES('李四',17);

视图不可更新场景

1. 包含多表JOIN连接

2. 使用聚合函数:SUM/COUNT/MAX/GROUP BY

3. DISTINCT、UNION、子查询、计算字段

4. ALGORITHM=TEMPTABLE算法视图

更新核心差异

1. 数据表:无额外限制,可自由增改;视图有严格语法限制,复杂视图无法更新

2. 数据流向:视图更新本质是修改底层基表,视图本身不保存数据

3. 权限:修改视图需要同时拥有视图查询权限+基表修改权限

四、删除操作对比

1. 数据表删除

(1)删除表内数据

sql

DELETE FROM student WHERE id=1; -- 删除单行数据

TRUNCATE TABLE student; -- 清空全表,重置自增主键

(2)删除整张表结构

sql

DROP TABLE IF EXISTS student;

- DROP:直接销毁物理文件,数据、索引、约束全部永久删除,不可恢复(无备份时)

- TRUNCATE:清空数据,保留表结构,速度远快于DELETE

2. 视图删除

(1)删除视图本身(无删除视图数据语法)

sql

DROP VIEW IF EXISTS v_student_class;

- 视图无“删除行数据”操作,如需删数据只能操作基表

- DROP VIEW仅删除查询逻辑,不会影响底层数据表及真实数据

删除核心差异

操作 数据表 视图

删除行数据 支持DELETE/TRUNCATE,直接清除物理数据 不支持,必须操作基表

删除结构 DROP TABLE销毁表+全部数据 DROP VIEW仅删除虚拟查询定义,基表完好

数据丢失风险 高,DROP/TRUNCATE会永久丢失业务数据 无,删除视图不影响原始业务数据

五、视图优缺点总结

优点

1. 简化复杂查询:多表关联逻辑封装,业务端直接查询视图

2. 权限隔离:仅开放部分字段给用户,隐藏敏感字段(手机号、工资)

3. 统一数据口径:复杂统计逻辑统一维护,一处修改全局生效

4. 数据安全:限制用户只能访问视图,无法直接修改底层完整数据表

缺点

1. 性能损耗:每次查询视图都会执行底层SELECT,复杂视图效率低于

http://www.gsyq.cn/news/1643747.html

相关文章:

  • SO-101 Robot From Sim-to-Real With NVIDIA Isaac
  • WindiskWriter:Mac用户制作Windows启动盘的专业解决方案与技术解析
  • USB 控制传输深度剖析:11个标准请求与Windows驱动开发实战
  • 一个中层是怎么突然变强的?看完你就是中层的天花板
  • 【VRP问题】基于遗传算法求解应急物资配送路径最低成本优化问题附Matlab代码
  • YOLOv3 与 RealSense D435i 协同:600张图像训练,实现多目标无序抓取位姿估计
  • 如何用15分钟完成传统需要3小时的Hackintosh配置?OpCore-Simplify的智能革命
  • APKMirror客户端开发实战:构建安全高效的安卓应用下载平台
  • 3 种朴素贝叶斯变体对比:高斯 vs 多项式 vs 伯努利,sklearn 实战 5 分钟
  • Devicetree Specification v0.4 核心属性实战:5分钟掌握 reg、interrupts 与 ranges 配置
  • 2026年电销机器人值不值得用?从成本、效果到选型的完整拆解
  • QGC V5.0 gstreamer视频流在安卓端画面卡顿、冻结,硬件解码失败的问题解决方案
  • LLaMA 2 / ChatGLM 等5款大模型位置编码对比:RoPE vs 绝对 vs 相对
  • Codex 使用额度不够怎么办?Credits、ChatGPT Pro 应该怎么选(2026)
  • 2026年建筑动画行业观察
  • 【OpenHarmony/HarmonyOs 】数学学习报告页:本地统计卡片、正确率与隐私友好学习画像
  • 3步搞定FanControl:Windows风扇智能控制的终极指南
  • LTI 系统因果性与稳定性:从 2 个示例到 5 种常见系统类型的判断法则
  • 深度剖析OnmyojiAutoScript:现代化阴阳师自动化框架技术架构演进
  • 为什么博容安可SOS功能仅限中国大陆?海外留学生选购防身警报器避坑指南
  • 国内EMBA偏向哪些行业?2026综合实力TOP5榜单评测
  • 百度网盘怎么免费满速下载?2026超详细保姆级教程,支持批量下载
  • 【OpenHarmony/HarmonyOs 】每日学习目标系统:todayCount、连续学习与本地激励反馈
  • 【claude code实践】 如何让 Claude Code 理解你的项目结构
  • AI语音机器人好用吗?千创云呼凭什么让快递物流通知效率翻倍还省钱?
  • 终极指南:零成本将安卓设备改造为Armbian服务器系统
  • 官网别只在电脑上看好看:说说移动端这些容易翻车的地方
  • Halcon 标定板像素当量标定:单图法 vs 多图法,3种场景精度对比实测
  • 2026最新2款AI编程工具免费深度对比|中文开发平替权威实测合集
  • 基于STM32单片机的交通灯系统/智能红绿灯信号灯 单片机检测系统2143(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码