一文吃透数据库视图(创建 / 查询 / 更新 / 删除)
一、视图的基本概念视图是从基本表中导出的虚表数据库中仅存储视图的定义语句并不存储视图对应的实际数据视图展示的数据仍存放在原始基本表中。视图的查询结果会随基本表的数据变化而实时变化因为每次查询视图本质都是执行其定义中的子查询去基本表中获取最新数据。视图的核心作用简化复杂查询、实现数据访问控制、屏蔽表结构变化对应用的影响。二、视图的创建CREATE VIEW1. 基本语法CREATE VIEW 视图名 [(列名列表)] AS 子查询 [WITH CHECK OPTION];总结仅基于单张基本表、无聚合、无派生列、无分组的视图才能正常执行增删改操作。五、视图的删除DROP VIEW1. 基本语法示例示例⚠️ 注意事项列名列表可选若子查询中包含派生列、聚合列或多表连接有重名列时必须显式指定WITH CHECK OPTION关键约束对视图执行增删改操作时数据库会自动校验操作的行是否满足子查询的条件保证操作后的数据仍能被视图查询到。2. 常见创建场景1单表创建视图带 / 不带 WITH CHECK OPTION场景创建信息系学生的视图仅展示学号、姓名、年龄-- 基础版无校验增删改可能导致数据脱离视图范围 CREATE VIEW IS_Student AS SELECT Sno, Sname, Sage FROM Student WHERE Sdept IS; -- 带校验版增删改时强制校验SdeptIS CREATE VIEW IS_Student AS SELECT Sno, Sname, Sage FROM Student WHERE Sdept IS WITH CHECK OPTION;2多表连接创建视图场景创建信息系选修 1 号课程的学生视图包含学号、姓名、成绩-- 方式1多表逗号连接 CREATE VIEW IS_S1 (Sno, Sname, Grade) AS SELECT Student.Sno, Sname, Grade FROM Student, SC WHERE Student.Sno SC.Sno AND SC.Cno 1 AND Sdept IS; -- 方式2JOIN显式连接推荐可读性更高 CREATE VIEW IS_S1 (Sno, Sname, Grade) AS SELECT Student.Sno, Sname, Grade FROM Student JOIN SC ON Student.Sno SC.Sno WHERE SC.Cno 1 AND Sdept IS;3基于视图创建视图视图嵌套场景创建信息系选修 1 号课程且成绩 90 分以上的学生视图基于已创建的 IS_S1 视图CREATE VIEW IS_S2 AS SELECT Sno, Sname, Grade FROM IS_S1 WHERE Grade 90;4包含派生属性列的视图场景创建学生视图包含学号、姓名、出生年份出生年份 2014 - 年龄派生列CREATE VIEW BI_S (Sno, Sname, Sbirth) AS SELECT Sno, Sname, 2014 - Sage FROM Student;5分组视图带聚合函数 GROUP BY场景创建学生学号及对应平均成绩的视图聚合函数 AVGGROUP BYCREATE VIEW S_G (Sno, Gavg) AS SELECT Sno, AVG(Grade) FROM SC GROUP BY Sno;6全列筛选创建视图场景创建 Student 表中所有女生的视图显式指定列名CREATE VIEW F_Student (F_sno, name, sex, age, dept) AS SELECT * FROM Student WHERE sex 女;三、视图的查询SELECT查询视图的语法与查询基本表完全一致数据库会自动将视图查询转换为对基本表的子查询执行。1. 单视图简单查询场景在信息系学生视图中查询年龄小于 20 岁的学生SELECT Sno, Sage FROM IS_Student WHERE Sage 20; -- 数据库自动转换为对基本表的查询 -- SELECT Sno, Sage FROM Student WHERE Sdept IS AND Sage 20;2. 视图与表连接查询场景查询选修 1 号课程的信息系学生视图 IS_Student 与表 SC 连接SELECT IS_Student.Sno, Sname FROM IS_Student JOIN SC ON IS_Student.Sno SC.Sno WHERE SC.Cno 1;3. 分组视图的查询场景在平均成绩视图 S_G 中查询平均成绩 90 分以上的学生-- 分组视图已聚合直接用WHERE无需再GROUP BY/HAVING SELECT Sno, Gavg FROM S_G WHERE Gavg 90; -- 若直接查基本表需用HAVINGWHERE不能跟聚合函数 SELECT Sno, AVG(Grade) FROM SC GROUP BY Sno HAVING AVG(Grade) 90;核心区别WHERE过滤原始行不能跟聚合函数HAVING过滤分组后的聚合行可跟聚合函数。四、视图的更新INSERT/UPDATE/DELETE视图是虚表对视图的增删改操作数据库会自动转换为对基本表的对应操作语法与操作基本表一致。1. 视图的修改UPDATE场景将信息系学生视图 IS_Student 中学号 201215122 的姓名改为刘辰-- 操作视图 UPDATE IS_Student SET Sname 刘辰 WHERE Sno 201215122; -- 数据库自动转换为操作基本表 UPDATE Student SET Sname 刘辰 WHERE Sno 201215122 AND Sdept IS;2. 视图的插入INSERT场景向信息系学生视图 IS_Student 插入一条学生记录-- 操作视图 INSERT INTO IS_Student VALUES (201215129, 赵新, 20); -- 数据库自动转换为操作基本表补充SdeptIS符合视图条件 INSERT INTO Student (Sno, Sname, Sage, Sdept) VALUES (201215129, 赵新, 20, IS);3. 视图的删除DELETE场景从信息系学生视图 IS_Student 中删除学号 201215129 的记录-- 操作视图 DELETE FROM IS_Student WHERE Sno 201215129; -- 数据库自动转换为操作基本表 DELETE FROM Student WHERE Sno 201215129 AND Sdept IS;4. 视图的更新限制并非所有视图都支持更新以下场景的视图不可更新插入 / 修改部分可删除视图由两个及以上基本表导出视图字段来自字段表达式 / 常数如派生列 2014-Sage不可插入 / 修改可删除视图字段来自聚合函数如 AVG、SUM、COUNT视图定义中包含GROUP BY子句、DISTINCT短语视图定义中有嵌套查询且内层查询的 FROM 子句涉及导出该视图的基本表总结仅基于单张基本表、无聚合、无派生列、无分组的视图才能正常执行增删改操作。五、视图的删除DROP VIEW1. 基本语法-- 普通删除仅删除当前视图若有视图基于它创建则报错 DROP VIEW 视图名; -- 级联删除删除当前视图及所有由它导出的视图部分数据库语法DROP VIEW 视图名 CASCADE; DROP VIEW 视图名 CASCADE;2. 删除注意事项基本表被删除后由该基本表导出的所有视图无法使用但视图的定义仍会保存在数据库字典中需手动执行 DROP VIEW 删除若视图上还导出了其他视图直接普通删除该视图会被数据库拒绝执行需使用级联删除。-- IS_S2基于IS_S1创建普通删除IS_S1会报错 DROP VIEW IS_S1; -- 拒绝执行 -- 级联删除IS_S1及由它导出的IS_S2 DROP VIEW IS_S1 CASCADE; -- 成功执行 -- 删除单个无依赖的视图 DROP VIEW BI_S; -- 成功执行六、视图的核心使用总结 优点简化查询将复杂的多表连接、聚合查询封装为视图后续查询直接调用视图减少代码冗余数据安全仅向用户开放视图的访问权限屏蔽基本表中敏感字段如密码、身份证实现精细化的访问控制视图仅存储定义不存储数据频繁查询复杂视图可能影响性能每次查询都要执行子查询WITH CHECK OPTION是保障视图数据一致性的关键涉及视图增删改时建议添加避免多层视图嵌套过多嵌套会导致查询性能下降且不易排查问题分组视图、聚合视图仅用于查询不可更新需明确视图的使用场景。解耦表结构若基本表的结构发生变化如新增列、修改列名只需修改视图的定义无需修改应用程序的查询语句降低维护成本。

