MySQL学习---12、视图

news2024/11/20 8:46:04

1、常见的数据库对象

对象描述
表(Table)表时存储数据的逻辑单元,以行和列的形式存在,列就是字段,行就是字段
数据字典就是系统表,存放数据库相关信息的表。系统表的数据通常由数据库系统维护,程序员通常不应该修改,只可查看
约束(Constraint)执行数据校验的规则,用于保证数据完整性的规则
视图(View)一个或者多个数据表里的数据的逻辑显示,视图并不存储数据
索引(Index)用于提高查询性能,相当于书的目录
存储过程(Procedure)用于完成一次完整业务处理,没有返回值,但可以通过传出参数将多个值传给调用环境
存储函数(Function)用于完成一次特点的计算,具有一个返回值
触发器(Trigger)相当于一个事件监听器,当数据库发生特定事件后,触发器被触发,完成相应的处理

2、视图概述

在这里插入图片描述

2.1 视图的理解

1、视图是一种虚拟表,本身是不具有数据的。占用很少的存储空间。
2、视图建立在已有表的基础上,视图赖以建立的这些表被称为基表。
3、视图的创建和删除只一下视图本身,不影响对应的基表。但是当对视图中的数据进行增加、删除和修改操作时,数据表中的数据会相应的发送变化,反之依然。
4、视图是向用户通过基表数据的另一种表现形式。

3、创建视图

1、在Create View语句中嵌入子查询
Create [or replace]
[algorithm ={Undefined|Merge|TempTable}]
view 视图名称[(字段列表)]
as 查询语句
[With [Cascaded | Local] Check Option]
2、精简版
Create View 视图名称
as 查询语句

3.1 创建单表视图

在这里插入图片描述
说明:
1、实际上我们在查询SQL语句的基础上封装了视图View,这样就会基于SQL语句的结果形成一张虚拟表。
2、在创建视图时,没有在视图名后面指定字段列表,则视图中字段列表默认和Select语句中的字段列表一致。如果Select语句取了别名,那么视图中的字段名和别名相同。

3.2 创建多表联合视图

举例1:
在这里插入图片描述
举例2:利用视图对数据进行格式化
在这里插入图片描述

4、查看视图

1、查看数据库的表对象、视图对象

show tables;

在这里插入图片描述
2、查看视图的结构

Desc / Describe 视图名称;

在这里插入图片描述
3、查看视图的属性信息

show table status like '视图名称';

在这里插入图片描述
4、查看视图的详细定义信息

show Create view 视图名称;

在这里插入图片描述

5、更新视图的数据

5.1 一般情况

MySQL支持使用Insert、Update、Delete语句对视图的数据进行插入、更新和删除操作。当视图中的数据发生变化时,数据表中的数据也会发生变化,反之亦然。

1、Update操作
在这里插入图片描述
2、Delete操作

在这里插入图片描述

5.2 不可更新的视图

要使视图可更新,视图中的行和底层基本表中的行之间必须存在一对多关系。另外当视图定义出现如下情况时,视图不支持更新操作:
1、在定义视图的时候指定了"Algorithm=TempTable",视图将不支持Insert和Delete操作。
2、视图不包含基表中所有被定义为非空又未指定默认值的列,视图将不支持Insert操作。
3、在定义视图的Select语句中使用了Join联合查询,视图将不支持Insert和Delete操作。
4、在定义视图的Select语句后的字段列表使用了数字表达式或子查询,视图将不支持Insert,也不支持Update使用了数学表达式、子查询的字段值。
5、在定义视图的Select语句后的字段列表中使用了Distinct、聚合函数、Group By、Having、Union等,视图将不支持Insert、Update、Delete。
6、在定义视图的Select语句中包含了子查询,而子查询引用了From后面的表,视图将不支持Insert、Update、Delete。
7、视图定义基于一个不可更新视图
8、常量视图。

6、修改、删除视图

6.1 修改视图

1、方式1:使用Create or Replace View子句修改视图

