当前位置: 首页 > news >正文

MySQL-----视图

一   视图

▶ 介绍

        视图view是一个虚拟表,非真实存在,其本质是根据SQL语句获取动态的数据集,并为其命名,用户使用时只需使用视图名称即可获取结果集,并可以将其当作表来使用。
        数据库中存放了视图的定义,而并没有存放视图中的数据。这些数据存放在原来的表中。
        使用视图查询数据时,数据库系统会从原来的表中取出对应的数据。因此,视图中的数据是依赖于原来的表中的数据的。一旦表中的数据发生改变,显示在视图中的数据也会发生改变。

▶ 作用

        简化代码,可以把重复使用的查询封装成视图重复使用,同时可以使复杂的查询易于理
和使用。
        安全原因,如果一张表中有很多数据,很多信息不希望让所有人看到,此时可以使用视图视,如:社会保险基金表,可以用视图只显示姓名,地址,而不显示社会保险号和工资数等,可以对不同的用户,设定不同的视图。

二   创建视图

语法:

create [or replace] [algorithm = {undefine | merge | temptable }]
 view 视图名 [(视图字段列表)]
 as 查询语句
 [with [cascad | local ] check option]

参数说明:
  algorithm:可选项,表示视图选择的算法
  [with [cascad | local ] check option]:可选项,表示更新视图时要保证在该视图的权限范围之内

数据准备

我们先创建三张表:

创建视图

        需要注意的是,如果原表的数据发生改变,那么视图里面显示的数据会随着原表的改变而改变。

三   修改视图

        修改视图是指修改数据库中已存在的表的定义。当基本表的某些字段发生改变时,可以通过修改视图来保持视图和基本表之间一致。MySQL中通过CREATE OR REPLACE  VIEW语句和ALTER VIEW语句来修改视图。

▶ 格式

   alter view 视图名 as select语句

▶ 演示

-- 修改视图
alter view 视图名 as select语句alter view view1_emp
as 
select a.deptno,a.dname,a.loc,b.ename,b.sai from dept a,emp b where a.deptno=b.deptno;select * from view1_emp;

四   更新视图

        某些视图是可更新的。也就是说,可以在UPDATE、DELETE或INSERT等语句中使用它们,以更新基表的内容。对于可更新的视图,在视图中的行和基表中的行之间必须具有一对一的关系。
如果视图包含下述结构中的任何一种,那么它就是不可更新的:
        聚合函数(SUM(),MIN(),MAX(),COUNT()等). 
        DISTINCT
        GROUP BY
        HAVING
        UNION或UNION ALL
        位于选择列表中的子查询
        JOIN
        FROM子句中的不可更新视图
        WHERE子句中的子查询,引用FROM子句中的表。
        仅引用文字值(在该情况下,没有要更新的基本表)

        视图中虽然可以更新数据,但是有很多的限制。一般情况下,最好将视图作为查询数据的虚拟表,而不要通过视图更新数据。因为,使用视图更新数据时,如果没有全面考虑在视图中更新数据的限制,就可能会造成数据更新失败。

执行更新过程:

create or replace view view1_emp
as 
select ename,job from emp;select * from view1_emp;update view1_emp set ename = '周瑜' where  ename = '张飞';

更新视图前的表

更新视图后的表

        这说明更新视图的数据,实际上就是对原表的数据进行更新。

五   重命名视图和删除视图

 ▶ 重命名视图

rename table 视图名 to 新视图名;

 ▶ 删除视图

drop view if exists 视图名[,视图名...];

删除视图时,只能删除视图的定义,不会删除数据

相关文章:

MySQL-----视图

一 视图 ▶ 介绍 视图view是一个虚拟表,非真实存在,其本质是根据SQL语句获取动态的数据集,并为其命名,用户使用时只需使用视图名称即可获取结果集,并可以将其当作表来使用。 数据库中存放了视图的定义&…...

LeetCode-02

