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

【MySQL】视图(十)

🚗MySQL学习·第十站~
🚩本文已收录至专栏:MySQL通关路
❤️文末附全文思维导图,感谢各位点赞收藏支持~

一.引入

视图(View)是一种虚拟存在的视图中的数据并不在数据库中实际存在行和列数据来自创建视图的查询中使用的表(基表),并且是在使用视图时动态生成的。 也就是说,视图其本身只是一段查询的SQL逻辑

在这里插入图片描述

视图也是一张数据库表,当我们创建以后,也可以像操作正常数据库一样操作它。其用途:

  • 可以简化用户对数据的理解和操作。那些被经常使用的复杂多表查询可以被定义为视图,从而避免以后的操作每次都需指定全部的条件。
  • 数据库可以授权,但不能授权到数据库特定行和特定的列上。配合视图使用可以限制用户只能查询和修改他们所能见到的数据
  • 视图可帮助用户屏蔽真实表结构变化带来的影响。

二.相关操作

(1) 创建视图

  • 语法
CREATE [OR REPLACE] VIEW 视图名称[(列名列表)] AS SELECT语句 [ WITH [ CASCADED | LOCAL ] CHECK OPTION ]

在这里插入图片描述

(2) 操作数据

视图也是一张表,我们可以像操作正常表一样操作视图。

  • 例如查询视图所有数据

在这里插入图片描述

(3) 修改视图

  • 语法
-- 方式一:
CREATE OR REPLACE VIEW 视图名称[(列名列表)] AS SELECT语句 [ WITH [ CASCADED | LOCAL ] CHECK OPTION ]
-- CREATE OR REPLACE 不存在则创建, 存在则替换-- 方式二:
ALTER VIEW  视图名称[(列名列表)] AS SELECT语句 [ WITH [ CASCADED | LOCAL ] CHECK OPTION ]
  • 方式一

在这里插入图片描述

  • 方式二

在这里插入图片描述

(4) 删除视图

  • 语法
DROP VIEW [IF EXISTS] 视图名称 [,视图名称]
-- [,视图名称] 若同时删除多张视图,以逗号分割

在这里插入图片描述

(5) 查看创建视图语句

  • 语法
SHOW  CREATE  VIEW  视图名称
  • 除了我们所指定的参数,还有一堆默认配置
    在这里插入图片描述

三.检查选项

(1) 概述

由于视图是虚拟存在的表,我们对视图的操作都会反应到基表当中,假设我们对视图表插入不符合视图where条件的数据,那么这条数据只会存在于基表当中,而我们在视图表无法获悉,这岂不是插入了一条无效数据?

在这里插入图片描述

在我们创建或修改视图的语句中可以看到WITH CHECK OPTION选项,MySQL会通过视图检查正在更改的每个行,例如 插 入,更新,删除,对于满足条件(例如where条件)的操作,我们允许,否则禁止,以使其符合视图的定义。 由于MySQL允许基于另一个视图创建视图,因此它还会检查依赖视图中的规则以保持一致性。为了确定检查的范围,mysql提供了两个选项: CASCADEDLOCAL默认值CASCADED

(2) CASCADED级联

假设v2视图是基于v1视图的,如果在v2视图创建的时候指定了检查选项为 cascaded,v1视图 创建时未指定检查选项(如果指定了则继续检查上一级,以此往复)。 则在对v2进行操作执行检查时,不仅会检查v2,还会级联检查v2的关联视图v1,如果不满足条件则无法进行相关操作。

在这里插入图片描述

  • u2插入失败示例

在这里插入图片描述

  • u2插入成功

在这里插入图片描述

  • u1插入情况

在这里插入图片描述

(3) LOCAL本地

与上述类似,LOCAL也会递归的去寻找当前视图所依赖的视图。不同的是,如果当前视图或者依赖的视图后面定义了with check option检查选项才会校验我们操作的数据是否满足该视图的条件(where),否则不会校验。

在这里插入图片描述

  • 依赖视图未定义检查选项

在这里插入图片描述

  • 依赖视图定义了检查选项
    在这里插入图片描述

四.视图更新条件

要使视图可更新,视图中的行与基础表中的行之间必须存在一对一的关系。如果视图包含以下任何一 项,则该视图不可更新:

  • 聚合函数或窗口函数(SUM()、 MIN()、 MAX()、 COUNT()等)
  • DISTINCT
  • GROUP BY
  • HAVING
  • UNION 或者 UNION ALL

例如我们创建视图时使用了聚合函数,破坏了一对一关系

create view stu_v_count as select count(*) from student;

如果我们对这个视图进行更新或插入的,将会报错。

insert into stu_v_count values(10);

在这里插入图片描述

五.全文概览

在这里插入图片描述

相关文章:

【MySQL】视图(十)

🚗MySQL学习第十站~ 🚩本文已收录至专栏:MySQL通关路 ❤️文末附全文思维导图,感谢各位点赞收藏支持~ 一.引入 视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据…...

面试手写实现Promise.all

