MySQL:视图

1. 概述

在MySQL中,视图(View)是一个虚拟存在的表,其内容是由查询定义的。视图本身并不包含数据,它只包含一条SQL查询语句(即定义视图的SELECT语句)。当通过视图访问数据时,MySQL会执行这条查询语句,并返回查询结果。因此,视图可以看作是一个预定义的SQL查询,它提供了一种灵活的方式来访问和操作数据。

视图具有以下特点:

  1. 简化复杂查询:通过创建一个视图,可以将复杂的SQL查询语句简化为一个简单的查询,从而方便用户访问和操作数据。

  2. 数据抽象:视图可以隐藏数据的复杂性和底层表的结构,只展示用户需要关注的数据。这样,用户无需了解底层表的具体细节,只需通过视图来访问和操作数据。

  3. 安全性:通过视图,可以控制用户对数据的访问权限。可以创建只包含部分字段或部分记录的视图,从而限制用户对数据的访问范围。

  4. 逻辑独立性:当底层表的结构发生变化时,只需要修改视图的定义,而无需修改依赖于视图的应用程序代码。这提高了数据库的逻辑独立性。

2. 视图的基本操作

创建

-- 创建视图
-- create view 视图名称  as select (字段名)视图有哪些字段 from (表名)从哪张表提取字段 where 条件(过滤哪些数据进视图)
create view emp_vi_1 as select id, name from emp where age = 18;

  查看

查看创建视图的语句信息

show create view 视图名

 查看视图内的数据

select 字段名 from 视图名

-- 查看视图
-- 查看视图创建语句
show create view emp_vi_1;
-- 查看视图数据(和表操作一致)
select * from emp_vi_1;

 修改

create or replace view 视图名 as select 字段名 from 表名 where 条件;

alter view 视图名 as select 字段名 from 表名 where 条件; 

-- 修改视图
-- 方式一:create or replace view 视图名 as select 字段名(该视图有哪些字段)from 表名 where 条件过滤
create or replace view emp_vi_1 as select id, name, age from emp where age <= 20;
-- 方式二:alter view 视图名 as select 字段名(该视图有哪些字段) from 表名 where 条件过滤
alter view emp_vi_1 as select id, name from emp where age <= 20;

 删除

drop view if exists 视图名;

-- 删除视图
-- drop view (if exists)括号内容可省略 视图名1,视图名2... ;
drop view if exists emp_vi_1;

 3. 检查选项

-- 创建视图时加上关键字with cascaded check option
--                 with local check option;
-- 加上该关键字创建的视图在数据进行插入、更新、删除时会进行数据校验

cascaded 

-- cascaded注意:在插入数据到视图时如果该视图加了cascaded关键字则插入的数据需要同时满足当前视图的条件以及该视图所依赖的视图的条件(不论依赖视图是否添加了local、cascaded关键字)

栗子 1

-- 视图的创建可基于表创建也可也基于视图进行创建
create view emp_v_1 as select id, name, age from emp where age >= 10;
-- 基于视图1创建视图2
create view emp_v_2 as select id, name, age from emp_v_1 where age <= 30 with cascaded check option;-- 如:此时插入两条数据,会对视图2的插入进行校验,符合在对视图1进行校验,两个都符合才会进行数据插入
-- 插入成功
insert into emp_v_2 value (55, '汤姆', 25);
-- 插入失败
insert into emp_v_2 value (56, '杰瑞', 9);

 栗子2

-- 基于视图2创建视图3
create view emp_v_3 as select id, name, age from emp_v_2 where age >= 20;
-- 往视图3插入数据,此时视图3没有加关键字cascaded不会对视图3进行数据校验,检查完视图3后会对视图2进行校验,
-- 视图2加了cascaded会进行数据校验,并对所依赖的视图进行校验
-- 此时虽然不满足视图3,但该视图没有关键字,不会进行age >= 20 校验,此时同满足视图2,1,故不会报错,会在满足条件的视图中插入数据
insert into emp_v_3 value (92, '凯迪', 15);

local

-- local注意:再插入数据到视图时如果该视图加了local会对当前视图的条件进行数据校验,如果所依赖的视图没有添加local或者cascaded关键字则不会进行数据校验

local和cascaded区别 

