当前位置: 首页 > news >正文

MySQL--视图(详解)

目录

  • 一、前言
  • 二、视图
    • 2.1概念
    • 2.2语法
    • 2.3创建视图
      • 2.3.1目的
    • 2.4查看视图
    • 2.5修改数据
      • 2.5.1通过真实表修改数据,会影响视图
      • 2.5.2通过修改视图,会影响基表
    • 2.6注意
    • 2.7 删除视图
    • 2.8 视图的优点

一、前言

                              欢迎大家来到权权的博客~欢迎大家对我的博客进行指导,有什么不对的地方,我会及时改进哦~ 

博客主页链接点这里–>:权权的博客主页链接

二、视图

2.1概念

视图是⼀个虚拟的表,它是基于⼀个或多个基本表或其他视图的查询结果集。视图本⾝不存储数据,而是通过执⾏查询来动态生成数据。用户可以像操作普通表⼀样使⽤视图进行查询、更新和管理。视图本⾝并不占用物理存储空间,它仅仅是⼀个查询的逻辑表示,物理上它依赖于基础表中的数据。使用视图查询数据时,数据库系统会从原来的表中取出对应的数据。因此,视图中的数据是依赖于原来的表中的数据的。一旦表中的数据发生改变,显示在视图中的数据也会发生改变。同样对视图的更新,会影响到原来表的数据。

2.2语法

CREATE VIEW view_name [(column_list)] AS select_statement;

2.3创建视图

2.3.1目的

创建视图的目的,有时候我们不想让别人知道一些信息,只想让别人知道想让别人的信息的时候,我们就可以创建视图。

在这里插入图片描述

创建一个名字为v_进货表_供货表的视图,只让读者查询这个v_进货表_供货表时,只看到进货日期、进价、供货商名称、联系人.

SELECT jhb.`进货日期`,jhb.`进价`,ghs.`供货商名称`,ghs.`联系人`,COUNT(ghs.`供货商名称`)
FROM 进货表 jhb,供货商表 ghs 
WHERE jhb.`供货商ID`=ghs.`供货商ID`
GROUP BY jhb.`进货日期`,jhb.`进价`,ghs.`供货商名称`,ghs.`联系人`;

在这里插入图片描述

把这个查询用一个视图封装起来(没有指定列名)

CREATE VIEW v_进货表_供货商表 AS
(
SELECT jhb.`进货日期`,jhb.`进价`,ghs.`供货商名称`,ghs.`联系人`,COUNT(ghs.`供货商名称`)
FROM 进货表 jhb,供货商表 ghs 
WHERE jhb.`供货商ID`=ghs.`供货商ID`
GROUP BY jhb.`进货日期`,jhb.`进价`,ghs.`供货商名称`,ghs.`联系人`
);

把这个查询用一个视图封装起来(指定列名)

CREATE VIEW v_进货表_供货商表1
(
`进货日期`,`进价`,供货商名称,`联系人`
)AS
(
SELECT jhb.`进货日期`,jhb.`进价`,ghs.`供货商名称`,ghs.`联系人`
FROM 进货表 jhb,供货商表 ghs 
WHERE jhb.`供货商ID`=ghs.`供货商ID`
);

在这里插入图片描述

2.4查看视图

语法:

select * from 视图名;

查看视图

select * from v_进货表_供货商表;

在这里插入图片描述

2.5修改数据

使用视图查询数据时,数据库系统会从原来的表中取出对应的数据。因此,视图中的数据是依赖于原来的表中的数据的。一旦表中的数据发生改变,显示在视图中的数据也会发生改变。同样对视图的更新,会影响到原来表的数据。

2.5.1通过真实表修改数据,会影响视图

在这里插入图片描述

2.5.2通过修改视图,会影响基表

在这里插入图片描述
在这里插入图片描述

2.6注意

修改真实表会影响视图,修改视图同样也会影响真实表
• 以下视图不可更新:
◦ 创建视图时使用聚合函数的视图
◦ 创建视图时使用 DISTINCT
◦ 创建视图时使用 GROUP BY 以及 HAVING 子句
◦ 创建视图时使⽤ UNION 或 UNION ALL
◦ 查询列表中使用子查询
◦ 在FROM子句中引用不可更新视图>

2.7 删除视图

语法:

drop view view_name;

删除 v_进货表_供货商表 的视图

在这里插入图片描述
在这里插入图片描述

