MySQL:视图

news2024/12/24 20:44:33

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.coloradmin.cn/o/1522100.html

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

相关文章

zed2i相机驱动的安装(2)

安装完sdk和wrapper&#xff0c;启动时显示缺少标定文件&#xff0c;第一反应是运行自带的标定程序 但是此时运行ZED tools里的标定程序也会出问题 打开 On Linux : /usr/local/zed/settings/On Windows : C:\ProgramData\Stereolabs\settings 查看里面是否是空的&#xff…

c++算法学习笔记 (8) 树与图部分

1.树与图的存储 &#xff08;1&#xff09;邻接矩阵 &#xff08;2&#xff09;邻接表 // 链式前向星模板&#xff08;数组模拟&#xff09; #include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N 100010, M …

官网链接怎么转二维码?扫码直接跳转官网的方法

随着互联网的不断发展&#xff0c;现在一般信息内容都是通过手机来获取的&#xff0c;所以现在通过手机访问官方网站获取内容也是一种很常见的方式&#xff0c;那么如何将官网网址生成二维码图片&#xff0c;用户能够通过扫码访问官方网站或者其他页面内容呢&#xff1f;下面分…

基于SpringBoot SSM vue办公自动化系统

基于SpringBoot SSM vue办公自动化系统 系统功能 登录 个人中心 请假信息管理 考勤信息管理 出差信息管理 行政领导管理 代办事项管理 文档管理 公告信息管理 企业信息管理 会议室信息管理 资产设备管理 员工信息管理 开发环境和技术 开发语言&#xff1a;Java 使用框架: S…

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

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

深入浅出FISCO BCOS:区块链底层平台

苏泽 大家好 这里是苏泽 一个钟爱区块链技术的后端开发者 本篇专栏 ←持续记录本人自学两年走过无数弯路的智能合约学习笔记和经验总结 如果喜欢拜托三连支持~ 我前面有补充相关的区块链的知识 如果没有了解的话 可能部分概念或名词会不懂哦 建议先了解一波再来看~http://t.c…

灯塔:CSS笔记(4)

伪类选择器&#xff1a; 1.作用与优势&#xff1a; 1.作用&#xff1a;根据元素在HTML中的结构关系查找元素 2.优势&#xff1a;减少对于HTML中类的依赖&#xff0c;有利于保持代码的整洁 3.场景&#xff1a;常用于查找某父级选择器中的子元素 2.选择器 选择器说明E:first-c…

关于UE的相机震动CameraShake

创建CameraShake资源 CameraShake配置是个蓝图类&#xff0c;我们选择创建BlueprintClass&#xff0c;父类选择CameraShakeBase即可。 参数调整 目前主要用到了 LocationAmplitudeMultiplier 1 LocationFrequencyMultiplier 10 RotationAmplitudeMultiplier 1 Rotation…

【3月16日-云服务器推荐】京东云降价了!!4折变2折 阿里云 腾讯云最新价格对比 选购指南 搭建博客 游戏服务器均可多用

3月16日更新&#xff0c;京东云又双叒降价了&#xff01; 《最新对比表》已更新在文章头部—腾讯云文档&#xff0c;文章具有时效性&#xff0c;请以腾讯文档为准&#xff01; 【腾讯文档实时更新】云服务器1分钟教会你如何选择教程 https://docs.qq.com/document/DV0RCS0lGeH…

Leet code 179 最大数

解题思路 贪心算法 贪心算法就是走一步看一步 每一步都取当前位置的最优解 这题我们该如何贪呢&#xff1f; 我们先把int数组转换为string数组 以示例2为例 3 30 34 5 9 排序哪个在前哪个在后&#xff1f; 3 30 &#xff08;330&#xff09;> 30 3 &#xff08;30…

免费阅读篇 | 芒果YOLOv8改进110:注意力机制GAM:用于保留信息以增强渠道空间互动

