数据库视图讲解(view)
一、为什么需要视图
二、视图的讲解
三、总结
一、为什么需要视图
视图一方面可以帮我们使用表的一部分而不是所有的表,另一方面也可以针对不同的用户制定不同的查询视图。
比如,针对一个公司的销售人员,我们只想给他看部分数据,而某些特殊的数据,比如采购的价格,则不会提供给他。
再比如,人员薪酬是个敏感的字段,那么只给某个级别以上的人员开放,其他人的查询视图中则不提供这个字段。
刚才讲的只是视图的一个使用场景,实际上视图还有很多作用。
二、视图的讲解
2.1 视图的核心概念
- 定义:
视图(View)是数据库中的一种虚拟表,基于一个或多个基表的 SQL 查询结果集 动态生成数据。它本身不存储数据,而是实时从基表中提取数据。
- 特点:
动态性:每次查询视图时,都会执行其背后的 SQL 语句。
逻辑抽象:隐藏底层表的复杂性,提供简化的接口。
安全性:通过权限控制限制用户直接访问敏感数据。

2.2. 视图的作用
(1) 简化复杂查询
将多表 JOIN、聚合计算、子查询等复杂逻辑封装成视图,用户可直接查询视图,无需重复编写复杂 SQL。
-- 创建一个统计各部门平均工资的视图
CREATE VIEW dept_avg_salary AS
SELECT department_id, AVG(salary) AS avg_salary
FROM employees
GROUP BY department_id;
(2) 数据安全性
通过视图限制用户访问基表的特定列或行。
-- 创建一个只显示员工姓名和部门的视图(隐藏薪资信息)
CREATE VIEW employee_info AS
SELECT name, department_id
FROM employees;
(3) 逻辑独立性
当基表结构变更时(如字段重命名或删除),可通过修改视图减少对应用程序的影响。
(4) 重用 SQL 逻辑
将常用的查询逻辑封装为视图,供多个业务场景复用。
2.3. 视图的分类

2.4. 创建与管理视图的语法
(1) 创建视图
CREATE [OR REPLACE] VIEW view_name AS
SELECT column1, column2, ...
FROM base_table
WHERE condition;
(2) 查询视图
SELECT * FROM view_name;
(3) 修改视图
- 直接使用 CREATE OR REPLACE VIEW 覆盖原有定义。
- 部分数据库支持 ALTER VIEW 语法。
(4) 删除视图
DROP VIEW view_name;
2.5. 使用场景
- 数据汇总:生成部门统计、销售报表等聚合视图。
- 字段过滤:隐藏敏感字段(如密码、薪资)。
- 简化 JOIN:预定义多表关联逻辑,降低查询复杂度。
- 兼容性适配:屏蔽底层表结构变更对业务的影响。
2.6 . 示例:综合应用
场景:统计订单总额并按地区分组
-- 创建基表
CREATE TABLE orders (order_id INT PRIMARY KEY,region VARCHAR(50),amount DECIMAL(10, 2)
);-- 插入示例数据
INSERT INTO orders VALUES (1, 'North', 100.00), (2, 'South', 200.00);-- 创建视图
CREATE VIEW region_sales AS
SELECT region, SUM(amount) AS total_sales
FROM orders
GROUP BY region;-- 查询视图
SELECT * FROM region_sales;
2.7. 不同数据库的视图特性

三、总结
视图优点
1. 操作简单
将经常使用的查询操作定义为视图,可以使开发人员不需要关心视图对应的数据表的结构、表与表之间的关联关系,也不需要关心数据表之间的业务逻辑和查询条件,而只需要简单地操作视图即可,极大简化了开发人员对数据库的操作。
2. 减少数据冗余
视图跟实际数据表不一样,它存储的是查询语句。所以,在使用的时候,我们要通过定义视图的查询语句来获取结果集。而视图本身不存储数据,不占用数据存储的资源,减少了数据冗余。
3. 数据安全
MySQL将用户对数据的访问限制在某些数据的结果集上,而这些数据的结果集可以使用视图来实现。用户不必直接查询或操作数据表。这也可以理解为视图具有隔离性。视图相当于在用户和实际的数据表之间加了一层虚拟表。