2.8 视图的优点

  1. 简单性:视图可以将复杂的查询封装成⼀个简单的查询。例如,针对⼀个复杂的多表连接查询,可
    以创建⼀个视图,⽤⼾只需查询视图⽽⽆需了解底层的复杂逻辑。
  2. 安全性:通过视图,可以隐藏表中的敏感数据。例如,⼀个系统的用户表中,可以创建⼀个不包含密码列视图,普通用户只能访问这个视图,而不能访问原始表。
  3. 逻辑数据独立性:视图提供了⼀种逻辑数据独⽴性,即使底层表结构发⽣变化,只需修改视图定
    义,而无需修改依赖视图的应⽤程序。使用到应用程序与数据库的解耦
  4. 重命名列:视图允许用户重命名列名,以增强数据可读性。

在这里插入图片描述
欧耶!!我学会啦!!!!

相关文章:

MySQL--视图(详解)

目录 一、前言二、视图2.1概念2.2语法2.3创建视图2.3.1目的 2.4查看视图2.5修改数据2.5.1通过真实表修改数据,会影响视图2.5.2通过修改视图,会影响基表 2.6注意2.7 删除视图2.8 视图的优点 一、前言 欢迎大家来到权权的博客~欢迎大家对我的博客进行指导&…...

Javascript 普通非async函数调用async函数

