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

[MySQL]视图

视图是什么 

     视图(View)是一种虚拟存在的表。视图中的数据,来自定义视图的查询语句中,使用的表,并且是在使用视图时动态生成的。

     简单讲,视图只保存了查询的SQL逻辑,不保存查询结果。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。

为什么要使用视图(视图的作用)

1.简化查询语句

    与Java等语言中的方法一样,对于重复使用到的查询语句(比如作为子查询,代表一个列或者用于WHERE的条件判断),可以将其定义成视图。这样子使用时就直接调用视图即可,项目越大,越能简化查询语句。

2.保护数据安全

    表可以授权,但不能授权到 特定行和特定的列上。通过视图用户只能查询和修改他们所能见到的数据,也能帮用户屏蔽真实表结构变化带来的影响 。如果你想让别人只能看到一张表中的个别字段的数据,此时就会使用到视图。

视图的基本操作

# 创建视图
CREATE [OR REPLACE] VIEW 视图名称[(列名列表)] AS SELECT语句 [ WITH [ CASCADED | LOCAL ] CHECK OPTION ];# 查看视图的创建语句
SHOW CREATE VIEW 视图名称;# 查询视图中的数据
SELECT 字段名 FROM 视图名称 ...;//与查询表的语句一样# 修改视图
# 方式一:直接覆盖
CREATE [OR REPLACE] VIEW 视图名称[(列名列表)] AS SELECT语句 [ WITH [ CASCADED | LOCAL ] CHECK OPTION ] 
# 方式二:修改
ALTER VIEW 视图名称[(列名列表)] AS SELECT语句 [ WITH [ CASCADED | LOCAL ] CHECK OPTION ]# 删除视图
DROP VIEW [IF EXISTS] 视图名称 [,视图名称] ...

    注意,想要使视图能够更新,视图中的行与基础表中的行之间必须存在一对一的关系。  

    视图包含以下任何一项,则该视图不可更新:

A. 聚合函数或窗口函数(SUM()、 MIN()、 MAX()、 COUNT()等)B. DISTINCTC. GROUP BYD. HAVINGE. UNION 或者 UNION ALL

检查选项 

    当使用WITH CHECK OPTION子句创建视图时,MySQL会通过视图检查正在更改的每个行,例如 插入、更新、删除,以使其符合视图的定义。 MySQL还允许基于另一个视图创建视图,它还会检查依赖视图中的规则以保持一致性。为了确定检查的范围,mysql提供了两个选项:

    CASCADED 和 LOCAL,默认值为 CASCADED 。

CASCADED:假设有两个视图为v1和v2。v2是基于v1创建的,如果v2的检查规则定义为CASCADED(或者未指定,则默认也为CASCADED)。此时,使用v2插入数据时,不仅会检查v2的检查条件,还会检查v1的检查条件

CREATE OR REPLACE VIEW v1 AS SELECT empno,ename,sal FROM emp_back WHERE sal<=2000;CREATE OR REPLACE VIEW v2 AS SELECT  empno,ename,sal FROM v1 WHERE sal>=1000
WITH CASCADED CHECK OPTION;INSERT INTO v2 VALUES(8080,'TOM',1888);
INSERT INTO v2 VALUES(8081,'MARY',2500);

    执行上述代码时,8080可以插入成功,但是8081插入不会成功。虽然8081的sal为2500,满足v2的sal>=1000,但是不满足v1的sal<=2000,所以插入不成功。

LOCAL: 执行检查时,只会检查v2,不会检查v2的关联视图v1

将之前v2的CASCADED修改为LOCAL,此时就可以发现,8081可以插入成功了,因为它不再检查v1的sal<=2000。

相关文章:

[MySQL]视图

视图是什么 视图&#xff08;View&#xff09;是一种虚拟存在的表。视图中的数据&#xff0c;来自定义视图的查询语句中&#xff0c;使用的表&#xff0c;并且是在使用视图时动态生成的。 简单讲&#xff0c;视图只保存了查询的SQL逻辑&#xff0c;不保存查询结果。所以我们在…...

Windows Server2012 R2搭建NFS服务器

正文共&#xff1a;1024 字 23 图&#xff0c;预估阅读时间&#xff1a;1 分钟 在测试vCenter的集群操作时&#xff0c;出现了共享vSAN错误的问题&#xff0c;导致无法继续。我也只好先创建一个共享NFS&#xff08;Network File System&#xff0c;网络文件系统&#xff09;存储…...

SQL题:使用hive查询各类型专利top 10申请人,以及对应的专利申请数

一、题目以及介绍 题目介绍&#xff1a; 1、表名&#xff1a;t_patent_detail &#xff08;专利明细表&#xff09; 2、表字段&#xff1a;专利号(patent_id)、专利名称(patent_name)、专利类型(patent_type)、申请时间(aplly_date)、授权时间(authorize_date)、申请人(apply_…...

使用sealos部署的集群在部署metrics-server时日志x509

