【MySQL系列】视图特性

「前言」文章内容大致是MySQL事务管理。

「归属专栏」MySQL

「主页链接」个人主页

「笔者」枫叶先生(fy)

MySQL

目录

  • 视图
    • 1.1 视图概念
    • 1.2 创建视图
    • 1.3 修改互相影响
    • 1.4 删除视图
    • 1.5 视图规则和限制

视图

1.1 视图概念

  • 视图是一个虚拟表,其内容由查询定义
  • 同真实的表一样,视图包含一系列带有名称的列和行数据
  • 视图的数据变化会影响到基表(原始的表),基表的数据变化也会影响到视图

注意:这里的视图与上一篇的Read View没有任何关系

1.2 创建视图

准备测试表,雇员信息表
在这里插入图片描述
假设要查询每个员工及其对应的部门名称时,需要使用员工表和部门表进行多表查询,并筛选出员工的部门号等于部门的部门号的记录

select ename, dname from emp,dept where emp.deptno=dept.deptno;

在这里插入图片描述
如果该查询结果会被频繁用到,那我们就可以给上述查询结果创建视图

创建视图语法如下:

create view 视图名 as select语句;

:创建视图时会先执行select语句,然后用查询得到的结果来创建视图

例如,给上面的表创建视图

create view myview as select ename, dname from emp,dept where emp.deptno=dept.deptno;

也是通过show命令查看该表
在这里插入图片描述
视图创建,在数据库对应的目录下,会增加一个对应的xxx.frm文件,但并没有与之对应的xxx.ibd文件,这也证明了视图和基表使用的是同一份数据
在这里插入图片描述
查询视图
在这里插入图片描述

1.3 修改互相影响

修改基表影响视图

在emp表修改名为“CLARK”的名字,改为小写“clark”
在这里插入图片描述
修改后再查询视图,发现视图里面的内容也跟着修改了
在这里插入图片描述

修改视图影响基表

在视图里面修改名为“SIMTH”的名字,改为小写“smith”
在这里插入图片描述
再查询emp表,发现内容也跟着被修改了
在这里插入图片描述
上述实验说明视图与基表共用一份相同的数据

1.4 删除视图

删除视图语法如下:

drop view 视图名;

比如将刚才创建的视图删除后,在数据库中就看不到这个视图了
在这里插入图片描述

1.5 视图规则和限制

  • 与普通表一样,视图的命名也必须是唯一的,不能出现同名视图或表名
  • 创建视图的数目无限制,但要考虑复杂查询创建为视图之后的性能影响
  • 视图不能添加索引,也不能有关联的触发器或者默认值
  • 视图可以提高安全性,在访问视图时必须具有足够的访问权限
  • 创建视图时可以使用order by子句,但如果从该视图检索数据时也含有order by子句,那么该视图中的order by将被覆盖
  • 视图可以和普通表一起使用,比如进行多表查询,内外连接等

以上就是视图的内容,简单了解即可
--------------------- END ----------------------

「 作者 」 枫叶先生
「 更新 」 2023.9.11
「 声明 」 余之才疏学浅,故所撰文疏漏难免,或有谬误或不准确之处,敬请读者批评指正。

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

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

相关文章

零基础教程:使用yolov8训练无人机VisDrone数据集

1.准备数据集 1.先给出VisDrone2019数据集的下载地址: 链接:https://pan.baidu.com/s/1e2Q0NgNT-H-Acb2H0Cx8sg 提取码:31dl 2.将数据集VisDrone放在datasets目录下面 2.数据集转换程序 1.在根目录下面新建一个.py文件,取名叫…

【strcat函数和strncat函数的对比与模拟实现】

strcat函数和strncat函数的对比与模拟实现 1.strcat函数的介绍 资源来源于cplusplus网站 它的作用是: 将源字符串的副本追加到目标字符串。目标中的结束空字符被源的第一个字符覆盖,并且在由目标中的两个字符串串联形成的新字符串的末尾包含一个空字符…

序列到序列学习(seq2seq)

permute(1,0,2),将batch_size 放在中间state 最后一个时刻,每个层的输出

一文看懂Java的类加载机制

前言 当我们运行Java程序时,Java虚拟机(JVM)需要加载各种类文件,以执行程序中的代码。Java的类加载机制是Java语言的一个关键特性,它负责在运行时将类加载到内存中,并确保类的正确性。 类是在运行期间第一…

网络安全—0基础入门学习手册

前言 一、什么是网络安全 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域,都有攻与防…

用python实现基本数据结构【01/4】

说明 如果需要用到这些知识却没有掌握,则会让人感到沮丧,也可能导致面试被拒。无论是花几天时间“突击”,还是利用零碎的时间持续学习,在数据结构上下点功夫都是值得的。那么Python 中有哪些数据结构呢?列表、字典、集…