同时,MySQL可以根据权限将用户对数据的访问限制在某些视图上, 用户不需要查询数据表,可以直接通过视图获取数据表中的信息 。这在一定程度上保障了数据表中数据的安全性。
4. 适应灵活多变的需求
当业务系统的需求发生变化后,如果需要改动数据表的结构,则工作量相对较大,可以使用视图来减少改动的工作量。这种方式在实际工作中使用得比较多。
5. 能够分解复杂的查询逻辑
数据库中如果存在复杂的查询逻辑,则可以将问题进行分解,创建多个视图获取数据,再将创建的多个视图结合起来,完成复杂的查询逻辑。
视图不足
如果我们在实际数据表的基础上创建了视图,那么, 如果实际数据表的结构变更了,我们就需要及时对相关的视图进行相应的维护 。特别是嵌套的视图(就是在视图的基础上创建视图),维护会变得比较复杂,可读性不好,容易变成系统的潜在隐患。因为创建视图的 SQL 查询可能会对字段重命名,也可能包含复杂的逻辑,这些都会增加维护的成本。
实际项目中,如果视图过多,会导致数据库维护成本的问题。
相关文章:
数据库视图讲解(view)
一、为什么需要视图 二、视图的讲解 三、总结 一、为什么需要视图 视图一方面可以帮我们使用表的一部分而不是所有的表,另一方面也可以针对不同的用户制定不同的查询视图。 比如,针对一个公司的销售人员,我们只想给他看部分数据,…...
TQTT_KU5P开发板教程---文件的烧写与程序固化
文档功能介绍 本文档所描述的为文件的烧写固化,利用spi芯片将程序固化带芯片上,可以让开发板在重新上电时也可以跑程序。我们所使用的芯片型号为mt25qu256-spi-x1_x2_x4.本次实验采用的在led_shift项目的基础上将流水灯程序固化到flash芯片上,…...
进度管理__制订进度计划_资源平衡和资源平滑
本文讲解的资源平衡与资源平滑,是制订进度计划的工具与技术的第3项: 资源优化。 1. 资源平衡 资源平衡是为了在资源需求与资源供给之间取得平等, 根据资源制约因素对开始日期和完成日期进行调整的一种技术。 如果共享资源或关键资源只在特定…...
【ISP】ISP pipeline(AI)
ISP Pipeline 全流程概览 ISP(Image Signal Processing,图像信号处理)流程通常从原始 Bayer 数据出发,经过一系列模块处理,逐步完成图像校正和增强,最终生成用于显示或编码的标准图像。常见处理模块包括&a…...
C++ RAII 的用途及业务代码实现案例
C RAII 的用途及业务代码实现案例 RAII 的核心概念 RAII (Resource Acquisition Is Initialization,资源获取即初始化) 是 C 的核心编程范式,其核心思想是: 资源获取与对象构造绑定资源释放与对象析构绑定利用 C 对象生命周期自动管理资源…...
RVOS-2.基于NS16550a ,为os添加终端交互功能。
2.1 实验目的 为os添加uart功能,通过串口实现开发板与PC交互。 2.1 硬件信息 QEMU虚拟SoC含有 虚拟NS16550A设备 。 不同的地址线组合(A2、A1、A0)对应的读写模式和寄存器如下所示: 2.2 NS16550a 的初始化 线路控制寄存器&#…...
#SVA语法滴水穿石# (004)关于 ended 和 triggered 用法
在 SystemVerilog 断言(SVA, SystemVerilog Assertions)中,ended 是一个用于 序列(sequence) 的关键字,它表示某个序列(sequence)在特定时间点已经成功匹配(即“结束”)。 ended 主要用于 同步不同序列的时间关系,尤其是在多序列组合或属性(property)中需要对齐时…...
软件学报 区块链论文 截止2025年4月 录用汇总 附pdf下载
截止 2025年4月 软件学报 2024年 区块链论文 录用汇总 附pdf下载 1 Title: 基于多父链辅助工作量证明共识机制的后量子区块链系统 Authors: Key words: 区块链;后量子密码;共识机制;辅助工作量证明 Abstract: 随着量子计算机的发展,对于以传统椭圆曲线数字签名为基石的公…...
损失函数篇——针对YOLO-MIFIN模型
1. 总损失函数(公式9) L all λ conf L conf λ cls L cls λ loc L loc (9) L_{\text{all}} \lambda_{\text{conf}} L_{\text{conf}} \lambda_{\text{cls}} L_{\text{cls}} \lambda_{\text{loc}} L_{\text{loc}} \tag{9} LallλconfLconfλ…...
【MySQL 数据库】增删查改操作CRUD(上)
🔥博客主页🔥:【 坊钰_CSDN博客 】 欢迎各位点赞👍评论✍收藏⭐ 目录 1. CRUD 简介 2. Create -- 新增 2.1 语法 2.2 练习 3. Retrieve -- 检索 3.1 Select -- 查询 3.1.1 全列查询 3.1.2 指定列查询 3.1.3 表达式查询 3.…...
pycharm 有智能提示,但是没法自动导包,也就是alt+enter无效果
找到file->settings->editor->inspections 把python勾选上,原来不能用是因为只勾选了一部分。...
web前端: 什么是web?
web前端指的是利用HTML、CSS、JavaScript等各种web技术,做出能在浏览器上运行且用户可见的界面,比如网站网页、APP软件界面、游戏前端界面等。web前端主要包括web全局架构、web视觉表现和web交互效果这三部分。 WEB发展史 Web(World Wide We…...
Java 开发中主流安全框架的详细对比,涵盖 认证、授权、加密、安全策略 等核心功能,帮助开发者根据需求选择合适的方案
以下是 Java 开发中主流安全框架的详细对比,涵盖 认证、授权、加密、安全策略 等核心功能,帮助开发者根据需求选择合适的方案: 1. 主流安全框架对比表 框架名称类型核心功能适用场景优点缺点官网/文档Spring Security企业级安全框架认证、授…...
Linux网络编程——TCP协议格式、可靠性分析
目录 一、前言 二、TCP协议格式 三、TCP的可靠性 TCP协议的确认应答机制 总结 四、TCP协议的缓冲区及流量控制 五、 TCP流量控制 六、TCP报文类型 标记位 一、前言 在上一篇文章中,我们重点介绍了UDP协议格式的一些内容。在本文中介绍的便是TCP协议格式的…...
【深度学习】Downstream Model:预训练模型的下游应用与微调技术
Downstream Model:预训练模型的下游应用与微调技术 文章目录 Downstream Model:预训练模型的下游应用与微调技术1 什么是Downstream Model(下游模型)2 预训练模型与下游任务的关系3 微调技术与迁移学习微调的必要性高效迁移学习参…...
C# ref out关键字 理解学习记录
ref 在传参是可以以指针的方式传递,而不是传参数的值 举例,函数返回void ,局部变量要传参后得到结果: ref传参前要实例化赋值,而函数体内不一定要赋值 out 传参前不一定要赋值,而函数体内一定要赋值 ,与r…...
网络建设与运维神州数码DCN VRF虚拟路由转发 路由表隔离
作用: 通过在一台路由器或者三层交换机上创建多张路由表实现数据的隔离,常用与MPLS VPN、防火墙.... 如果发送的包在同一VRF中,则查表,查找到匹配的路由条目后,将指示的端口转发给下一跳 如果不在同一VRF中则丢弃。…...
Python中的AdaBoost分类器:集成方法与模型构建
引言 在机器学习领域,集成方法(Ensemble Methods)是一种通过结合多个基学习器来提高模型性能的技术。AdaBoost(Adaptive Boosting)是集成方法中的一种经典算法,它通过迭代训练多个弱分类器,并将…...
11:00开始面试,11:08就出来了,问的问题有点变态。。。
从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到8月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…...
大模型本地部署系列(1) Ollama的安装与配置
一. Ollama简介 Ollama 是一个 本地化的大模型运行工具,可以让你在自己的电脑(比如Mac、Windows、Linux)上直接下载和运行各种开源的大型语言模型(比如 LLaMA 3、Mistral、Gemma 等),而无需依赖互联网或云…...
宝塔面板数据库管理页面打不开,提示405 Not Allowed
宝塔面板数据库的管理按钮打开,提示405 Not Allowed 一般是php版本不匹配。 PHPMyAdmin 4.x PHP 5.2:安装 phpMyAdmin 4.1 PHP 5.3/5.4:安装 phpMyAdmin 4.4 PHP 5.5:安装 phpMyAdmin 4.4 PHP 5.6:安装 phpMyAdmin 4…...
文件上传漏洞原理学习
什么是文件上传漏洞 文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。“文件上传” 本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全&#…...
数字的乘阶运算
求数字的乘阶: 例如:6的乘阶运算:6*5*4*3*2*1 例如:3的乘阶运算:3*2*1 class Program{static void Main(string[] args){Console.WriteLine("请输入数字:");int num_01 Convert.ToInt32 (Con…...
OpenCV——图像融合
OpenCV——图像融合 一、引言1.1 图像融合分类 二、C代码实现三、效果展示3.1 标准球3.2 铝制底座 一、引言 在许多计算机视觉应用中(例如机器人运动和医学成像),需要将来自多幅图像的相关信息集成到一幅图像中。这种图像融合将提供更高的可靠性、准确性和数据质量…...
基于 Spring Boot 瑞吉外卖系统开发(四)
基于 Spring Boot 瑞吉外卖系统开发(四) 新增分类 新增分类UI界面,两个按钮分别对应两个UI界面 两个页面所需的接口都一样,请求参数type值不一样,type1为菜品分类,type2为套餐分类。 请求方法都为POST。…...
C语言for循环嵌套if相关题目
一、题目引入 以下代码程序运行结果是多少? 二、思路解析 进入一个for循环 a<100 进入第一个if b1不大于20为假 进入第二个if b4 a这时a自增为2 当b4时,满足第二个if条件 1.b4,a2 当b7时,满足第二个if条件 2.bb37,a3 当b10时,满足第二个if条件 …...
springAOP终极总结
开头先大致说一下bean的生命周期 创建 Bean 实例 → 填充属性 → 初始化前: → 所有 postProcessBeforeInitialization(bean, name) 执行 init 方法(比如 PostConstruct) → 所有 postProcessAfterInitialization(bean, name) OKÿ…...
紫光展锐5G SoC T8300:影像升级,「定格」美好世界
影像能力已成为当今衡量智能手机性能的重要标尺之一。随着消费者对手机摄影需求日益提升,手机厂商纷纷在影像硬件和算法上展开激烈竞争,力求为用户带来更加出色的拍摄体验。 紫光展锐专为全球主流用户打造的畅享影音和游戏体验的5G SoC——T8300&#x…...
视频设备轨迹回放平台用EasyCVR打造变电站智慧消防远程集中视频监控方案
一、方案背景 近年来,电力系统中变电站火灾事故频发,消防势态不容乐观。强化变电站的消防安全管理,成为电网企业核心的任务之一,预防火灾、消除隐患不容延缓。目前,我国消防安全领域仍面临着诸多的挑战,基…...
JVM性能调优:参数配置×内存诊断×GC调优实战
🚀前言 “你的Java应用是否还在经历莫名卡顿?半夜被OOM报警惊醒?GC日志像天书看不懂? 本文将用20个真实案例50个关键参数,带你掌握: 参数调优:如何用-XX:UseG1GC让GC暂停从秒级降到毫秒级&…...
