MySQL中视图是什么,有什么作用
目录
一、视图的简介
1.1 什么是视图?
1.2 为什么使用视图?
1.3 视图有哪些规则与限制?
1.4 视图能否更新?
二、视图的创建
三、视图的作用
3.1 用视图简化复杂的联结
3.2 用视图格式化检索出的数据
3.3 用视图过滤数据
一、视图的简介
*本节涉及概念来源于图灵程序设计丛书,数据库系列——《MySQL必知必会》
1.1 什么是视图?
视图为虚拟的表,并不包含数据。视图只包含使用时动态检索数据的查询,返回的数据是从其他表中检索出来的。
在视图创建之后,可以用与表基本相同的方式使用它。可以对视图执行查询、过滤和排序等操作,也可以进行联结到其他视图或表。
1.2 为什么使用视图?
视图提供了一种查询语句层次的封装,可以用来简化数据处理、格式化基础数据或保护基础数据。视图的常见应用有:
①重用SQL语句,简化复杂的SQL操作。
②更改数据格式和表示。
③过滤不需要的数据。
④保护数据,可以给用户授予表的特定部分的访问权限,而不是整个表的访问权限。
1.3 视图有哪些规则与限制?
①视图必须唯一命名,不可与别的视图或表重名。
②可创建的视图数目没有限制,视图可嵌套,即从其他视图中检索数据的查询来构造一个视图。
③视图的中可以使用ORDER BY ,但如果使用该视图的查询语句中也含有ORDER BY,则视图中的会被覆盖;如果同时使用的是WHERE子句,则会两组子句自动组合。
④视图不能索引,也不能有关联的触发器或默认值。
⑤创建视图必须有足够的访问权限。
1.4 视图能否更新?
视图本身不包含数据,返回的数据是从其他表中检索出来的,当更改这些表中的数据时,视图将返回更改后的数据。(视图不包含数据,每次使用视图时都会处理查询执行时所需的任一个检索)
视图是可更新的,但上述有提到视图中的数据来源于其他表,那么对视图进行更新,实际上是对其基表进行更新。
视图更新有很多限制,视图的主要作用是用于数据检索,而不是更新数据。
二、视图的创建
①创建 CREATE VIEW name AS ...
②查看 SHOW CREATE VIEW name
③删除 DROP VIEW name
④更新 可以先用DROP再用CREATE;或者直接用CREATE OR REPLACE VIEW,如果要更新的视图不存在则会创建一个视图,否则会替换原视图。
三、视图的作用
3.1 用视图简化复杂的联结
以表格customers与orders为例。


视图可以简化SQL语句的使用,利用视图可以一次性编写基础的SQL,然后根据需要多次使用。
myview视图中返回将c表与o表联结起来并进行对应查询所得用户姓名、id以及订单号。

如要检索订单号为20009的客户的名字以及id,可以直接从myview视图中进行检索。在处理此查询时会将WHERE子句与视图中原有的WHERE子句结合起来正确检索数据。

3.2 用视图格式化检索出的数据
以表格vendors为例。

如果想要输出 vend_name(vend_country) 的格式,并经常使用该格式,可以创建一个视图。

3.3 用视图过滤数据
在customers表格中,有些用户没有email信息,如果要过滤掉cust_email为null的行,可以创建一个视图,后续可以直接使用该视图进行其他检索。


