MYSQL视图

由于我们上讲复习了前面的所有知识点,所以今天不再去复习之前的知识了,我们直接开始正题。

1.什么是视图?

视图是⼀个虚拟的表,它是基于⼀个或多个基本表或其他视图的查询结果集。视图本⾝不存储数 据,⽽是通过执⾏查询来动态⽣成数据。⽤⼾可以像操作普通表⼀样使⽤视图进⾏查询、更新和管 理。视图本⾝并不占⽤物理存储空间,它仅仅是⼀个查询的逻辑表⽰,物理上它依赖于基础表中的数 据。

2.视图基本概念

  • 视图(View):视图是一个虚拟表,基于一个或多个表的查询结果。视图不存储实际数据,它只是在使用时运行SQL查询来生成结果。
  • 用途:可以简化复杂的隐藏查询、提升数据安全性(字段)、实现数据聚合或某些分区等功能。

3.创建视图

    基本语法

CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;

示例

假设有一个名为sanguo的表,包含学生的idname和成绩。我们可以创建一个视图,筛选出所有数学超过 80 的学生:

解释

  • 该视图see_sanguo将显示所有数学超过 80 的学生。
  • 我们在这里可以看到视图下面有我们刚定义的see_sanguo的视图表
  • 视图可以像表一样查询,例如:SELECT * FROM see_sanguo;

3. 使用视图查询数据

视图一旦创建,就可以像表格一样进行查询:

SELECT * FROM see_sanguo;

视图查询的结果是动态生成的,因此每次执行视图查询时,都是基于原始表当前数据生成的,不需要担心数据同步问题。

4. 修改视图定义

如果需要修改视图的定义,可以使用ALTER VIEWCREATE OR REPLACE VIEW语句。

CREATE OR REPLACE VIEW view_name AS
SELECT new_column1, new_column2, ...
FROM table_name
WHERE new_condition;

示例

我们将see_sanguo的条件修改为数学超过90:

CREATE OR REPLACE VIEW see_sanguo AS
SELECT *
FROM sanguo
WHERE math > 90;

修改后得视图的定义表

5. 删除视图

如果不再需要某个视图,可以使用DROP VIEW删除它。

DROP VIEW view_name;

示例

6. 视图应用程序场景

简化综合

视图可以将复杂的SQL查询封装起来,简化查询过程。例如,通过视图创建聚合或计算字段,用户只需查询视图,而不需要重新编写复杂的SQL语句。

数据安全性

可以通过视图限制用户特定访问数据。例如,只给用户提供特定字段或条件下的数据,而隐藏敏感信息。

数据聚合与分组

视图可以用于创建数据的聚合或分组,例如计算命令、总和等统计数据。

7.观点的优缺点

优点
  • 简单性:视图可以将复杂的查询封装成⼀个简单的查询。例如,针对⼀个复杂的多表连接查询,可 以创建⼀个视图,⽤⼾只需查询视图⽽⽆需了解底层的复杂逻辑。
  • 数据安全性:通过视图,可以隐藏表中的敏感数据。例如,⼀个系统的⽤⼾表中,可以创建⼀个不包含 密码列视图,普通⽤⼾只能访问这个视图,⽽不能访问原始表。
  • 数据更新同步:视图本质上是一个查询,数据更新时自动反映在视图中。
  • 逻辑数据独立性:视图提供了⼀种逻辑数据独⽴性,即使底层表结构发⽣变化,只需修改视图定 义,⽽⽆需修改依赖视图的应⽤程序。使⽤到应⽤程序与数据库的解耦
  • 重命名列:视图允许⽤⼾重命名列名,以增强数据可读性。
缺点
  • 性能问题:ViewQuery每次运行都会重新执行查询,复杂View可能会增加查询负担。
  • 更新限制:有些视图不能直接更新数据(特别是多表连接的视图)。
  • 依赖:视图依赖基础表结构,如果基础表发生改变,视图可能需要重建。

8. 审查的更新限制

视图并不总是可以更新,更新限制取决于视图的复杂性。以下是一些更新限制的情况:

  • 单表视图:仅当视图基于单个表,且不包含聚合、分组等复杂操作时,视图可以更新。
  • 多表视图:基于多表的视图通常是不可更新的。
  • 含有聚合或分组操作的视图:视图中包含GROUP BY、、SUMAVG操作时不可更新。
  • DISTINCT、JOIN 等:含有这些关键字的视图通常也是不可更新的。
检查报告是否可以更新

可以通过IS_UPDATABLE字段来查看视图是否可以更新:

SHOW TABLE STATUS WHERE Name='view_name';

9.注意事项

• 修改真实表会影响视图,修改视图同样也会影响真实表

• 以下视图不可更新:

      创建视图时使⽤聚合函数的视图

      创建视图时使⽤ DISTINCT

      创建视图时使⽤ GROUP BY 以及 HAVING ⼦句

      创建视图时使⽤ UNION 或UNION ALL

      查询列表中使⽤⼦查询

      在FROM⼦句中引⽤不可更新视图

10. 小结

MySQL View提供了一种方便管理复杂查询和提高数据安全性的方式,通过View可以:

  • 封装查询;
  • 实现数据隔离和数据隐藏;
  • 提供聚合或聚合信息。

视图,在性能和数据更新上有一定的限制,使用时要根据业务需求进行权衡。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/11622.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【软件设计师中级】2024.11.09软考备考

备考时候的一些笔记,可能会有不对或者个人主观的知识点 文章目录 前言一、计算机内数据的表示1.1 原反补移码1.2 浮点数1.3 校验码1.3.1奇偶校验1.3.2 CRC冗余校验码(理解特点即可)1.3.3 海明校验码 二、 计算机系统组成2.1 冯诺依曼结构2.2 Flynn分类法2.3 指令系统…

springboot生成二维码和条形码

目录 springboot生成二维码和条形码引入依赖生成二维码&#xff0c;在controller层生成条形码controller springboot生成二维码和条形码 引入依赖 <dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version&…

RTSP播放器EasyPlayer.js无插件直播流媒体音视频播放器使用http与https的区别

在当今数字化时代&#xff0c;视频播放体验的重要性日益凸显&#xff0c;而EasyPlayer.js无插件H5播放器作为一款现代Web环境下的播放器&#xff0c;其对HTTP和HTTPS的支持成为了许多用户关注的焦点。本文将探讨EasyPlayer.js播放器在使用HTTP与HTTPS时的区别。 1、从安全性角度…

组态软件基础知识

一、组态软件基础知识 1、概述 &#xff08;1&#xff09;、组态软件概念与产生背景 “组态”的概念是伴随着集散型控制系统&#xff08;Distributed Control System简称DCS&#xff09;的出现才开始被广大的生产过程自动化技术人员所熟知的。在工业控制技术的不断发…

国标GB28181公网直播EasyGBS国标GB28181视频平台与海康GB28181对接需要做哪些测试?

在当今的视频监控系统中&#xff0c;国标GB28181协议已成为视频监控设备互联互通的标准。特别是在公网直播的应用场景中&#xff0c;国标GB28181公网直播EasyGBS国标GB28181视频平台与海康威视设备的对接显得尤为重要。为了确保对接的顺利进行&#xff0c;需要进行一系列详尽的…

SpringBoot使用TraceId日志链路追踪

项目场景&#xff1a; 有时候一个业务调用链场景&#xff0c;很长&#xff0c;调了各种各样的方法&#xff0c;看日志的时候&#xff0c;各个接口的日志穿插&#xff0c;确实让人头大。为了解决这个痛点&#xff0c;就使用了TraceId&#xff0c;根据TraceId关键字进入服务器查询…

【QML】QML图表(ChartView)改变坐标轴(ValueAxis)标题(titleText)的文字颜色

1. 需求 改变titleText的颜色&#xff0c;将下图mV的颜色改为红色 2.代码 关键代码&#xff1a;titleText: "<font colorred>mV</font>" //坐标轴 mv ValueAxis{id: _mAxisMvmin: 0max: 20tickCount: 6labelsFont.pixelSize: 15labelFormat: %.1ft…

mysql诡异查询

运营同事让查一个数量&#xff0c;结果这两种情况查的居然不一致。 带时分秒查询的是另一个数&#xff0c;没有时分秒是上面的&#xff0c;少了100多条数据&#xff0c;为什么&#xff0c;有路过的大神可以指点一二。

丹摩征文活动|快速上手 CogVideoX-2b:智谱清影 6 秒视频生成部署教程

文章目录 一、生成视频效果 二、CogVideoX 技术新起点三、CogVideoX 上手部署3.1 创建丹摩实例3.2 配置环境和依赖3.3 模型与配置文件3.4 运行3.5 问题与处理方法 四、CogVideoX-2b 用创新点燃未来 一、生成视频效果 A street artist, clad in a worn-out denim jacket and a c…

仓库管理系统的实施流程超全解析!

