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

news2024/11/18 11:21:43

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

个人主页:我要学编程(ಥ_ಥ)-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.coloradmin.cn/o/2162336.html

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

相关文章

Qt-QComboBox输入类控件(31)

目录 描述 核心方法 核心信号 使用 代码方式 界面操作方式 动态使用 如何看待输入输出 String与QString互相转化 描述 一个可以下拉的输入框 核心方法 addItem(constQString&)添加⼀个条⽬currentIndex()获取当前条⽬的下标 从0开始计算.如果当前没有条⽬被选中…

MySQL的msi版本9.0在安装过程总结和需要注意的地方

下载 参考文档 [官方包快速下载](https://dev.mysql.com/downloads/mysql/) 使用zip文件安装可参考,这种直接把zip安装包解压到想要放的地方,并安装其中的方式一步步修改数据地址等配置即可。 个人使用了msi的安装文件 msi版本…

Vue3:快速生成模板代码

目录 一.模板代码 1.提供基础结构 2.定义组件名称 3.初始化数据和方法 4.应用样式 5.提高开发效率 二.操作 1.点击右下角设置按钮选择代码片段 2.输入vue.json,打开vue.json文件 3.构造模板 4.模板代码 5.使用 6.效果 一.模板代码 Vue3快速生成模板代…

通过document获取节点元素

1.层级节点 <ul><li id"li1">1</li><li>2</li><li id"li3">3</li><li>4</li><li>5</li></ul><script>//获取id名为li1的元素赋值给li1let li1document.getElementById(li…

为什么越来越多的视频监控AI分析做到了摄像头上?

在安防行业&#xff0c;视频监控已经非常广泛&#xff0c;是无可替代的基础信息化设施。早期的视频监控只是简单的通过摄像机对画面进行记录&#xff0c;然后通过记录的画面服务入侵探测和震慑burglars。随着近年来人工智能技术的兴起&#xff0c;人们越来越希望利用AI计算机的…

【Go】Go 环境下载与安装教程(Windows系统)

引言 Go&#xff0c;也被称为Golang&#xff0c;是一种静态类型&#xff0c;编译型的编程语言&#xff0c;由Google设计和开发。Go语言的设计目标是“解决软件开发中的一些问题”&#xff0c;特别是在大规模软件系统的构建和维护方面。 下载安装包 打开官网下载页面&#xff…

排序----基数排序、桶排序(附排序总结)

一、基数排序 从个位开始往高位不断排序&#xff0c;把各个数字按每一位的顺序排起来。 二、桶排序 建立一个指针数组&#xff0c;指针指向一个链表&#xff0c;然后再对链表排序。永远只建立一个筒&#xff0c;只适用于全是两位数或者全是三位数的排序。 三、总结 归并排序当…

如何把pdf转换成word文档?6种转换方法看完就学会

在日常工作和学习中&#xff0c;PDF文件和Word文档可以说是两种非常常见的文件格式了。然而&#xff0c;PDF文件的不可编辑性常常让我们感到困扰&#xff0c;在遇到需要编辑修改内容的PDF文件时&#xff0c;就需要将其转换成Word文档来便于编辑修改&#xff0c;那么该怎么转换呢…

并发编程。

进程 1.什么是进程&#xff1f; 进程是具有独立功能的程序关于某个数据集合上的一次运行活动&#xff0c;是系统进行资源分配和调度的 独立单位。进程是可与其他程序并发执行的程序&#xff0c;在一个数据集合上的运行过程。它是系统进行 资源分配和调度的一个独立单位。 2.进…

vivado sdk 烧写到SD卡

首先在bd文件中使能SD卡 实际根据实际原理图设置 烧写流程和烧写FLASH一样&#xff0c;产生boot.bin文件&#xff0c;只需要将BOOT.bin文件复制到SD卡里&#xff0c;将SD卡插入板卡&#xff0c;然后设置SD卡启动即可 需要注意的是&#xff1a;SD卡文件系统必须格式化为FAT32…

Stable Diffusion绘画 | XYZ Plot:让对比一目了然

XYZ Plot 是 SD 自带的&#xff0c;无需额外安装。 它的作用&#xff0c;是给我们用来对比不同参数下&#xff0c;生成图片效果的区别。 位置在页面左侧底部&#xff1a; 实操 开启 x轴进行对比&#xff0c;这里面有各种可选的对比参数&#xff1a; 现在 X轴类型 选择「Sampler…

服务器安装pytorch_geometric torch_scatter踩坑记录

conda create -n pyg python3.8.12 pip install torch1.13.0安装的版本如下 pip install torch-scatter pip install torch-sparse pip install torch-cluster pip install torch-spline-conv pip install torch-geometric2.2.0 pip install ipykernel python -m ipykernel i…

C语言 typedef - C语言零基础入门教程

目录 一.typedef 简介 二.typedef 实战 1.typedef 定义基本数据变量 2.typedef 定义结构体 A.常规定义结构体B.typedef 定义结构体C.结构体使用 typedef 和不使用 typedef 区别 3.typedef 定义函数指针 三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础…

uni-app进行微信小程序开发,快速上手

准备工作 IDE https://www.dcloud.io/hbuilderx.html 微信小程序开发工具 下载 / 稳定版更新日志 (qq.com) 安装流程 打开HBuilderX 点击这个logo打开终端 然后 下载一下终端插件 初始化一个demo 通过vue-cli命令行创建项目 uni-app官网 (dcloud.net.cn) &#xff08;官…

【软件造价咨询】软件每年运维费用取开发费用百分之几合适

应用软件的运维费用相对于系统开发建设费用的占比因项目而异&#xff0c;但可以通过一些行业标准和基准数据来进行估算。根据北京软件造价评估联盟2020至2023年发布的《中国软件行业基准数据》CSBMK文件&#xff0c;在这项文件中用百分位数统计列出了“应用软件运维费用占比”的…

mock虚拟接口技术

一、什么是mock mock指的就是使用mock创建出来的一个虚拟的接口 二、对于测试人员而言&#xff0c;我们为什么要使用mock 当我们进行接口测试时&#xff0c;如果对应的接口还没有开发好&#xff0c;但是我们又需要用到这个接口响应的信息&#xff0c;这个时候我们就可以使用…

2024年华为杯研究生数学建模竞赛D题(时空演化模型+脆性指数 完整文章|可视化)

2024年华为杯研究生数学建模竞赛D题 全文请从 底部名片 处加群获取哦~ 问题重述 题目背景&#xff1a; 地理系统是由自然和人文多要素综合作用形成的复杂巨系统。传统上&#xff0c;地理学家通过宏观结构和定性分析方法描述地理系统的主导特征&#xff0c;如地形分布、气候…

两个月学习大语言模型(LLM)的详细计划,保姆级教程非常详细收藏我这一篇就够了!

随着人工智能技术的发展&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;因其在自然语言处理、机器翻译、文本生成等领域的广泛应用而受到越来越多的关注。对于希望掌握这一前沿技术的朋友来说&#xff0c;制定一个系统的学习计划至关重要。本计划旨…

笔试强训,约瑟夫环plus孩子们的游戏​编辑解法二.动态规划大数加法牛客.在字符串中找出连续的最长数字串力扣703.数据流中第K大元素​编辑

目录 约瑟夫环plus 孩子们的游戏​编辑 解法二.动态规划 大数加法 牛客.在字符串中找出连续的最长数字串 力扣703.数据流中第K大元素​编辑 约瑟夫环plus 孩子们的游戏 基本模拟&#xff0c;没啥特殊技巧 import java.util.*;public class Solution {/*** 代码中的类名、…

03-Docker下载加速

03-Docker下载加速 docker下载加速 方式1&#xff1a;使用 网易数帆、阿里云等容器镜像仓库进行下载。 网易数帆官网&#xff1a;https://sf.163.com/ 例如&#xff0c;下载网易数帆镜像中的mysql。&#xff08;网易数帆的地址为 hub.c.163.com&#xff0c;网易数帆对dockerh…