*只要不主动删除,视图是一直存在于对应的数据库中的。
相关文章:
MySQL中视图是什么,有什么作用
目录 一、视图的简介 1.1 什么是视图? 1.2 为什么使用视图? 1.3 视图有哪些规则与限制? 1.4 视图能否更新? 二、视图的创建 三、视图的作用 3.1 用视图简化复杂的联结 3.2 用视图格式化检索出的数据 3.3 用视图过滤数据…...
【面试题】JavaScript基础高频面试(下)
10、Javascript 闭包是什么,闭包形成的原因和闭包的用途 ? 闭包(Closure)是 JavaScript 中的一个非常重要的概念。简单地说,闭包就是一个函数能够访问另一个函数的作用域。这是因为在 JavaScript 中,函数是一等公民&a…...
对于个人而言,大数据时代如何更好地管理自己的信息?
在大数据时代,管理个人信息变得尤为重要。以下是几个建议来更好地管理个人信息: 认识和了解自己的数字足迹:了解自己在互联网上的活动,包括浏览历史、社交媒体和在线购物数据等。通过查阅自己的帐户设置和隐私选项,可以…...
oj项目后端分析
1.菜单管理 我们菜单管理有菜单表(sys_menu),还有用户角色表(sys_role),菜单表是用于管理我们用户所拥有的权限,不同的用户所看到的页面是不一样的,由于一些用户他能够看到题库管理和考题管理,还…...
书籍学习|基于SprinBoot+vue的书籍学习平台(源码+数据库+文档)
书籍学习平台 目录 基于SprinBootvue的书籍学习平台 一、前言 二、系统设计 三、系统功能设计 1平台功能模块 2后台功能模块 5.2.1管理员功能模块 5.2.2用户功能模块 5.2.3作者功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 …...
AI学习指南数学工具篇-MATLAB中的凸优化工具
AI学习指南数学工具篇-MATLAB中的凸优化工具 在人工智能领域,凸优化是一个非常重要的数学工具,它在机器学习、深度学习、数据分析等领域都有着广泛的应用。而MATLAB作为一款强大的数学工具软件,提供了丰富的凸优化工具和函数,为用…...
散户如何参与期权交易?
期权就是股票,唯一区别标的物上证指数,会看大盘吧,期权交易两个方向认购做多,认沽做空,双向t0交易没了,期权交易跟期货一样,对的,玩的也是合约,唯一区别没有保证金不会爆…...
Unity Apple Vision Pro 开发(一):开发前期准备【软硬件要求 | 开发者模式 | 无线调试打包】
文章目录 📕教程说明📕硬件要求📕软件要求⭐Xcode 15.2 及以上⭐visionOS 1.0 (21N301) SDK 或者更高版本⭐Unity 2022 LTS for Apple Silicon (2022.3.18f1及以上的版本)⭐Unity Pro/Unity Enterprise/Unity Industry的授权许可证 …...
IGMP——组播成员端网络协议
目录 一.IGMP基本概念 (1)组播转发困境 (2)感知组播成员方式 (3)IGMP版本 二.IGMP各版本的区别与联系 (1)IGMPV1 1.普遍组查询报文 2.成员关系报告报文 3.IGMPV1报文格式 4…...
Java break细节(标签)
Java break细节(标签)continue也可以使用标签 break是用来跳出循环的。 当有多重循环时,可以配合标签来使用,决定跳出那一重循环。 尽量不要使用标签 1、不代标签时,默认跳出 break 所在的那重循环: 可见在 i 3 时࿰…...
远程户外监控组网方案,工业4G路由器ZR2000
户外监控无人值守4G工业路由器组网应用涉及工业自动化、数据传输和远程监控的重要领域。在户外没有光纤的情况下,想要让监控或传感器等设备联网,仅需一台4G工业路由器即可解决。以下是关于远程监控户外组网的详细分析与应用: 物联网应用场景 …...
K8S集群中Yaml文件详解
目录 一、Yaml概述 二、Yaml基本语法 三、Yaml数据结构 四、K8S资源清单描述方法 五、api资源版本标签 六、Yaml文件示例详解 1.deployment.yaml文件详解 2.Pod yaml文件详解 3.Service yaml文件详解 七、Yaml文件相关操作 1.试运行 2.生成yaml格式 3.生成json格式…...
git-将老项目的分支推送到新项目的新分支上
1.克隆新项目:首先,将新项目的仓库克隆到本地。使用以下命令将新项目克隆到本地: git clone <新项目的仓库地址> 2.进入新项目目录:进入新项目的目录,使用以下命令: cd <新项目目录> 3.添加旧项…...
Unity之如何使用Localization来实现文本+资源多语言
前言 使用Unity实现本地化(Localization)功能 在当今的游戏开发中,支持多语言已成为一项基本需求。Unity作为主流的游戏开发引擎,提供了强大的本地化工具,使开发者能够方便地为游戏添加多语言支持。本文将介绍如何在U…...
ESP32 实时人脸检测系统:ESP32 与上位机通信(microPython框架)
实时人脸检测系统:ESP32 与上位机通信 在这篇博客中,我将介绍如何使用 ESP32 摄像头捕获图像,并通过 UDP 协议将图像传输到上位机进行实时人脸检测。我们将使用 Python 编程语言和 OpenCV 库来实现上位机端的人脸检测功能。 硬件与软件准备…...
Paddle 0-d Tensor 使用指南
Paddle 0-d Tensor 使用指南 1. 0-d Tensor 的定义 在深度学习框架中,Tensor 是存储和操作数据的基本数据结构。一个 Tensor 可以有 0 到任意多的维度,每个维度对应一个 shape 值。而 0-d Tensor,顾名思义,就是一个无任何维度的 Tensor&…...
Collection(一)[集合体系]
说明:Collection代表单列集合,每个元素(数据)只包含一个值。 Collection集合体系: Collection<E> 接口 (一)List<E> 接口 说明:添加的元素是有序、可重复、有索引。 1. ArrayLi…...
58. 最后一个单词的长度
Show me the code class Solution {func lengthOfLastWord(_ s: String) -> Int {s.trimmingCharacters(in: .whitespacesAndNewlines).components(separatedBy: CharacterSet.whitespaces).last?.count ?? 0} }注意点 // print: ["", "", "&…...
深入理解ECMAScript:JavaScript的规范与实践
引言 在当今的Web开发领域,JavaScript几乎无处不在。它不仅在客户端编程中占据主导地位,而且在服务器端(Node.js)和移动应用开发中也越来越受欢迎。然而,JavaScript的核心并非由单一的公司或组织控制,而是…...
【深度学习】Transformer梳理
零、前言 对于transformer,网上的教程使用记号、术语不一 。 最关键的一点,网上各种图的简化程度不一 (画个图怎么能这么偷懒) ,所以我打算自己手画一次图。 看到的最和善(但是不是那么靠谱,我…...
Pi0 Web演示服务监控:Prometheus+Grafana指标采集与告警配置
Pi0 Web演示服务监控:PrometheusGrafana指标采集与告警配置 1. 项目概述与监控需求 Pi0作为一个先进的视觉-语言-动作流机器人控制模型,其Web演示服务的稳定运行对于用户体验和开发测试至关重要。在生产环境中,我们需要实时掌握服务的运行状…...
完整指南:在浏览器中创建惊艳WebGL流体模拟效果的5个关键技巧
完整指南:在浏览器中创建惊艳WebGL流体模拟效果的5个关键技巧 【免费下载链接】WebGL-Fluid-Simulation Play with fluids in your browser (works even on mobile) 项目地址: https://gitcode.com/gh_mirrors/web/WebGL-Fluid-Simulation 想要在浏览器中体验…...
gemma-3-12b-it镜像开箱即用:3分钟完成多模态服务启动与测试
gemma-3-12b-it镜像开箱即用:3分钟完成多模态服务启动与测试 1. 快速了解Gemma-3-12b-it 如果你正在寻找一个既能理解文字又能看懂图片的AI模型,而且希望它能在普通电脑上运行,那么Gemma-3-12b-it就是为你准备的。 Gemma是Google推出的轻量…...
深入解析:set_clock_groups中-physically_exclusive与-asynchronous的约束协同与必要性
1. 从Spyglass报错看时钟约束的必要性 最近在跑Spyglass做SDC检查时,遇到了一个让我困惑的报错:"当两个时钟设置成物理互斥或逻辑互斥时,需要另外加上这两个时钟是异步设置的约束"。这让我很纳闷,明明已经设置了物理互…...
【TC3xx芯片】Endinit机制实战:从解锁到上锁的完整代码解析
1. TC3xx芯片Endinit机制的核心作用 在嵌入式系统开发中,寄存器保护是确保系统稳定性的关键机制。TC3xx系列芯片采用的Endinit(End of initialization)保护方案,就像给重要寄存器装了一把智能密码锁。想象一下,你家的保…...
终极zsh语法高亮插件版本兼容性测试:Zsh 5.0到5.9全面支持指南
终极zsh语法高亮插件版本兼容性测试:Zsh 5.0到5.9全面支持指南 【免费下载链接】zsh-syntax-highlighting Fish shell like syntax highlighting for Zsh. 项目地址: https://gitcode.com/gh_mirrors/zs/zsh-syntax-highlighting zsh-syntax-highlighting是Z…...
DeOldify图像上色服务Node.js调用实战:构建自动化批处理工具
DeOldify图像上色服务Node.js调用实战:构建自动化批处理工具 你是不是也遇到过这样的情况?手头有一大堆珍贵的老照片,都是黑白的,想给它们上色却无从下手。一张张手动处理?那得花多少时间啊。或者,你所在的…...
基于迁移学习的口罩检测模型优化
基于迁移学习的口罩检测模型优化 1. 引言 口罩检测作为计算机视觉领域的一个重要应用场景,在实际部署中常常面临数据量不足、训练成本高、模型泛化能力弱等问题。传统从零开始训练检测模型需要大量标注数据和计算资源,而迁移学习技术能够有效解决这些痛…...
CTC语音唤醒模型在医疗语音录入系统中的应用案例
CTC语音唤醒模型在医疗语音录入系统中的应用案例 1. 引言 在医疗场景中,医生每天需要处理大量的病历记录工作。传统的手写或键盘输入方式不仅效率低下,还容易分散医生对患者的注意力。现在,通过CTC语音唤醒技术,医疗语音录入系统…...
告别‘main分支被拒绝’:用VSCode内置Git图形界面轻松同步远程仓库更新
告别‘main分支被拒绝’:用VSCode内置Git图形界面轻松同步远程仓库更新 当你沉浸在VSCode中编写代码,点击那个熟悉的"推送"按钮时,突然弹出一个红色错误提示——! [rejected] main -> main (non-fast-forward)。这种场景对于依赖…...