&#x1f4a1;&#x1f680;&#x1f680;&#x1f680;本博客 改进源代码改进 适用于 YOLOv8 按步骤操作运行改进后的代码即可 该专栏完整目录链接&#xff1a; 芒果YOLOv8深度改进教程 该篇博客为免费阅读内容&#xff0c;直接改进即可&#x1f680;&#x1f680;&#x1f…

leetcode每日一题--矩阵中移动的最大次数

一.题目原型 二.思路解析 1.动态规划 这道题要求的是矩阵的最大移动次数。根据题目意思&#xff0c;从索引 0 列开始向右移动&#xff0c;每次移动一列&#xff0c;最多移动到 n - 1 列&#xff0c;也就是 n - 1次。其移动规则为&#xff1a;当前单元格可以移动到其右上方、正…

安装PYQT5 遇到Microsoft Visual C++ 14.0 is required解决方法

# Time: 2024/03/16 #Author: Xiaohong # 运行环境: OS: Windows 7 旗舰版 # Python: 3.7.9 Pyqt5 # 目的: 解决安装PYQT5 遇到Microsoft Visual C 14.0 is required 1.安装PYQT5时&#xff0c;遇到Microsoft Visual C 14.0 is required&#xff0c;如图 2.查Microsoft…

Yolo系列算法-理论部分-YOLOv1

0. 紧接上一篇目标检测算法的介绍 基于深度学习的目标检测算法概述-CSDN博客 本篇YOLO算法系列&#xff0c;参考优秀作者-AI菌&#xff0c;文章链接&#xff1a;YOLO系列算法精讲&#xff1a;从yolov1至yolov8的进阶之路&#xff08;2万字超全整理&#xff09;_yolov9-CSDN博…

MySQL:SQL优化

1. 插入优化 使用insert语句单条单条数据插入效率偏低&#xff0c;建议使用insert批量插入数据&#xff0c;批量控制在500-1000条数据较为合适&#xff0c;当面对数以百万的数据时&#xff0c;可以使用load指令&#xff0c;提升插入数据效率 相关指令 #客户端连接服务端加上参…

2.3 HTML5新增的常用标签

2.3.1 HTML5新增文档结构标签 在HTML5版本之前通常直接使用<div>标签进行网页整体布局&#xff0c;常见布局包括页眉、页脚、导航菜单和正文部分。为了区分文档结构中不同的<div>内容&#xff0c;一般会为其配上不同的id名称。例如&#xff1a; <div id"h…

145 Linux 网络编程1 ,协议,C/S B/S ,OSI 7层模型,TCP/IP 4层模型,

一 协议的概念 从应用的角度出发&#xff0c;协议可理解为“规则”&#xff0c;是数据传输和数据的解释的规则。 典型协议 传输层 常见协议有TCP/UDP协议。 应用层 常见的协议有HTTP协议&#xff0c;FTP协议。 网络层 常见协议有IP协议、ICMP协议、IGMP协议。 网络接口层 常…

关于振弦采集仪的应用编写

instruction&#xff1a; 1、本应用基于深圳市安传物联科技有限公司所生产的八通道振弦变送器产品。该产品为MAX485 信号的变送设备&#xff0c; 并以Modbus协议输出。 2、本应用采用python语言编写。 功能实现&#xff1a; 1、发送&#xff1a; 01 03 10 00 00 02 C0 CB并…

Android分区存储到底是怎么回事

文章目录 一、Android存储结构二、什么是分区存储&#xff1f;三、私有目录和公有目录三、存储权限和分区存储有什么关系&#xff1f;四、我们应该该怎么做适配&#xff1f;4.1、利用File进行操作4.2、使用MediaStore操作数据库 一、Android存储结构 Android存储分为内部存储和…

Linux安装vLLM模型推理框架问题总汇

简介 vLLM 是一个专为大规模语言模型&#xff08;Large Language Models, LLM&#xff09;推理优化的服务框架和推理引擎。它可以高效地管理和部署预先训练好的大型语言模型&#xff0c;尤其是那些具有极高参数数量和复杂度的模型&#xff0c;如GPT系列及其他基于Transformer架…