MySQL--视图(详解)

news2024/11/28 1:46:06

目录

  • 一、前言
  • 二、视图
    • 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. 重命名列:视图允许用户重命名列名,以增强数据可读性。

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

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

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

相关文章

历时一个多月,搭建了一款培训考试小程序系统

前不久,一位在机构单位工作的朋友联系到我,说他们需要搭建一款内部培训考试系统,是关于安全知识学习与考试的。 此处省略好多张聊天页...... 为此,针对用户的需求,在搭建前,我做了大量的竞品分析&#xff…

探索 MicroRabbit:Python 中的通信新纪元

文章目录 探索 MicroRabbit:Python 中的通信新纪元背景:为什么选择 MicroRabbit?MicroRabbit 是什么?如何安装 MicroRabbit?简单的库函数使用方法场景应用示例常见 Bug 及解决方案总结 探索 MicroRabbit:Py…

计算机毕业设计 基于Python的智能停车管理系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

UML/SysML建模工具更新情况(2024年10月)(1)Rhapsody 10.0.1

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 工具最新版本:SinelaboreRT 6.4 更新时间:2024年9月23日 工具简介 状态机图和活动图代码生成工具。先在EA、Visual Paradigm 、Cadifra、UModel、MagicDraw、…

衡石分析平台系统管理手册-智能运维之系统设置

系统设置​ HENGSHI 系统设置中展示了系统运行时的一些参数,包括主程序相关信息,Base URL、HTTP 代理、图表数据缓存周期、数据集缓存大小、租户引擎等相关信息。 主程序​ 系统设置中展示了主程序相关信息,这些信息是系统自动生成的&#…

AOC商用显示器助力智能制造,赋能数智化发展!

摘要:为制造型企业向数字化、智能化转型提供有力助益! 当今时代,我国制造业呈现出蓬勃发展之势。其中,显示器作为信息呈现的关键载体,其在制造业智能化进程中愈发发挥着重要作用,有助于实时、准确地展示生…

Mysql数据库安装与C++配置

本文档旨在为需要安装和配置MySQL 8.3、MySQL Workbench以及C Connector的用户提供详细的步骤指导。在安装过程中,可能会遇到一些常见问题,如DLL文件缺失等,本指南也会提供相应的解决办法。 1.安装Mysql8.3 安装Mysql有很多教程&#xff0c…

体感魂斗罗(二)姿势/手势与键位

文章目录 姿势/手势与键位映射 姿势/手势与键位映射 姿势/手势与键位映射暂时定为如下表的映射,搞出来一版,后续再优化 姿势/手势键位手掌上抬键位-上手掌下压键位-下手掌左挥键位-左手掌右挥键位-右挥拳A键抬腿B键OK手势暂停-开始

105. 从前序与中序遍历序列构造二叉树【 力扣(LeetCode) 】

文章目录 零、LeetCode 原题一、题目描述二、测试用例三、解题思路四、参考代码 零、LeetCode 原题 105. 从前序与中序遍历序列构造二叉树 一、题目描述 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的…

『网络游戏』客户端使用PESorket发送消息到服务器【14】

上一章服务器已经完成使用PESorket 现在我们将其导出在客户端中使用 生成成功后复制 粘贴到Unity项目中 进入Assets文件夹 粘贴两个.dll 创建脚本:ClientSession.cs 编写脚本: ClientSession.cs 编写脚本:GameStart.cs 将GameStart.cs脚本绑定在摄像机上 运行服务器 运行客户端…

【python实操】python小程序之封装(家具管理)

引言 python小程序之封装(家具管理) 文章目录 引言一、封装(家具管理)1.1 题目1.2 代码1.3 代码解释1.3.1 类 HouseItem1.3.2 类 House1.3.3 实例化与调用1.3.4 运行结果 四、思考 一、封装(家具管理) 1.1…

基于IDEA+SpringBoot+Vue+Uniapp的投票评选小程序系统的详细设计和实现

2. 详细视频演示 文章底部名片,联系我获取更详细的演示视频 3. 论文参考 4. 项目运行截图 代码运行效果图 代码运行效果图 代码运行效果图 代码运行效果图 代码运行效果图 5. 技术框架 5.1 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框…

令牌桶算法自学笔记

令牌桶算法可以处理大流浪场景。 令牌以恒定的速率向一个令牌通中放入令牌,每一个请求必须要从桶中拿到令牌,才可以完成后续处理请求的操作。如果一个请求没有拿到令牌,那么就解决请求。 可以处理固定桶数量的请求,当请求数量超…

【hot100-java】二叉树展开为链表

二叉树篇。 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …

进阶功法:SQL 优化指南

目录标题 SQL 优化指南1. 插入数据优化1.1 批量插入数据1.2 手动提交事务1.3 主键顺序插入1.4 大批量插入数据步骤: 2. 主键优化主键设计原则拓展知识 3. ORDER BY 优化3.1 Using filesort3.2 Using index示例 3.3 ORDER BY 优化原则 4. GROUP BY 优化示例 4.1 GROU…

社工字典生成工具 —— CeWL 使用手册

GitHub - digininja/CeWL: CeWL is a Custom Word List GeneratorCeWL is a Custom Word List Generator. Contribute to digininja/CeWL development by creating an account on GitHub.https://github.com/digininja/CeWL/ 0x01:CeWL 简介 CeWL(Cust…

[YM]模板-归并排序

概念: 归并排序,其实是一种分治和递归算法 将大问题转化为一个个小问题处理,最终整合成一个大问题 模板: const int N 2e5 5; int a[N],b[N],n;void mergeSort(int l, int r){if(l>r) return;int mid(lr)>>1; merge…

Vue 响应式的本质

在 Vue 开发中,最容易出问题的地方往往是对 Vue 响应式系统的误解。 响应式的核心不在于“数据一变,页面就刷新”,这是表象。真正的本质是数据和函数的关联。 当数据与函数关联后,数据的变化会触发相应函数的重新运行。这里要明…

【深度学习基础模型】玻尔兹曼机BM|受限玻尔兹曼机RBM|深度置信网络DBN详细理解并附实现代码。

【深度学习基础模型】玻尔兹曼机Boltzmann machines (BM)|受限玻尔兹曼机Restricted Boltzmann machines (RBM)|深度置信网络Deep belief networks (DBN)详细理解并附实现代码。 【深度学习基础模型】玻尔兹曼机Boltzmann machines (BM)|受限玻尔兹曼机Restricted Boltzmann m…

65 切面AOP

65 切面AOP 切面基础概念 AOP:Aspect Oriented Programming,面向切面编程。是通过预编译方式(aspectj)或者运行期动态代理(Spring)实现程序功能的统一维护的技术。 面试问题: Spring的两大核心…