假设我们有一个异步函数 async function asyncFunction() {console.log("开始执行异步函数");await new Promise(resolve > setTimeout(resolve, 1000)); // 模拟异步操作console.log("异步函数执行完毕"); } 我们在调用这个异步函数时,比…...

【LeetCode】修炼之路-0004-Median of Two Sorted Arrays【python】

题目 Given two sorted arrays nums1 and nums2 of size m and n respectively, return the median of the two sorted arrays. The overall run time complexity should be O(log (mn)). Example 1: Input: nums1 [1,3], nums2 [2] Output: 2.00000 Explanation: merged…...

C++面试速通宝典——10

177. #include <filename> 和 #include "filname.h" 有什么区别&#xff1f; ‌‌‌‌  对于 #include <filename> &#xff0c; 编译器从标准库路径开始搜索 filename.h。 ‌‌‌‌  对于 #include "filename.h&#xff0c;编译器从用户的工作…...

肺腺癌预后新指标:全切片图像中三级淋巴结构密度的自动化量化|文献精析·24-10-09

小罗碎碎念 本期这篇文章&#xff0c;我去年分享过一次。当时发表在知乎上&#xff0c;没有标记参考文献&#xff0c;配图的清晰度也不够&#xff0c;并且分析的还不透彻&#xff0c;所以趁着国庆假期重新分析一下。 这篇文章的标题为《Computerized tertiary lymphoid structu…...

基于jmeter+perfmon的稳定性测试记录

1. 引子 最近承接了项目中一些性能测试的任务&#xff0c;因此决定记录一下&#xff0c;将测试的过程和一些心得收录下来。 说起来性能测试算是软件测试行业内&#xff0c;有些特殊的部分。这部分的测试活动&#xff0c;与传统的测试任务差别是比较大的&#xff0c;也比较依赖…...

前沿论文 M5Product 组会 PPT

对比学习&#xff08;Contrast learning&#xff09;&#xff1a;对比学习是一种自监督学习方法&#xff0c;用于在没有标签的情况下&#xff0c;通过让模型学习哪些数据点相似或不同来学习数据集的一般特征。假设一个试图理解世界的新生婴儿。在家里&#xff0c;假设有两只猫和…...

navicat~导出数据库密码

当我们mysql密码忘记了&#xff0c;而在navicat里有记录&#xff0c;我们应该如何导出这个密码呢&#xff1f; 第一步:文件菜单&#xff0c;导出链接&#xff0c;导出连接获取到 connections.ncx 文件 这里需要勾选 导出密码&#xff01;&#xff01;&#xff01; 不然导出的文…...

【Java】 —— 数据结构与集合源码:Vector、LinkedList在JDK8中的源码剖析

目录 7.2.4 Vector部分源码分析 7.3 链表LinkedList 7.3.1 链表与动态数组的区别 7.3.2 LinkedList源码分析 启示与开发建议 7.2.4 Vector部分源码分析 jdk1.8.0_271中&#xff1a; //属性 protected Object[] elementData; protected int elementCount;//构造器 public …...

YOLOv5改进——添加SimAM注意力机制

目录 一、SimAM注意力机制核心代码 二、修改common.py 三、修改yolo.py ​三、建立yaml文件 四、验证 一、SimAM注意力机制核心代码 在models文件夹下新建modules文件夹&#xff0c;在modules文件夹下新建一个py文件。这里为simam.py。复制以下代码到文件里面。 import…...

SQL 自学:表别名的运用与对被联结表使用聚集函数

一、表别名的概念与作用 &#xff08;一&#xff09;表别名的定义 表别名是为表指定的临时名称&#xff0c;在 SQL 查询中使用别名可以简化表名&#xff0c;提高代码的可读性和可维护性。当表名较长或在复杂的查询中多次引用表时&#xff0c;使用表别名可以避免重复输入冗长的…...

jmeter学习(2)变量

1&#xff09;用户定义的变量 路径&#xff1a;添加-》配置元件-》用户定义的变量 用户定义的变量是全局变量&#xff0c;可以跨线程组被调用&#xff0c;但在启动运行时获取一次值&#xff0c;在运行过程中不再动态获取值。 注意的是&#xff0c;如果在某个线程组定义了全…...

【C#生态园】C#文件压缩库全面比较:选择最适合你的库

从核心功能到API概览&#xff1a;深度解析六大C#文件压缩库 前言 在软件开发过程中&#xff0c;文件的压缩和解压缩是一个常见的需求。针对C#开发者而言&#xff0c;选择合适的文件压缩库可以极大地简化开发工作。本文将介绍几个常用的C#文件压缩库&#xff0c;包括其核心功能…...

【测试】接口测试与接口自动化

壹、接口测试基础 一、接口测试概念 I、基础概念 是测试系统组件间接口的一种测试。 主要用于检测外部系统与系统间、内部子系统间的交互点&#xff1b;测试重点检查数据的交换、传递和控制管理过程&#xff0c;以及系统间的相互逻辑依赖关系。 内部接口调用相当于函数调用&am…...

Android设置边框圆角

在Android开发中&#xff0c;圆角设计十分常见&#xff0c;那么实现边框圆角有几种形式呢&#xff1f; 文章目录 设置圆角边框样式使用ClipToOutline进行裁切最后 设置圆角边框样式 常见的方式是在drawable文件夹下设置一个xml文件的边框样式&#xff0c;比如 <shape andro…...

SpringBoot项目打成jar包,在其他项目中引用

1、首先新建一个SpringBoot工程 记得要将Gradle换成Maven 2、新建一个要引用的方法 3、打包的时候要注意&#xff1a; ① 不能使用springboot项目自带的打包插件进行打包&#xff0c;下面是自带的&#xff1a; ②要换成传统项目的maven打包&#xff0c;如下图&#xff1a; 依…...

【音频可视化】通过canvas绘制音频波形图

前言 这两天写项目刚好遇到Ai对话相关的需求&#xff0c;需要录音功能&#xff0c;绘制录制波形图&#xff0c;写了一个函数用canvas实现可视化&#xff0c;保留分享一下&#xff0c;有需要的直接粘贴即可&#xff0c;使用时传入一个1024长的&#xff0c;0-255大小的Uint8Arra…...

解决github每次pull push输入密码问题

# 解决git pull/push每次都需要输入密码问题 git bash进入你的项目目录&#xff0c;输入&#xff1a; git config --global credential.helper store然后你会在你本地生成一个文本&#xff0c;上边记录你的账号和密码。配置项写入到 "C:\Users\用户名\ .gitconfig" …...

Java重修笔记 第六十四天 坦克大战(十四)IO 流 - 标准输入输出流、InputStreamReader 和 OutputStreamWriter

标准输入输出流 1. System.in 标准输入流 本质上是一个InputString&#xff0c;对应键盘&#xff0c;表示从键盘输入。 定义&#xff1a;public final static InputStream in null; 所以 Scanner scanner new Scanner(System.in); 会从键盘中获取数据 2. System.out 标准输…...

prctl的函数和pthread_self函数

1.prctl的函数原型如下&#xff1a; #include<sys/prctl.h> ​prctl(PR_SET_NAME, “process_name”);第一个参数是操作类型&#xff0c;指定PR_SET_NAME&#xff08;对应数字15&#xff09;&#xff0c;即设置进程名&#xff1b; 第二个参数是进程名字符串&#xff0c;…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...