在这里插入图片描述
注意:Create view 子句中的各列的别名应和子查询中各列相对应。
2、方式2:alter view
修改视图的语法是:

alter view 视图名称
as
查询语句;

6.2 删除视图

1、删除视图只是删除视图的定义,并不会删除基表的数据。
2、删除视图的语法

Drop view 视图名;

说明:基于视图a、b创建了新的视图c,如果将视图a或者视图b删除,会导致视图c的查询失败。这样的视图c需要手动的删除或修改,否则会影响使用。

7、视图总结

7.1 视图优点

1、操作简单
2、减少数据冗余
3、数据安全
4、适应灵活多变的需求
5、能够分解复杂的查询逻辑

7.2 视图缺点

1、视图过多会导致数据库维护成本的增加
2、如果实际数据表的结构变更了,我们就需要及时对相关的视图进行维护。
3、可读性不好。

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

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

相关文章

银河麒麟系统Arm64编译opencv指南

进入opencv官网下载版本;我这边下载的是2.4.13.6 ;根据需要下载最新的 Releases - OpenCV 拷贝进麒麟系统我这边是麒麟V10 sp1 2204;并解 cmake 在麒麟应用商城中安装; 打开cmake 设置opencv路径;builder文件夹可以自…

福音:IDEA、VSCODE神级插件Bito

文章目录 Bito是什么?IDEA环境安装注册使用 VSCODE环境疑难问题后叙 Bito是什么? Bito是一款在编程软件中使用的插件,由ChatGPT团队开发,它是ChatGPT团队为了提高开发效率而开发的一款工具。 Bito的AI帮助开发人员极大地提高了其…

【已解决】windows电脑上无法打开iPhone中的照片

出门旅游后,想必很多小伙伴的手机里都会存下一大堆照片,回来后想直接导入Windows查看筛选,可有些人会发现无法显示图片的内容,提示不支持该格式或文件损坏,这是为什么呢? 这是因为用iPhone手机的话&#xf…

CentOS 安装 redis-cli以及linux操作redis

1,CentOS 安装 redis-cli步骤如下: wget http://download.redis.io/redis-stable.tar.gz tar xvzf redis-stable.tar.gz cd redis-stable make redis-cli 2,linux操作redis 到 redis-cli安装的目录找到 redis-cli然后执行命令 ./redis-cli…

JavaScript全解析-闭包

闭包 重新认识函数 ●一个函数分为函数的定义和函数的执行 函数的定义 ●我们书写一个函数, 但是不会执行函数体内的代码 ●那定义一个函数做了什么事情 ○在堆内存中开辟一段存储空间 ○把你书写在函数体内的代码, 全部以字符串的形式存储在这存储空间中, 此时不会解析变量 ○…

周五直播Talk | MIT许逸伦:解锁由物理启发的深度生成模型-从扩散模型到泊松流模型

受到物理、数学等学科的启发,AIGC大模型发展迎来一波技术颠覆。交叉学科里蕴含的巨大能量,为科研人带来创新视角和思维启迪。 北京时间4月28日(周五)10:00,将门-TechBeat社区邀请到麻省理工学院电子与计算机科学系博士生——许逸伦&#xff…

CloudOS:一个平台汇聚云原生技术栈

云原生技术栈是一种新型的技术架构,旨在支持云计算环境下的应用程序开发和部署。它是一种基于容器、微服务、自动化和云平台的技术栈,可以帮助企业更快速、更高效地构建、部署和管理应用程序,成为加速企业数字化业务高效创新、实现企业数字化…

电商如何利用API接口获取商品信息数据

随着电商和互联网的快速发展,API(应用程序编程接口)的重要性也越来越明显。API接口可以让不同系统之间进行数据交互和通信,进而实现更高效的业务协同和数据共享。在电商业务中,API可以帮助企业实现多个业务系统之间的数…

【数据结构】简单到有摸鱼负罪感的栈的实现

