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,网上的教程使用记号、术语不一 。 最关键的一点,网上各种图的简化程度不一 (画个图怎么能这么偷懒) ,所以我打算自己手画一次图。 看到的最和善(但是不是那么靠谱,我…...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...

深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...