初始MYSQL数据库(7)—— 视图

找往期文章包括但不限于本期文章中不懂的知识点:

个人主页:我要学编程(ಥ_ಥ)-CSDN博客

所属专栏: MYSQL

引言

前面我们学习MySQL数据库时,创建表之后,会在表中插入数据,在需要的时候,也会进行查询数据。但是我们没有考虑到一个点:在表中的某些数据可能是属于私密信息,如果也被查出来了的话,那么就算是泄露了用户的个人信息。因此我们要解决的就是如何将私密的信息隐藏起来,不会被查询到呢?这就是我们接下来要学习的知识:视图。

视图的概念 

视图是一个虚拟的表,它是基于一个或多个基本表或其他视图的查询结果集。视图本身不存储数
据,而是通过执行查询来动态生成数据。用户可以像操作普通表一样使用视图进行查询、更新和管
理。视图本身并不占用物理存储空间,它仅仅是一个查询的逻辑表示,物理上它依赖于基础表中的数据。也就是说视图就是可以将普通表中的数据封装起来,让查询的用户看到视图中给出的数据,而不是查看普通表中的所有数据。

创建并使用视图

create view view_name [(column_list)] as select_statement;-- select_statement 是查询普通表的查询语句-- (column_list) 是为视图指定的列名

举例:

-- 创建视图
create view student_view as (select id, name from student
);-- 查询视图中的信息
select * from student_view;-- 查询视图中的结构
desc student_view;

我们在来看看取了列名的结果是什么样的。

-- 创建视图
create view student_view2 (i,j) as (select id, name from student
);-- 查询视图中的信息
select * from student_view2;-- 查询视图中的结构
desc student_view2;

注意:

1、在命名时,视图中的列名必须必须要和查询语句中的结果集列名一致。 

2、在使用默认列名的情况下,查询语句中的列名不能重复。但是如果我们手动命名的情况下,就可以允许查询语句中的列名重复。

例如:在进行联合查询的时候,我们想要查询出两个表中对应的name列,但是如果此时的视图没有起列名的话(因为此时视图的列名默认是查询语句中的列决定的)就会导致视图中的列名重复而出现错误。反之,如果起了列名,那么就是以手动的为主,因此就不会报错。

3、视图是和真实表相关联的。当真实表中的数据更新之后,视图中的数据也会跟着变化。同理更新视图之后,真实表中的数据也会跟着受影响。

但使用一下查询语句则不能更新视图:

1、创建视图时使用聚合函数

2、创建视图时使用 DISTINCT

3、创建视图时使用 GROUP BY 以及 HAVING 子句

4、创建视图时使用 UNION 或 UNION ALL

5、查询列表中使用子查询

6、在FROM子句中引用不可更新视图 

上述情况之所以不能更新视图,是因为它们创建视图的时候,并不是真实表。如果是使用真实表创建视图,那么视图的更新就会影响的真实表;反之,如果影响不到真实表的话,那么更新还有什么意义呢?因此MySQL便规定不能不是使用真实表创建的视图是不能够更新的。

删除视图

语法:

drop view view_name;

视图的优点 

1、简单性:视图可以将复杂的查询封装成一个简单的查询。例如,针对一个复杂的多表连接查询,可以创建一个视图,用户只需查询视图而无需了解底层的复杂逻辑。

2、安全性:通过视图,可以隐藏表中的敏感数据。例如,一个系统的用户表中,可以创建一个不包含密码列视图,普通用户只能访问这个视图,而不能访问原始表。

3、逻辑数据独立性:视图提供了一种逻辑数据独立性,即使底层表结构发生变化,只需修改视图定义,而无需修改依赖视图的应用程序。

4、重命名列:视图允许用户重命名列名,以增强数据可读性。

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

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

相关文章

uni-app 多环境配置

前后端分离模式下,不同的环境如开发环境(dev)、测试环境(test)、生产环境(prod)等,不同环境后端数据库、api地址等可能都不同 。 uni-app中只有development和production两个环境 以配…

python文字转wav音频

借鉴博客 一.前期准备 1. pip install baidu-aip 2. pip install pydub 3. sudo apt-get install ffmpeg 二.代码 from aip import AipSpeech from pydub import AudioSegment import time#input your own APP_ID/API_KEY/SECRET_KEY APP_ID 14891501 API_KEY EIm2iXtvD…

示例:WPF中Grid显示网格线的几种方式