1、下载文件并进行部署 wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml2、进行部署 kubectl apply -f components.yaml3、发现问题 pod容器已经启动但是健康检查没有通过 kubectl get pod -n kube-system metrics-server…...

WPF怎么通过RestSharp向后端发请求

1.下载RestSharpNuGet包 2.请求类和响应类 public class ApiRequest {/// <summary>/// 请求地址/// </summary>public string Route { get; set; }/// <summary>/// 请求方式/// </summary>public Method Method { get; set; }/// <summary>//…...

promise的用法以及注意事项,看了这篇你就会了

一&#xff0c;为什么要使用promise,ta能解决那些问题&#xff1f; Promise 是异步编程的一种解决方案&#xff1a; 从语法上讲&#xff0c;Promise是一个对象&#xff0c;从它可以获取异步操作的消息&#xff1b;从本意上讲&#xff0c;它是承诺&#xff0c;承诺它过一段时间…...

vue3如何使用pinia设置全局状态,附常见面试题

1. stores/index.ts 文件 在 index.ts 中创建 store 实例并封装了注册逻辑&#xff0c;这样可以方便地将整个 Pinia 实例注册到 Vue 应用中。代码如下&#xff1a; import type { App } from vue import { createPinia } from piniaconst store createPinia()// 全局注册 st…...

lerna+umi ‘max‘ 不是内部或外部命令,也不是可运行的程序

lerna不管version7还是老版都报 $ max setup max 不是内部或外部命令&#xff0c;也不是可运行的程序 或批处理文件。 error Command failed with exit code 1. 这点问题是因为lerna没编译完成&#xff1b; 解决: 首先我们在lerna packages 里用cli 安装umi&#xff1b;然后…...

美格智能5G车规级通信模组: 5G+C-V2X连接汽车通信未来十年

自2019年5G牌照发放开始&#xff0c;经过五年发展&#xff0c;我国5G在基础设施建设、用户规模、创新应用等方面均取得了显著成绩&#xff0c;5G网络建设也即将从基础的大范围覆盖向各产业融合的全场景应用转变。工业和信息化部数据显示&#xff0c;5G行业应用已融入76个国民经…...

「C/C++」C/C++ 指针篇 之 指针运算

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「C/C」C/C程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…...

计算机网络网络层笔记

互联网提供的两种服务 1.虚电路服务 2.数据报服务 需要记住的是现在只用第二种也就是数据报服务 网际协议IP 物理层的中断系统:转发器(hub) 链路层的中断系统:交换机 网络层的中断系统:路由器 网络层以上:网关 如上图所示,网关是用来访问其他的网段的一个接口,网关的地…...

长亭那个检测能力超强的 WAF,出免费版啦

告诉你们一个震撼人心的消息&#xff0c;那个检测能力超强的 WAF——长亭雷池&#xff0c;他推出免费社区版啦&#xff0c;体验地址见文末。 八年前我刚从学校毕业&#xff0c;在腾讯做安全研究&#xff0c;看到宇森在 BlackHat 上演讲的议题 《永别了&#xff0c;SQL 注入》 …...

rabbitMQ RabbitTemplate 发送消息

消息发送确认机制 消息发送确认机制&#xff1a;消息由producer发送后&#xff0c;确认其是否到达broker&#xff0c;又是否被exchange转发至对应queue的机制 该机制分为两部分&#xff1a;producer---broker&#xff0c;exchange---queue 前者的实现依靠ConfirmCallback机制…...

本系列是《10万字208道Java经典面试题总结(附答案)》的2024修订版。

公众号 后端学习指南 本系列是《10万字208道Java经典面试题总结(附答案)》的2024修订版。 1、说说跨平台性 我们希望编写好的代码和程序,最好可以在任意平台和环境下运行,而不需要根据不同的平台,编写不同的代码。 比如,我编写的一个博客管理系统,我希望它可以在windo…...

C语言文件基础概念的理解(一)

文件基础概念 为什么有文件&#xff1f; 我们写的程序的数据是存储在电脑的内存中&#xff0c;如果程序退出&#xff0c;内存回收&#xff0c;数据就丢失 了&#xff0c;等再次运⾏程序&#xff0c;是看不到上次程序的数据的&#xff0c;如果要将数据进⾏持久化的保存&#xf…...

C++ lambda 匿名函数

看了明仕强老师的课程&#xff0c;C匿名函数也可以很简单 下面请看示例代码&#xff1a; /* lambda表达式学习&#xff0c;测试主函数 */#include <iostream>using namespace std;int main() {printf("Lambda test Demo:\n");//值捕获,值捕获的时候不能修…...

基于python的简单web服务器示例

安装flask flask 简介&#xff1a;是一个用Python编写的Web应用程序框架。 它由 Armin Ronacher 开发&#xff0c;他领导一个名为Pocco的国际Python爱好者团队。 Flask基于Werkzeug WSGI工具包和Jinja2模板引擎。两者都是Pocco项目 新建项目 创建好的效果 pip list 检索 安装…...

02- 模块化编程-006 ADC0808数码显示对比

1、ADC0808 芯片介绍 ADC0808是一款集成的CMOS设备&#xff0c;包含8位模拟至数字转换器、8通道多路复用器和与微处理器兼容的控制逻辑。8位A/D转换器采用逐次逼近作为转换技术。转换器特点包括高阻抗斩波稳定比较器、256R电压分压器、模拟开关树和逐次逼近寄存器。8通道多路复…...

又发现了Mac妙控鼠标的新使用方法

我一直是不爱用妙控鼠标的&#xff0c;因为用起来怪怪的&#xff0c;但是今天发现BettreAndBetter支持妙控鼠标的修改&#xff0c;于是就找出了闲置了许久的妙控鼠标试了一下 优化后的妙控鼠标使用起来就没有任何不适应的地方了&#xff0c;三指按下模拟中键&#xff0c;而且还…...

Webserver(4.6)poll和epoll

目录 pollclient.cpoll.c epollepoll.cclient.c epoll的两种工作模式水平触发边沿触发 poll poll是对select的一个改进 select的缺点在于每次都需要将fd集合从用户态拷贝到内核态&#xff0c;开销很大。每次调用select都需要在内核遍历传递进来的所有fd&#xff0c;这个开销也…...

智慧树刷课插件:如何用自动化工具解放你的学习时间

智慧树刷课插件&#xff1a;如何用自动化工具解放你的学习时间 【免费下载链接】zhihuishu 智慧树刷课插件&#xff0c;自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 你是否曾经花费大量时间在智慧树平台上手动点击视频、处…...

Seraphine:如何通过智能战绩查询和BP辅助提升英雄联盟竞技体验

Seraphine&#xff1a;如何通过智能战绩查询和BP辅助提升英雄联盟竞技体验 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 想象一下这样的场景&#xff1a;你刚刚进入英雄联盟的排位赛BP阶段&#xff0c;屏幕…...

为内部知识库问答机器人接入Taotoken多模型增强能力

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为内部知识库问答机器人接入Taotoken多模型增强能力 构建企业内部知识库问答系统&#xff0c;是提升信息流转效率和员工生产力的常…...

团队项目空间、角色继承链、资产水印策略——Midjourney新功能三大硬核模块详解,错过将丧失企业级部署资格

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;团队项目空间、角色继承链、资产水印策略——Midjourney新功能三大硬核模块详解&#xff0c;错过将丧失企业级部署资格 Midjourney v6.3 企业版正式引入三大底层架构级能力&#xff1a;团队项目空间&#xff…...

从Java到AI大模型:小白程序员必备转型指南,收藏学习不迷路!

本文为传统Java开发者提供了从入门到精通AI大模型的四步转型路径。首先利用成熟AI接口&#xff0c;其次掌握Langchain和LlamaIndex开发工具&#xff0c;再次深入Agent机制设计自动化流程&#xff0c;最后搭建本地专属模型。作者结合自身经验&#xff0c;分享了实战项目和避坑指…...

别再乱接线了!手把手教你用SC-09电缆搞定三菱FX2N PLC通讯(附GX Developer配置)

三菱FX2N PLC通讯实战&#xff1a;SC-09电缆的正确打开方式 第一次接触三菱FX2N PLC时&#xff0c;很多人都会被通讯问题难住。那些看似简单的接线背后藏着不少门道——用错线序可能导致通讯失败&#xff0c;甚至损坏设备。本文将带你避开常见陷阱&#xff0c;从硬件连接到软件…...

ZYNQ平台SGMII光口实战:从Vivado连线、设备树到静态IP设置的完整避坑指南

ZYNQ平台SGMII光口实战&#xff1a;从Vivado连线到静态IP部署的全流程解析 在嵌入式系统开发中&#xff0c;以太网通信的稳定实现往往是项目成功的关键。对于采用Xilinx ZYNQ系列FPGA的开发者而言&#xff0c;SGMII&#xff08;Serial Gigabit Media Independent Interface&…...

华为昇腾Atlas200边缘设备开箱即用指南:从CANN环境到YOLOv8模型部署的保姆级避坑教程

华为昇腾Atlas200边缘设备实战&#xff1a;YOLOv8模型部署全流程避坑指南 第一次拿到华为昇腾Atlas200边缘计算设备时&#xff0c;那种既兴奋又忐忑的心情记忆犹新。作为一款专为AI推理设计的边缘设备&#xff0c;Atlas200凭借其强大的算力和紧凑的体型&#xff0c;在智能安防…...

Taotoken控制台提供的API Key管理与访问控制功能详解

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken控制台提供的API Key管理与访问控制功能详解 对于团队管理者或项目负责人而言&#xff0c;如何安全、高效地分发和管理大模…...

终极指南:使用Play Integrity API Checker保护你的Android应用安全

终极指南&#xff1a;使用Play Integrity API Checker保护你的Android应用安全 【免费下载链接】play-integrity-checker-app Get info about your Device Integrity through the Play Intergrity API 项目地址: https://gitcode.com/gh_mirrors/pl/play-integrity-checker-a…...