相关新闻

GBase 8s 之 DBACCNOIGN 环境变量介绍

GBase 8s 之 DBACCNOIGN 环境变量介绍

使用 DBACCNOIGN 环境变量,可以指定在发生指定的错误时 dbaccess的行为。未设置 DBACCNOIGN(默认行为):错误发生前已执行的 SQL 语句会被提交。设置 DBACCNOIGN1:发生错误时,退出 dbaccess并自动回滚整个未…

2026/5/17 10:22:27 阅读更多 →
GBase 8a之快速扫描存在空洞表的方法 详解

GBase 8a之快速扫描存在空洞表的方法 详解

主要解决问题(1)传统GBase8a数据库扫描空洞表需要扫描元数据表,效率较低。(2)filefrag只读取操作系统元数据,效率较高。使用方式(1)将脚本部署在一个复合节点的/home/gbase/sweep下&…

2026/5/17 0:37:27 阅读更多 →
强烈安利! 专科生专属降AIGC平台 千笔·降AIGC助手 VS 知文AI

强烈安利! 专科生专属降AIGC平台 千笔·降AIGC助手 VS 知文AI

在AI技术迅速发展的今天,越来越多的学生开始借助AI工具辅助论文写作,以提升效率和内容质量。然而,随之而来的“AI率超标”问题却让许多学生陷入困境。随着查重系统对AI生成内容的识别能力不断增强,论文中若存在过多AI痕迹&#xf…