一、目的:介绍一下WPF中Grid显示网格线的几种方式 二、几种方式 1、重写OnRender绘制网格线(推荐) 效果如下: 实现方式如下: public class LineGrid : Grid{private readonly Pen _pen;public LineGrid(){_pen new P…

try microceph (by quqi99)

作者:张华 发表于:2024-09-24 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明(http://blog.csdn.net/quqi99) sudo snap install microceph --channelreef/stable sudo microceph clust…

一分钟掌握 Java11 新特性

1. 局部变量类型推断(var) Java 11 允许使用 var 关键字来推断局部变量的类型。 在 Java 11 中, var 关键字允许开发者在声明局部变量时省略类型,编译器会根据赋值自动推断类型。这使得代码更加简洁,尤其在类型复杂的…

【Linux】深度解析与实战应用:GCC/G++编译器入门指南

🔥 个人主页:大耳朵土土垚 🔥 所属专栏:Linux系统编程 这里将会不定期更新有关Linux的内容,欢迎大家点赞,收藏,评论🥳🥳🎉🎉🎉 文章目…

RabbitMQ08_保证消息可靠性

保证消息可靠性 一、生产者可靠性1、生产者重连机制(防止网络波动)2、生产者确认机制Publisher Return 确认机制Publisher Confirm 确认机制 二、MQ 可靠性1、数据持久化交换机、队列持久化消息持久化 2、Lazy Queue 惰性队列 三、消费者可靠性1、消费者…

Winform—事件多播和事件联机响应

事件多播 多次点击连接事件按钮,再次点击button1 会出现多次调用 这个就是多播。 用法: this.button1.Click new System.EventHandler(this.button1_Click); //给button1加一次click事件,事件名称是button1_click 事件级联响应 事件的级联响应&#xf…

速通LLaMA3:《The Llama 3 Herd of Models》全文解读

文章目录 概览论文开篇IntroductionGeneral OverviewPre-TrainingPre-Training DataModel ArchitectureInfrastructure, Scaling, and EfficiencyTraining Recipe Post-TrainingResultsVision ExperimentsSpeech Experiments⭐Related WorkConclusionLlama 3 模型中的数学原理1…

【网站架构部署与优化】Nginx优化

文章目录 Nginx服务优化一、隐藏Nginx版本号,避免安全漏洞泄漏方法一:通过修改配置文件方法二:通过修改源码并重新编译安装 修改Nginx的用户和组修改用户与组 配置Nginx网页缓存时间配置Nginx连接保持的超时时间KeepAlive模式简介Nginx中的超…

细说硫酸钙防静电地板的材质结构和优势特点

防静电地板有全钢基材的、硫酸钙基材的、铝合金基材的,在一些防静电要求、承载要求、铺设要求、铺装效果要求很高的场合,如银行、电信机房、移动机房、智能化办公室、部队指挥中心,通常都会使用硫酸钙防静电地板。那么什么是硫酸钙防静电地板…

Python项目周报

项目名称: 网站数据爬取工具日期: 2024年9月16日 - 2024年9月22日 1. 项目背景 在当前数据驱动的时代,获取和分析数据已成为企业决策的重要组成部分。本项目旨在开发一款灵活且高效的Python爬虫工具,用于从指定网站抓取数据,并将其存储到Mo…

Access denied for user ‘root‘@‘114.254.154.110‘ (using password: YES)

navicat 连接远程服务器报错 1045 - Access denied for user root114.254.154.110 (using password: YES)报错解释: 这个错误表示客户端从IP地址114.254.154.110尝试以用户’root’身份连接到MySQL服务器时,被拒绝访问。原因可能是密码错误、用户’roo…

计算机毕业设计 二手图书交易系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

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

计算机毕业设计 基于Python的医疗预约与诊断系统 Django+Vue 前后端分离 附源码 讲解 文档

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

arthas-阿里远程诊断工具神器一定要掌握

文章目录 1. 背景介绍2. 安装下载3. 常用命令4. 常见案例4.1 案例一:使用logger 实时修改某个类的日志级别、4.2 案例二:使用watch 查看方法输入输出参数4.3 案例三:使用 Arthas 实现在线代码热更新 1. 背景介绍 通常,本地开发环…

文件上传、amrkdown编辑器

一、文件上传 这里我以图片为例,进行上传,上传到阿里云oss(对象存在中) 首先,我们先梳理一下,图片上传的流程 1、前端选择文件,提交文件 前端提交文件,我们可以使用ElementUI中的…

蓝队技能-应急响应篇Web内存马查杀JVM分析Class提取诊断反编译日志定性

知识点: 1、应急响应-Web内存马-定性&排查 2、应急响应-Web内存马-分析&日志 注:传统WEB类型的内存马只要网站重启后就清除了。 演示案例-蓝队技能-JAVA Web内存马-JVM分析&日志URL&内存查杀 0、环境搭建 参考地址:http…

有关 签到/签退 业务逻辑 的梳理与学习

导言 最近搞到了个签到管理,其中的业务逻辑感觉有点复杂(可能是我的方向不对),虽然是实现了,不过代码和逻辑很多,也有些乱,想趁着还记得逻辑来记录梳理一下,看看自己以后有没有更好的思路,或者有大佬有思路…

Go Sonyflake学习与使用

文章目录 Sonyflake 特点Sonyflake ID 结构Sonyflake 使用场景Sonyflake 与 Snowflake 的对比Sonyflake 的实现安装 Sonyflake 库注意1. panic: no point解决方法: 2. panic: memory解决方法: 示例代码中的改进 Sonyflake 是一种分布式唯一 ID 生成器&am…