Kubernetes (K8s) 解读:微服务与容器编排的未来

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack: &#x1f4da…

设计模式篇(Java):装饰者模式

👨‍💻本文专栏:设计模式篇-装饰者模式 👨‍💻本文简述:装饰者模式的详解以及jdk中的应用 👨‍💻上一篇文章: 设计模式篇(Java):桥接模式 👨‍&am…

串行数据发送器

框图 THR:发送保持寄存器 定义了两种状态:空,满数据写入端口地址:00H状态读出端口地址:00H当THR不满时,可以向THR写入数据 TSR:发送移位寄存器 一旦TSR空而THR中有数据时,THR中的数…

shell中分支语句,循环语句,函数

实现对一个数组求和的函数,将数组作为实参传给函数 #!/bin/bash sum() {for i in $do((sumi))doneecho $sum} read -p "请输入一组数字: " -a arr sum ${arr[*]}2 调用函数,输出当前用户的uid gid 并使用变量接收结果 #!/bin/bashget() {uid…

2023 年高教社杯全国大学生数学建模竞赛题目 B 题 多波束测线问题

B 题 多波束测线问题 单波束测深是利用声波在水中的传播特性来测量水体深度的技术。声波在均匀介质中作匀速直线传播,在不同界面上产生反射,利用这一原理,从测量船换能器垂直向海底发射声波信号,并记录从声波发射到信号接收的传播…

VSCode自动分析代码的插件

今天来给大伙介绍一款非常好用的插件,它能够自动分析代码,并帮你完成代码的编写 效果如下图 首先我们用的是VSCode,(免费随便下) 找到扩展,搜索CodeGeeX,将它下载好,就可以实现了 到…

由Qt::BlockingQueuedConnection引起的关闭Qt主页面而后台仍有进程残留

BUG&#xff1a;由Qt::BlockingQueuedConnection引起的关闭Qt主页面而后台仍有进程残留 1、错误代码示例 首先我们看下下面的代码&#xff0c;可以思考一下代码的错误之处 /** BlockingQueueDeadLock.h **/ #pragma once#include <QtWidgets/QMainWindow> #include &q…

深度学习Tensorflow: CUDA_ERROR_OUT_OF_MEMORY解决办法

目前在用深度学习训练&#xff0c;训练中设置batch size后可以正常跑通&#xff0c;但是在训练一轮save_model时&#xff0c;总出现这个错误&#xff0c;即使我调batch size到1也依旧会报错。 发现是在 调用logger时出现问题。 查询后了解到是因为TensorFlow中的eager_executi…

模电课程设计

主要内容跟本科实验关系很大&#xff0c;可以用来借鉴。 包含文件有&#xff1a;实验报告、Multisim仿真文件&#xff0c;资料很全&#xff0c;有问题可以私信 目录 1、模电课设&#xff1a;用Multisim简单了解二极管 2、模电课设&#xff1a;用Multisim简析三极管与场效应…

开发者的商业智慧:产品立项策划你知道多少?

文章目录 想法的萌芽&#x1f31f;初步评估产品可行性&#x1f34a;分析核心功能和特点以及竞争对手&#x1f4dd;大健康监测&#x1f4dd;时尚新科技产品&#x1f4dd;准确性&#x1f4dd;多功能&#x1f4dd;品牌口碑&#x1f4dd;数据分析与个性化建议&#x1f4dd;社交互动…

go的iris框架进行本地资源映射到服务端

我这里使用的是HandleDirapi,有其他的请补充 package mainimport ("github.com/kataras/iris/v12" )type Hello struct{Status int json:"status"Message string json:"message" }func main(){app : iris.New()//第一个api:相当于首页app.Get(&q…

【多线程】volatile 关键字

volatile 关键字 1. 保证内存可见性2. 禁止指令重排序3. 不保证原子性 1. 保证内存可见性 内存可见性问题: 一个线程针对一个变量进行读取操作&#xff0c;另一个线程针对这个变量进行修改操作&#xff0c; 此时读到的值&#xff0c;不一定是修改后的值&#xff0c;即这个读线…

C++学习之list的实现

在了解学习list实现之前我们首先了解一下关于迭代器的分类&#xff1a; 按功能分类&#xff1a; 正向迭代器 反向迭代器 const正向迭代器 const反向迭代器 按性质分类&#xff1a; 单向迭代器 只能 例如单链表 双向迭代器 可&#xff0c;也可-- 例如双…

服务端 TCP 连接的 TIME_WAIT 过多问题的分析与解决

https://blog.csdn.net/zxlyx/article/details/120397006 本文给出一个 TIME_WAIT 状态的 TCP 连接过多的问题的解决思路&#xff0c;非常典型&#xff0c;大家可以好好看看&#xff0c;以后遇到这个问题就不会束手无策了。 问题描述 模拟高并发的场景&#xff0c;会出现批量…