目录 前言常见面试手写系列Promise.resolve 简要回顾源码实现Promise.reject 简要回顾源码实现Promise.all 简要回顾源码实现Promise.allSettled 简要回顾源码实现Promise.race 简单回顾源码实现结尾 前言 (?﹏?)曾经真实发生在一个朋友身上的真实事件,面试官让…...

TCP网络通信编程之字符流

【案例1】 【题目描述】 【 注意事项】 (3条消息) 节点流和处理流 字符处理流BufferedReader、BufferedWriter,字节处理流-BufferedInputStream和BufferedOutputStream (代码均正确且可运行_Studying~的博客-CSDN博客 1。这里需要使用字符处理流,来将…...

佰维存储面向旗舰智能手机推出UFS3.1高速闪存

手机“性能铁三角”——SoC、运行内存、闪存决定了一款手机的用户体验和定位,其中存储器性能和容量对用户体验的影响越来越大。 针对旗舰智能手机,佰维推出了UFS3.1高速闪存,写入速度最高可达1800MB/s,是上一代通用闪存存储的4倍以…...

降龙十八掌

目录 大数据: 1 HIVE: 1.1 HIVE QL 1.1.1 创建表 1.1.2 更新表 1.1.3 常用语句 1.2 hive参数配置 大数据: 1 HIVE: 1.1 HIVE QL DDL中常用的命令有:create,drop,alter,trunc…...

【项目设计】MySQL 连接池的设计

目录 👉关键技术点👈👉项目背景👈👉连接池功能点介绍👈👉MySQL Server 参数介绍👈👉功能实现设计👈👉开发平台选型👈👉MyS…...

Ubuntu系统adb开发调试问题记录

Ubuntu系统adb开发调试问题记录 一、adb devices no permissions二、自定义adb server端口三、动态库目录四、USB抓包 一、adb devices no permissions lsusb -t 设备树直观地查看设备的Bus ID和Device Num,lsusb找到对应的PID和VID编辑udev规则 sudo vim /etc/ud…...

【宏定义】——检验条件是否成立,并返回指定的值

文章目录 功能说明实现示例解析扩展 功能说明 宏检验条件是否成立,并返回指定的值 #define TU_VERIFY(...) _GET_3RD_ARG(__VA_ARGS__, TU_VERIFY_2ARGS, TU_VERIFY_1ARGS, UNUSED)(__VA_ARGS__)TU_VERIFY(1) 检验为真,啥也不干TU_VERIFY(0) 校验为假&…...

UE5引擎源码小记 —反射信息注册过程

序 最近看了看反射相关的知识,用不说一点人话的方式来说,反射是程序在运行中能够动态获取修改或调用自身属性的东西。 一开始我是觉得反射用处好像不大,后续查了下一些反射的使用环境,发现我格局小了,我觉得用处不大的…...

Redis缓存预热

说明:项目中使用到Redis,正常情况,我们会在用户首次查询数据的同时把该数据按照一定命名规则,存储到Redis中,称为冷启动(如下图),这种方式在一些情况下可能会给数据库带来较大的压力…...

Android 耗时分析(adb shell/Studio CPU Profiler/插桩Trace API)

1.adb logcat 查看冷启动时间和Activity显示时间: 过滤Displayed关键字,可看到Activity的显示时间 那上面display后面的是时间是指包含哪些过程的时间呢? 模拟在Application中沉睡1秒操作,冷启动情况下: 从上可知&…...

保护隐私与安全的防关联、多开浏览器

随着互联网的不断发展,我们越来越离不开浏览器这个工具,它为我们提供了便捷的网络浏览体验。然而,随着我们在互联网上的活动越来越多,我们的个人信息和隐私也日益暴露在网络风险之下。在这种背景下,为了保护个人隐私和…...

CloudStudio搭建Next框架博客_抛开电脑性能在云端编程(沉浸式体验)

文章目录 ⭐前言⭐进入cloud studio工作区指引💖 注册coding账号💖 选择cloud studio💖 cloud studio选择next.js💖 安装react的ui框架(tDesign)💖 安装axios💖 代理请求跨域&#x…...

【FPGA IP系列】FIFO深度计算详解

FIFO(First In First Out)是一种先进先出的存储结构,经常被用来在FPGA设计中进行数据缓存或者匹配传输速率。 FIFO的一个关键参数是其深度,也就是FIFO能够存储的数据条数,深度设计的合理,可以防止数据溢出,也可以节省…...

JavaScript中语句和表达式

在JavaScript编程中,Statements和Expressions都是代码的构建块,但它们有不同的特点和用途。 ● Statements(语句)是执行某些操作的完整命令;每个语句通常以分号结束。例如,if语句、for语句、switch语句、函…...

打卡力扣题目十

#左耳听风 ARST 打卡活动重启# 目录 一、题目 二、解决方法一 三、解决方法二 关于 ARTS 的释义 —— 每周完成一个 ARTS: ● Algorithm: 每周至少做一个 LeetCode 的算法题 ● Review: 阅读并点评至少一篇英文技术文章 ● Tips: 学习至少一个技术技巧 ● Shar…...

UniApp实现API接口封装与请求方法的设计与开发方法

UniApp实现API接口封装与请求方法的设计与开发方法 导语:UniApp是一个基于Vue.js的跨平台开发框架,可以同时开发iOS、Android和H5应用。在UniApp中,实现API接口封装与请求方法的设计与开发是一个十分重要的部分。本文将介绍如何使用UniApp实…...

利用小波分解信号,再重构

function [ output_args ] example4_5( input_args ) %EXAMPLE4_5 Summary of this function goes here % Detailed explanation goes here clc; clear; load leleccum; s leleccum(1:3920); % 进行3层小波分解,小波基函数为db2 [c,l] wavedec(s,3,db2); %进行…...

QT数据库编程

ui界面 mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" #include <QButtonGroup> #include <QFileDialog> #include <QMessageBox> MainWindow::MainWindow(QWidget* parent): QMainWindow(parent), ui(new Ui::M…...

基于stm32单片机的直流电机速度控制——LZW

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 一、实验目的二、实验方法三、实验设计1.实验器材2.电路连接3.软件设计&#xff08;1&#xff09;实验变量&#xff08;2&#xff09;功能模块a&#xff09;电机接收信号…...

实际项目中使用mockjs模拟数据

项目中的痛点 自己模拟的数据对代码的侵入程度太高&#xff0c;接口完成后要删掉对应的代码&#xff0c;导致接口开发完后端同事开发完&#xff0c;前端自己得加班&#xff1b;接口联调的时间有可能会延期&#xff0c;接口完成的质量参差不齐&#xff1b;对于数据量过大的模拟…...

【家庭公网IPv6】

家庭公网IPv6 这里有两个网站&#xff1a; 1、 IPV6版、多地Tcping、禁Ping版、tcp协议、tcping、端口延迟测试&#xff0c;在本机搭建好服务器后&#xff0c;可以用这个测试外网是否可以访问本机&#xff1b; 2、 IP查询ipw.cn&#xff0c;这个可以查询本机的网络是否IPv6访问…...

【iOS】Frame与Bounds的区别详解

iOS的坐标系 iOS特有的坐标是&#xff0c;是在iOS坐标系的左上角为坐标原点&#xff0c;往右为X正方向&#xff0c;向下为Y正方向。 bounds和frame都是属于CGRect类型的结构体&#xff0c;系统的定义如下&#xff0c;包含一个CGPoint&#xff08;起点&#xff09;和一个CGSiz…...

SpringBoot百货超市商城系统 附带详细运行指导视频

文章目录 一、项目演示二、项目介绍三、运行截图四、主要代码 一、项目演示 项目演示地址&#xff1a; 视频地址 二、项目介绍 项目描述&#xff1a;这是一个基于SpringBoot框架开发的百货超市系统。首先&#xff0c;这是一个很适合SpringBoot初学者学习的项目&#xff0c;代…...

【实践篇】推荐算法PaaS化探索与实践 | 京东云技术团队

作者&#xff1a;京东零售 崔宁 1. 背景说明 目前&#xff0c;推荐算法部支持了主站、企业业务、全渠道等20业务线的900推荐场景&#xff0c;通过梳理大促运营、各垂直业务线推荐场景的共性需求&#xff0c;对现有推荐算法能力进行沉淀和积累&#xff0c;并通过算法PaaS化打造…...

持续贡献开源力量,棱镜七彩加入openKylin

近日&#xff0c;棱镜七彩签署 openKylin 社区 CLA&#xff08;Contributor License Agreement 贡献者许可协议&#xff09;&#xff0c;正式加入openKylin 开源社区。 棱镜七彩成立于2016年&#xff0c;是一家专注于开源安全、软件供应链安全的创新型科技企业。自成立以来&…...

Kafka的消费者如何管理偏移量?

在Kafka中&#xff0c;消费者可以通过管理和跟踪偏移量&#xff08;offset&#xff09;来确保消费者在消费消息时的准确性和可靠性。偏移量表示消费者在特定分区中已经消费的消息的位置。以下是几种常见的偏移量管理方式&#xff1a; 手动提交偏移量&#xff1a;消费者可以通过…...

IntelliJ IDEA流行的构建工具——Gradle

IntelliJ IDEA&#xff0c;是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具&#xff0c;尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。 如…...

nacos源码打包及相关配置

nacos 本地下载后&#xff0c;需要 install 下&#xff1a; mvn clean install -Dmaven.test.skiptrue -Dcheckstyle.skiptrue -Dpmd.skiptrue -Drat.skiptruenacos源码修改后&#xff0c;重新打包生成压缩包命令&#xff1a;在 distribution 目录中运行&#xff1a; mvn -Pr…...

【机器学习】Multiple Variable Linear Regression

Multiple Variable Linear Regression 1、问题描述1.1 包含样例的X矩阵1.2 参数向量 w, b 2、多变量的模型预测2.1 逐元素进行预测2.2 向量点积进行预测 3、多变量线性回归模型计算损失4、多变量线性回归模型梯度下降4.1 计算梯度4.2梯度下降 首先&#xff0c;导入所需的库 im…...