现在我们都能很清楚地知道&#xff0c;在企业管理中仓库管理系统&#xff08;WMS&#xff09;扮演着非常重要的角色。而且随着电子商务的迅猛发展和供应链管理的复杂化&#xff0c;企业对仓库管理的要求越来越高。那么&#xff0c;如何有效地实施一个仓库管理系统&#xff0c;成…

【K8S问题系列 | 10】在K8S集群怎么查看各个pod占用的资源大小?【已解决】

要查看 Kubernetes 集群中各个 Pod 占用的资源大小&#xff08;包括 CPU 和内存&#xff09;&#xff0c;可以使用以下几种方法&#xff1a; 1. 使用 kubectl top 命令 kubectl top 命令可以快速查看当前 Pod 的 CPU 和内存使用情况。需要确保已安装并配置了 Metrics Server。…

YOLO即插即用模块---MEGANet

MEGANet: Multi-Scale Edge-Guided Attention Network for Weak Boundary Polyp Segmentation 论文地址&#xff1a; 解决问题&#xff1a; 解决方案细节&#xff1a; 解决方案用于目标检测&#xff1a; 即插即用代码&#xff1a; 论文地址&#xff1a; https://arxiv.org…

测试求职个人简历案例参考

当涉及到测试求职个人简历时&#xff0c;关键是突出你在测试领域的技能和经验。以下是一个例子&#xff0c;它包含了简历的常见部分&#xff0c;以突出测试方面的专业知识和个人成就。 基本信息 姓名&#xff1a;XXX 电话&#xff1a;123456789 邮箱&#xff1a;jianli100chui.…

Chromium Mojo(IPC)进程通信演示 c++(3)

122版本自带的mojom通信例子channel-associated-interface 仅供学习参考&#xff1a; codelabs\mojo_examples\03-channel-associated-interface-freezing 其余定义参考上一篇文章&#xff1a; Chromium Mojo(IPC)进程通信演示 c&#xff08;2&#xff09;-CSDN博客​​​​…

如何使用SparkSQL在hive中使用Spark的引擎计算

在hive中&#xff0c;由于hive自带的计算引擎计算比较慢&#xff0c;这个时候可以使用spark替换hive的计算引擎&#xff0c;可以增加hive的计算速度。 在替换之前&#xff0c;首先虚拟机上要有spark的集群模式&#xff0c;spark 的yarn集群模式&#xff0c;需要hdfs&#xff0…

MySQL数据库: 初始MySQL +Navicat (学习笔记)

目录 一&#xff0c;MySQL数据库基本概念 1&#xff0c;数据 2&#xff0c;数据库 3&#xff0c;数据库管理系统 4&#xff0c;数据库应用程序 5&#xff0c;数据库管理员 6&#xff0c;最终用户 7&#xff0c;数据库系统 二&#xff0c;MySQL数据库的分类 1&#xf…

22.04Ubuntu---ROS2创建python节点

创建工作空间 mkdir -p 02_ros_ws/src 然后cd到该目录 创建功能包 在这条命令里&#xff0c;tom就是你的功能包 ros2 pkg create tom --build-type ament_python --dependencies rclpy 可以看到tom功能包已经被创建成功了。 使用tree命令&#xff0c;得到如下文件结构 此时…

多模态大模型技术方向和应用场景

多模态大模型&#xff08;Multimodal Large Language Models&#xff0c;MLLM&#xff09;是一种结合了大型语言模型&#xff08;LLM&#xff09;和大型视觉模型&#xff08;LVM&#xff09;的深度学习模型&#xff0c;它们能够处理和理解多种类型的数据&#xff0c;如文本、图…

力扣 LeetCode 977. 有序数组的平方

解题思路&#xff1a; 方法一&#xff1a;先平方再快排 方法二&#xff1a;双指针 因为可能有负数&#xff0c;所以对于一个数组 [ -5 , -3 , 0 , 2 , 4 ] 可以从两边向内靠拢&#xff0c;最大值一定出现在两端 设置指针 i 和指针 j 分别从左右两边靠拢 因为要从小到大排序…

程序员必备的几款爬虫软件,搞定复杂数据抓取任务

作为一名数据工程师&#xff0c;三天两头要采集数据&#xff0c;用过十几种爬虫软件&#xff0c;也用过Python爬虫库&#xff0c;还是建议新手使用现成的软件比较方便。 这里推荐3款不错的自动化爬虫工具&#xff0c;八爪鱼、亮数据、Web Scraper 1. 八爪鱼爬虫 八爪鱼爬虫是一…