【数据结构】简单到有摸鱼负罪感的栈的实现 一、前言1、什么是栈?2、关于实现的结构选取 二、目标三、实现1、初始化工作2、压栈(push)2.1、图解思路2.2、代码实现 3、弹栈(pop)3.1、图解思路3.2、代码实现 4、打印栈(用于测试)5、返回栈顶数据6、返回栈的数据个数7…

源码环境搭建-唯一客服系统文档中心

运行源码环境 golang语言为跨平台的开发语言,使用唯一客服系统全源码版本,进行二次开发,需要搭建golang运行环境,并且开启go module依赖管理 Windows系统 首先下载golang压缩包,在下面这个地址下载https://studygolang…

第六章:空间解析几何-空间向量

1.空间向量 1.知识概述 1.理解向量的概念和几何表示2.掌握向量的加减法运算3.能够在三维空间内解决常见的向量问题2.向量 1.定义:(在空间内),既有大小又有方向的量叫做(空间)向量。2.表示法:向量可用有向线段表示,有向线段的长度表示向量的大小,有向线段的方向表示向…

网关zuul的使用

前言 Spring Cloud Zuul 主要的功能是提供负载均衡、反向代理、权限认证、动态路由、监控、弹性、安全等的边缘服务。其主要作用是为微服务架构提供了前门保护的作用,同时将权限控制这些较重的非业务逻辑内容迁移到服务路由层面,使得服务集群主体能够具备…

Matlab 迭代法(2)高斯牛顿法

一、思想 高斯牛顿法的对象是最小二乘法。 采用一定的方法对Hession 矩阵进行近似,这样的话可以减少计算量,只需要计算一阶偏导数得到雅可比矩阵即可。 minF(x)|| f(x)||^2 那么x在xk处的增量Δxk出的最小二乘法为 minF(xkΔxk)∣∣f(xk​Δxk​)∣…

10. 100ASK_V853-PRO开发板支持录音和播放音频

0.前言 ​ 本章主要讲述如何使用板载的MIC拾音咪头录音并使用喇叭播放音频。 ​ 音频_开发指南:https://tina.100ask.net/SdkModule/Linux_AudioFrequency_DevelopmentGuide-02/#220-v853 ​ 全志官方音频介绍:https://v853.docs.aw-ol.com/soft/tina…

HBase分布式安装配置

本环节需要使用root用户完成相关配置,安装HBase需要配置前置环境。命令中要求使用绝对路径,具体要求如下: 确认是否完成Hadoop和Zookeeper的分布式(Hadoop伪分布式不可以)安装部署,没有的话请进行安装部署并启动。完成…

DeSD:用于3D医学图像分割的深度自蒸馏自监督学习

文章目录 DeSD: Self-Supervised Learning with Deep Self-Distillation for 3D Medical Image Segmentation摘要本文方法Deep Self-DistillationDownstream Transfer Learning 实验结果 DeSD: Self-Supervised Learning with Deep Self-Distillation for 3D Medical Image Seg…

数据结构学习记录——集合及运算(集合的表示、并查集、树结构表示集合、集合运算、查找函数、并运算)

目录 集合的表示 集合运算概述 并查集 树结构表示集合 集合运算 查找函数 并运算 集合的表示 集合运算概述 交、并、补、差,判定一个元素是否属于某一个集合 并查集 集合并、查某元素属于什么集合 我们最主要关心的就是集合的两个运算,一个是把…

【网络原理】TCP原理

✨个人主页:bit me👇 ✨当前专栏:Java EE初阶👇 目 录 🍃一. 确认应答🍂二. 超时重传🍁三. 连接管理🌿四. 滑动窗口🌻五. 流量控制🍀六. 拥塞控制&#x1f49…

量子计算:当前阶段仍属于热炒概念

一、量子计算为何可能会成为一个风口? 量子计算是利用量子力学原理进行计算的新型计算方式。与传统的经典计算机不同,量子计算机利用量子比特(qubits)进行信息处理,由于量子比特可以处于叠加态,这使得量子…

【英】考虑多能负荷不确定性的区域综合能源系统鲁棒规划(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…