2026/7/2 23:00:11 阅读更多 →

最新新闻

借助冰淇淋车趣味学 Vim 操作,快速上手完整游戏攻略来啦!

借助冰淇淋车趣味学 Vim 操作,快速上手完整游戏攻略来啦!

借助冰淇淋车学习 Vim 操作 在这里,冰淇淋车就是你的光标,小镇则代表你的文本。你可以用这种有趣的方式学习 Vim 操作。快 玩完整游戏 试试演示版 ↓ 快速体验一关 你只需使用 h j k l 键,就能将冰淇淋车开到顾客面前。玩完整游戏 → 玩法说明…

2026/7/3 4:33:13 阅读更多 →
第94题 2026年国家级科研痛点 IGBT模块用高导热硅凝胶与灌封材料

第94题 2026年国家级科研痛点 IGBT模块用高导热硅凝胶与灌封材料

2026年国家级科研痛点 IGBT模块用高导热硅凝胶与灌封材料 痛点直陈 当前1200V至3300V新能源车及轨道交通用IGBT功率模块,封装材料陷入四个死结无法动弹:一是导热系数想做到2.5W/(mK)以上,胶水粘度就飙升,灌进微米级细缝必裹气泡&a…

2026/7/3 4:31:12 阅读更多 →
Django分页封装

Django分页封装

page_data.pyfrom django.utils.safestring import mark_safe from copy import deepcopy class PageData:def __init__(self,request,queryset,page_size1,page_num3,page_parampage):request:请求queryset:数据表的查询结果pagesize:一页显示多少条数据page_num:当前页面显示…

2026/7/3 4:29:12 阅读更多 →
贴合厂房工况 给廊坊食品无尘车间选择净化板

贴合厂房工况 给廊坊食品无尘车间选择净化板

廊坊紧邻京津,本地聚集大量加工企业,食品净化车间、无尘厂房新建改造需求常年稳定。不少采购负责人挑选净化板只对比出厂价格,忽略本地车间蒸汽大、频繁冲洗消杀、昼夜温差大的特点,低价洁净墙板使用不久就出现板面生锈、板材吸水…

2026/7/3 4:27:12 阅读更多 →
企业AI生产遇瓶颈,可观测性工具如何升级破局?

企业AI生产遇瓶颈,可观测性工具如何升级破局?

AI可观测性:现状与挑战 这看似是个简单的问题,但如今却没有令人满意的答案。随着企业纷纷将AI投入生产,发现用于监控传统软件的工具无法直接应用于AI系统。根本原因在于,AI出现故障的方式与软件不同,它不会抛出清晰的错…

2026/7/3 4:25:11 阅读更多 →
TD3 护照识别难点分析及兴通物联多形态护照识别设备集成实践

TD3 护照识别难点分析及兴通物联多形态护照识别设备集成实践

TD3 规格护照 MRZ 机读码是涉外身份核验的核心采集对象,两行 44 位固定格式字符对扫码设备光学成像、OCR 纠错算法、环境抗干扰能力提出较高门槛。不少项目采用通用扫码设备采集时常出现反光误读、识别成功率偏低、系统适配受限等问题。本文从 MRZ 识别技术难点出发…

2026/7/3 4:25:11 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