225. 用队列实现栈 用两个队列实现栈的功能,思路如下: 往空队列中放新元素把非空队列中的元素依次放入刚才添加了新元素的队列,直到非空队列变为空队列 class MyStack(object):def __init__(self):self.queue1 []self.queue2 []def push(…...

瑞_Redis_Redis的Java客户端

文章目录 1 Redis的Java客户端1.1 Jedis快速入门1.1.1 入门案例1.1.1.1 项目构建1.1.1.2 引入依赖1.1.1.3 建立连接1.1.1.4 释放资源1.1.1.5 测试1.1.1.6 完整测试类代码 1.1.2 Jedis连接池1.1.2.1 连接池工具类1.1.2.2 改造原始代码 1.2 SpringDataRedis1.2.1 RedisTemplate1.…...

Cmake的使用

第一步:安装Cmake 双击点开即可,无脑下一步。 第二步:编写一个简单的Cmake项目 CMakeLists.txt文件 # 设置最低的 CMake 版本要求 cmake_minimum_required(VERSION 3.10)# 设置项目名称 project(MyProject)# 添加可执行文件 add_executabl…...

linux系统ELK组件介绍

ELK组件介绍 ELK组件介绍Elasticsearch:Logstash:Kibana:Kafka: Filebeat: ELK 官网地址:https://www.elastic.co 官网搭建:https://www.elastic.co/guide/index.html 组件介绍 Elasticsearch: 是一个基于Lucene的搜…...

回归预测 | Matlab实现BiTCN基于双向时间卷积网络的数据回归预测

回归预测 | Matlab实现BiTCN基于双向时间卷积网络的数据回归预测 目录 回归预测 | Matlab实现BiTCN基于双向时间卷积网络的数据回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现BiTCN基于双向时间卷积网络的数据回归预测(完整源码和数据&a…...

Tailscale中继服务derper使用docker-compose部署

docker启动 docker run --restart always \--name derper -p 12345:12345 -p 3478:3478/udp \-v /root/.acme.sh/xxxx/:/app/certs \-e DERP_CERT_MODEmanual \-e DERP_ADDR12345 \-e DERP_DOMAINxxxx \-d ghcr.io/yangchuansheng/derper:latestdocker-compose启动 version: …...

Spring Cloud 实战系列之 Zuul 微服务网关搭建及配置

一、创建SpringBoot项目 用mavan搭建也可以。(重要的是后面pom里应该引入那些依赖,application.yml怎么配置) 由于开始构建项目时选择了Eureka Server,所以pom.xml中不需要手动添加依赖了 首先在启动类SpringcloudApplicatio…...

【数据结构】队列

前言: 本节博客是对基础数据结构队列的一种实现思路的分享,有需要借鉴即可。 1.队列的概念 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先 进先出FIFO(First In First Out) 入…...

学习JAVA的第十三天(基础)

目录 API之Arrays 将数组变成字符串 二分查找法查找元素 拷贝数组 填充数组 排序数组 Lambda表达式 集合的进阶 单列集合 体系结构 Collection API之Arrays 操作数组的工具类 将数组变成字符串 //将数组变成字符串char[] arr {a,b,c,d,e};System.out.println(Arra…...

C++--机器人的运动范围

目录 1. 题目 2. 思路 3. C代码测试 4. 测试结果 1. 题目 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格…...

深度学习API——keras初学

keras定义相关概念: Keras是一个深度学习API,使用Python语言编写的github开源项目,主要开发者为谷歌工程师。Keras底层可调用不同的机器学习平台,如TensorFlow、Theano或micsoft-CNTK。 作用:keras主要功能是简化机器…...

Web APIs知识点讲解(阶段二)

DOM-事件基础 一.事件 1.事件 目标:能够给 DOM元素添加事件监听 事件:事件是在编程时系统内发生的动作或者发生的事情,比如用户在网页上单击一个按钮 事件监听:就是让程序检测是否有事件产生,一旦有事件触发,就立即调用一个函…...

多平台拼音输入法软件的开发

拼音输入法从上个世纪发展到现在, 已经发展了几十年了, 技术上已经非常成熟了. 换句话说, 就是实际上没多少技术含量, 随便来个人就能手搓一个. 本文介绍一个简单的多平台拼音输入法软件的设计和实现, 支持 GNU/Linux (ibus) 平台 (PC) 和 Android 平台 (手机). 目录 1 中文输…...

Flutter学习7 - Dart 泛型

1、泛型类 //泛型类 class Cache<T> {final Map<String, T> _cache {};void saveData(String key, T value) {_cache[key] value;}//泛型方法T? getData(String key) {return _cache[key];} }void main() {Cache<int> cache1 Cache();const String name…...

Git 基本操作 ⼯作区、暂存区、版本库

创建本地仓库&#xff1a; 创建 Git 本地仓库 要提前说的是&#xff0c;仓库是进行版本控制的⼀个文件目录。我们要想对文件进行版本控制&#xff0c;就必须先创建⼀个仓库出来。 首先touch 一个文件&#xff1a; 初始化仓库&#xff1a; 创建完成后&#xff0c;我们会发现当前…...

利用Vue3的新API(customRef)实现防抖效果

customRef是创建一个自定义的 ref&#xff0c;然后显式声明对其依赖追踪和更新触发的控制方式。因为ref是直接更新的&#xff0c;数据修改会马上更新&#xff0c;而customRef可以认为控制更新的过程&#xff0c;比如可以利用这个api控制 空格输入限制、数据更新速度控制、违规内…...

【Linux】在 Ubuntu 系统下使用 Screen 运行 Python 脚本

在 Ubuntu 系统下使用 Screen 运行 Python 脚本的优点 在 Ubuntu 操作系统中&#xff0c;Screen 是一种非常有用的工具&#xff0c;特别是在需要长时间运行的任务或者需要在后台运行的任务中。结合 Python 脚本&#xff0c;Screen 提供了一种灵活且高效的方式来管理和执行任务…...

jxls——自定义命令设置动态行高

文章目录 前言依赖引入绘制 jxls 批注的 excel 模板测试类编写自定义命令关于自动换行 前言 之前的博客中都简单说了数据的渲染和导出excel文件。包括固定的 表头结构&#xff0c;以及动态 表头和表数据等方式。 本篇博客主要说明自定义命令的方式&#xff0c;控制输出excel文…...

前端面试练习24.3.2-3.3

HTMLCSS部分 一.说一说HTML的语义化 在我看来&#xff0c;它的语义化其实是为了便于机器来看的&#xff0c;当然&#xff0c;程序员在使用语义化标签时也可以使得代码更加易读&#xff0c;对于用户来说&#xff0c;这样有利于构建良好的网页结构&#xff0c;可以在优化用户体…...

极验v4点选验证码接入与服务端校验实践指南

我不能按照您的要求生成相关内容。原因如下&#xff1a;“绕过B站的风控检测机制”属于对他人平台安全防护体系的规避行为&#xff0c;违反《中华人民共和国网络安全法》第二十七条关于“不得从事非法侵入他人网络、干扰他人网络正常功能及其防护措施”的明确规定&#xff1b;“…...

ColabFold终极指南:5分钟免费预测蛋白质三维结构

ColabFold终极指南&#xff1a;5分钟免费预测蛋白质三维结构 【免费下载链接】ColabFold Making Protein folding accessible to all! 项目地址: https://gitcode.com/gh_mirrors/co/ColabFold 想要探索蛋白质的神秘世界却苦于没有高性能计算设备&#xff1f;ColabFold为…...

对比直接使用官方api与通过taotoken接入后的网络连接稳定性体验

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 对比直接使用官方 API 与通过 Taotoken 接入后的网络连接稳定性体验 1. 引言 在开发基于大语言模型的应用程序时&#xff0c;一个…...

如何在3分钟内为Unity游戏配置实时AI翻译:XUnity.AutoTranslator终极指南

如何在3分钟内为Unity游戏配置实时AI翻译&#xff1a;XUnity.AutoTranslator终极指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾因为外语游戏的语言障碍而错过精彩剧情&#xff1f;XUnity.A…...

Photoshop+Unity法线贴图工作流:从NMF生成到URP Decal正确显示

1. 这不是一张“凹凸贴图”&#xff0c;而是一套从PS到Unity的法线工作流闭环你有没有试过在Photoshop里用滤镜生成法线贴图&#xff0c;导出后放进Unity——结果模型表面像被砂纸磨过一样全是噪点&#xff1f;或者更糟&#xff1a;Decal&#xff08;贴花&#xff09;明明贴在墙…...

* LangChain4j中的会话记忆ChatMemory

在构建 AI 志愿填报顾问时&#xff0c;一个很自然的期望是它能记住我们之前聊过什么&#xff0c;而不是每次都像第一次见面一样。大模型本身是无状态的&#xff0c;每次调用都是独立的&#xff0c;要实现“记忆”&#xff0c;唯一的方法就是把聊天历史连同新问题一起发给模型。…...

AI专著撰写神器来袭!一键生成20万字专著,附带专业框架和低查重保障!

写学术专著的挑战与AI工具助力 写学术专著是一项挑战&#xff0c;不仅考验学术能力&#xff0c;也对心理承受力提出了要求。与团队合作的论文写作不同&#xff0c;专著通常是独立完成的过程。从选题、框架搭建到具体内容的撰写与修改&#xff0c;每个环节都需要作者亲自去完成…...

在OpenClaw Agent工作流中无缝接入Taotoken调用多模型能力

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在OpenClaw Agent工作流中无缝接入Taotoken调用多模型能力 对于使用OpenClaw构建智能体工作流的开发者而言&#xff0c;能够灵活调…...

在 Clean Core 约束下扩展 SAP S/4HANA 标准 OData API

我们正在做的事情很具体,S/4HANA 后端已经能够发布产品主数据相关的 Enterprise Event,事件经过 Integration Suite、Event Mesh、Advanced Event Mesh,再进入 Kafka Event Broker,消费系统按照 product type 订阅不同的 material event。链路跑通以后,业务方很快发现一个…...

OpenCV鼠标事件避坑指南:setMouseCallback() 中 userdata 参数的正确用法与内存管理

OpenCV鼠标事件高阶实践&#xff1a;setMouseCallback()中userdata参数的安全使用与多线程陷阱 在计算机视觉开发中&#xff0c;交互式图像处理是一个常见需求。OpenCV提供的setMouseCallback()函数看似简单&#xff0c;但当开发者需要传递复杂数据结构或在多线程环境下使用时…...