-- local和cascaded相同点:
-- local、cascaded都会对当前添加了该关键字的视图进行数据校验
-- local和cascaded区别:
-- cascaded不论基于的视图是否含有cascaded、local关键字都会对所依赖的视图的条件进行数据校验
-- local所基于的视图如果没有cascaded、local关键字则不会对所依赖的视图的条件进行数据校验

 4. 更新

视图是基于表或者视图创建而来,当所依赖的表不存在要更新的内容自然更新失败 

 

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

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

相关文章

【软考高项】八、信息技术发展之新一代信息技术及应用

1、物联网 定义&#xff1a;通过信息传感设备&#xff0c;按约定的协议将任何物品与互联网相连接&#xff0c;进行信息交换和通信&#xff0c;以实现智能化识别、定位、跟踪、监控和管理的网络 分层&#xff1a; 感知层---各种传感器构成 网络层---物联网的中枢&#xff0c…

西门子TIA中配置Anybus PROFINET IO Slave 模块

1、所需产品 Siemens S7 PLC CPU 315-2 PN/DP 6ES7 315-2EH-0AB0 Siemens PLC 编程电缆 n.a. n.a. PC ,并安装Siemens PLC编程软件 TIA Portal V11 X-gateway Slave 接口的GSDML文件 根据网关的软件版本而定 Anybus Communicator GSD文件 GSDML-V1.0-HMS-ABCPRT-20050317.xl…

win下 VirtualBox 自动启动脚本脚本

文章目录 一、找到VBoxManage二、测试脚本1、打开cmd2、输入命令 (直接把上面找到的VBoxManage.exe 拖入到cmd中&#xff0c;这样就不用输入路径了)3、效果展示 比如虚拟机中的系统名称叫“centos-mini” 三、设置自动启动脚本1、复制刚才测试好的命令到新建文本中2、修改文本名…

Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)

Golang实现Redis分布式锁&#xff08;Lua脚本可重入自动续期&#xff09; 1 概念 应用场景 Golang自带的Lock锁单机版OK&#xff08;存储在程序的内存中&#xff09;&#xff0c;分布式不行 分布式锁&#xff1a; 简单版&#xff1a;redis setnx》加锁设置过期时间需要保证原…

Unity3d版白银城地图

将老外之前拼接的Unity3d版白银城地图&#xff0c;导入到国内某手游里&#xff0c;改成它的客户端地图模式&#xff0c;可以体验一把手游的快乐。 人物角色用的是它原版的手游默认的&#xff0c;城内显示效果很好&#xff0c;大家可以仔细看看。 由于前期在导入时遇到重大挫折&…

PMP的学习方法

PMBOK编撰了管理项目需要的49个过程&#xff08;输入、工具技术、输出&#xff09;。工具技术文件&#xff0c;林林总总百余个。第一部分&#xff0c;按照十大知识领域顺序从前到后编排&#xff1b;第二部分&#xff0c;按照五大过程组顺序重新编排了一遍。 一&#xff0c;PMB…

xray问题排查,curl: (35) Encountered end of file(已解决)

经过了好几次排查&#xff0c;都没找到问题&#xff0c;先说问题的排查过程&#xff0c;多次确认了user信息&#xff0c;包括用户id和alterid&#xff0c;都没问题&#xff0c;头大的一逼 问题排查过程 确保本地的xray服务是正常的 [rootk8s-master01 xray]# systemctl stat…

StarRocks面试题及答案整理,最新面试题

StarRocks 的 MV&#xff08;物化视图&#xff09;机制是如何工作的&#xff1f; StarRocks 的物化视图&#xff08;MV&#xff09;机制通过预先计算和存储数据的聚合结果或者转换结果来提高查询性能。其工作原理如下&#xff1a; 1、数据预处理&#xff1a; 在创建物化视图时…

开发指南005-前端配置文件

平台要求无论前端还是后端&#xff0c;修改配置可以直接用记事本修改&#xff0c;无需重新打包或修改压缩包里文件。就前端而言&#xff0c;很多系统修改配置是在代码里修改&#xff0c;然后打包或者是修改编译环境来重新编译。 平台前端的配置文件为/static/js/下qlm_config.j…

算法打卡day19|二叉树篇08|Leetcode 235. 二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

算法题 Leetcode 235. 二叉搜索树的最近公共祖先 题目链接:235. 二叉搜索树的最近公共祖先 大佬视频讲解&#xff1a;二叉搜索树的最近公共祖先视频讲解 个人思路 昨天做过一道二叉树的最近公共祖先&#xff0c;而这道是二叉搜索树&#xff0c;那就要好好利用这个有序的特点…

2000-2021年各省外商直接投资水平面板数据(含原始数据+计算结果)(无缺失)

2000-2021年各省外商直接投资水平面板数据&#xff08;含原始数据计算结果&#xff09;&#xff08;无缺失&#xff09; 1、时间&#xff1a;2000-2021年 2、指标&#xff1a;外商直接投资额&#xff08;万美元&#xff09;、外商直接投资额&#xff08;万元&#xff09;、国…

leetcode代码记录(动态规划基础题(斐波那契数列)

目录 1. 题目&#xff1a;2. 斐波那契数列&#xff1a;小结&#xff1a; 1. 题目&#xff1a; 斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a…

YOLOv9更换iou|包含CIoU、DIoU、MDPIoU、GIoU

专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;助力高效涨点&#xff01;&#xff01;&#xff01; 一、改进点介绍 更换YOLOv9中使用的Iou计算方式&#xff0c;目前支持CIoU、DIoU、MDPIoU、GIoU。 二、Iou模块详解 2.1 模块简介 Iou的主要思想&…

<JavaEE> 数据链路层 -- 以太网协议、MTU限制、ARP协议

目录 以太网协议 什么是以太网&#xff1f; 以太网的帧格式 什么是MAC地址&#xff1f; MAC地址和IP地址的对比&#xff1f; MTU&#xff08;最大传输单元&#xff09;限制 什么是MTU限制&#xff1f; MTU对IP协议有什么影响&#xff1f; MTU对UDP协议有什么影响&…

微服务:Bot代码执行

每次要多传一个bot_id 判网关的时候判127.0.0.1所以最好改localhost 创建SpringCloud的子项目 BotRunningSystem 在BotRunningSystem项目中添加依赖&#xff1a; joor-java-8 可动态编译Java代码 2. 修改前端&#xff0c;传入对Bot的选择操作 package com.kob.botrunningsy…

【SpringBoot3】整合Druid数据源和Mybatis 项目打包和运行

文章目录 一、整合Druid数据源二、整合Mybatis2.1 MyBatis整合步骤2.1 Mybatis整合实践2.1 声明式事务整合配置2.1 AOP整合配置 三、项目打包和运行命令启动和参数说明 总结web 与 springboot 打包区别JDK8的编译环境 执行17高版本jar 一、整合Druid数据源 创建模块 &#xff1…

云备份项目2

云备份项目 文章目录 云备份项目4. 服务端代码设计4.1 服务端工具类实现4.1.1 文件实用工具类设计4.1.2 Json实用工具类设计 4.2 服务端配置信息模块实现4.2.1 系统配置信息4.2.2 单例文件配置类设计 4.3 服务端数据管理模块实现4.3.1 备份数据类的实现4.3.2 数据管理类的设计 …

Js输入输出语句

输入语法 prompt("您想输入的是&#xff1f;")输出语法: 语法1: document.write(‘要出的内容’&#xff09; <body><script>document.write("你好")document.write("<h1>我是<h1>")</script> </body>作…

蓝桥杯刷题(九)

1.三国游戏 代码 #输入数据 nint(input()) Xlilist(map(int,input().split())) Ylilist(map(int,input().split())) Zlilist(map(int,input().split())) #分别计算X-Y-Z/Y-Z-X/Z-X-Y并排序 newXli sorted([Xli[i] - Yli[i] - Zli[i] for i in range(n)],reverseTrue) newYli …

【NTN 卫星通信】 TN和多NTN配合的应用场景

1 场景描述 此场景描述了农村环境&#xff0c;其中MNO (运营商TerrA)仅在城市附近提供本地地面覆盖&#xff0c;而MNO (SatA)提供广泛的NTN覆盖。SatA使用GSO轨道和NGSO轨道上的卫星。SatA与TerrA有漫游协议&#xff0c;允许:   所有TerrA用户的连接&#xff0c;当这些用户不…