【学习笔记】MySQL(Ⅲ)
MySQL(Ⅲ)
- 11、 进阶篇 —— 视图
- 11.1、概述
- 11.2、基本语法
- 11.3、检查选项 CASCADED
- 11.4、检查选项 LOCAL
- 11.5、视图的更新原则
- 12、 进阶篇 —— 存储过程
- 12.1、概述
- 12.2、基本语法
- 12.3、系统变量
- 12.4、用户定义变量
- 12.5、局部变量
- 12.6、条件判断
- 12.7、CASE
- 12.8、循环
- 12.9、游标 及 条件处理程序
- 12.10、存储函数
- 13、 进阶篇 —— 触发器
- 13.1、概述
- 13.2、基本语法
- 14、 进阶篇 —— 锁
- 14.1、概述
- 14.2、全局锁
- 14.3、表级锁
- 14.4、行级锁
- 15、 终结篇 —— InnoDB 存储引擎
- 16、 终结篇 —— MySQL管理工具
11、 进阶篇 —— 视图
11.1、概述
视图(View)是MySQL中的一种虚拟表,其内容是根据预保留的 SQL 逻辑动态地查询生成的,使用视图时,数据库系统会自动执行相关的 SQL 逻辑,并返回查询结果。因此,视图可以看作是一个预定义的查询语句
优点 | 描述 |
---|---|
简化复杂查询 | 通过视图,可以将复杂的查询简化为一个简单的查询,使得数据访问更加方便 |
安全性 | 通过视图,可以限制用户对基表的访问,只暴露需要的数据,从而提高数据的安全性 |
数据抽象 | 视图可以隐藏表的复杂结构,为用户提供一个更简洁的接口 |
数据一致性 | 通过视图,可以确保不同用户看到的数据一致 |
视图的限制 |
---|
① 视图不支持索引、触发器和默认值 |
② 某些复杂的查询可能不能直接转换为可更新的视图 |
③ 视图的性能可能不如直接查询基表,因为视图需要动态生成数据 |
11.2、基本语法
创建:
CREATE [ OR REPLACE ] VIEW 视图名 AS SELECT语句
自定义列名字:CREATE [ OR REPLACE ] VIEW(列名1,列名2...) 视图名 AS SELECT语句
查询创建视图的语句:SHOW CREATE VIEW 视图名
查询视图的数据:跟查询普通的表一样
修改视图法1:CREATE OR REPLACE VIEW 视图名 AS SELECT语句
修改视图法2:ALTER VIEW 视图名 AS SELECT语句
删除视图:DROP VIEW [ IF EXISTS ] 视图名
-- 创建视图
create OR REPLACE VIEW user_v_1 AS SELECT * FROM tb_user where age < 30;-- 查询创建视图的语句
SHOW CREATE VIEW user_v_1;-- 查询视图数据
SELECT * FROM user_v_1;-- 修改视图
CREATE OR REPLACE VIEW user_v_1 AS SELECT name,age FROM tb_user WHERE age < 30;
SELECT * FROM user_v_1;
ALTER VIEW user_v_1(姓名,年龄) AS SELECT name,age FROM tb_user WHERE age < 30;
SELECT * FROM user_v_1;-- 删除视图
DROP VIEW user_v_1;
11.3、检查选项 CASCADED
当我们往视图中插入数据时,其实会插入到关联的基表中,然而当我们插入的数据不符合视图的 SQL 逻辑时(例如视图呈现年龄小于30的,然后插入了一条年龄40的数据),会出现一种通过这个视图进行插入数据,但插入后这个视图又看不到的情况,显得不太尊重这个视图,例如
-- 建表
CREATE TABLE student(id int AUTO_INCREMENT PRIMARY KEY,name varchar(10),age int,gender char(1)
)--插入数据
INSERT INTO student(name,age,gender) VALUES ('Niki',21,'男'),('Tom',23,'男'),('Siri',27,'女'),('Jerry',28,'男');-- 创建视图
CREATE VIEW stu_v_1 AS SELECT name,age FROM student WHERE age < 25;-- 通过视图插入数据
INSERT INTO stu_v_1(name,age) VALUES ('Sara',24);
INSERT INTO stu_v_1(name,age) VALUES ('Zayn',29);
SELECT * FROM stu_v_1; # 第二条插入的数据看不到
因此我们可以给视图添加 CASCADED 检查选项,当为视图插入或更新的数据,需要满足其 SQL 逻辑才能插入成功
语法:
CREATE VIEW 视图名 AS SELECT语句 WITH [ CASCADED ] CHECK OPTION ;
( WITH CHECK OPTION 默认选 CASCADE )
-- 先删掉上插入的两条数据
DELETE FROM student WHERE name = 'Sara' OR name = 'Zayn';-- 修改视图
ALTER VIEW stu_v_1 AS SELECT name,age FROM student WHERE age < 25 WITH CASCADED CHECK OPTION ;-- 再次通过视图插入数据
INSERT INTO stu_v_1(name, age) VALUES ('Sara', 24);
INSERT INTO stu_v_1(name, age) VALUES ('Zayn', 29); # 插入失败
CASCADED 的工作原理是,检查插入的数据是否满足当前视图的 SQL 逻辑,以及满足所依赖的视图的 SQL 逻辑,例如
表 | 依赖 | 选项 | SQL逻辑 | 在v3插入age=11、17、28 |
---|---|---|---|---|
视图 v3 | v2 | - | age<=15 | 没有检查选项,直接通过 |
视图 v2 | v1 | CASCADED | age>=10 | 11:符合,17:符合,28:符合 |
视图 v1 | 基表 | - | age<=20 | 受 v2 的CASCADED影响,v1也要检查 11:符合,17:符合,28:拦截 |
基表 | - | - | - | 11、17插入成功,28插入失败 |
11.4、检查选项 LOCAL
LOCAL 也是一种检查约束,与 CASCADED 不同的是,它只会对当前的视图做检查,而不会让其父视图也要做检查
语法:
CREATE VIEW 视图名 AS SELECT语句 WITH LOCAL CHECK OPTION ;
表 | 依赖 | 选项 | SQL逻辑 | 在v3插入age=14 |
---|---|---|---|---|
视图 v3 | v2 | - | age<<20 | 没有检查选项,直接通过 |
视图 v2 | v1 | LOCAL | age>=10 | 14:符合 |
视图 v1 | 基表 | - | age<=15 | 没有检查选项,直接通过 |
基表 | - | - | - | 14插入成功 |
11.5、视图的更新原则
当视图的每一行与基表中的每一行是一一对应的关系时,视图才可以更新,如果视图的 SQL 逻辑包含以下任何一项,则视图不能更新
不可更新的关键字 |
---|
聚合函数,例如 SUM(),MIN()、MAX()、COUNT()等 |
DISTINCE |
GROUP BY |
HAVING |
UNION 或者 UNION ALL |
12、 进阶篇 —— 存储过程
12.1、概述
存储过程是一组预编译的SQL语句,这些语句存储在数据库中,可以通过调用来执行。存储过程允许你将业务逻辑封装在数据库中,提供了一种更高效和灵活的方法来处理数据(函数)
优点 | 描述 |
---|---|
提高性能 | 存储过程在首次执行时会被编译并缓存起来,以后再调用时直接执行编译好的代码,减少了SQL解析和编译的时间 |
重用代码 | 存储过程可以多次调用,避免了代码重复,提高了代码的可维护性 |
安全性 | 通过存储过程,可以控制对数据库的访问权限,保护底层数据 |
简化复杂操作 | 将复杂的业务逻辑封装在存储过程中,使得应用程序调用更简洁 |
减轻网络负担 | 将多个SQL语句封装起来存储在数据库中,现在发送一次请求即可完成相应的业务,而不是将多个SQL语句一句一句地与数据库交互,减轻了网络负担 |
12.2、基本语法
创建:
CREATE PROCEDURE 存储过程名([IN输入的参数列表,OUT返回的参数列表]) BEGIN ... END
调用:CALL 存储过程名([参数])
查看指定数据库的存储过程信息:SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA = '数据库名'
查看存储过程的创建语句:SHOW CREATE PROCEDURE 存储过程名
删除:DROP PROCEDURE 存储过程名
-- 创建存储过程
CREATE PROCEDURE p1()
BEGINSELECT COUNT(*) FROM student;
END;
相关文章:
【学习笔记】MySQL(Ⅲ)
MySQL(Ⅲ) 11、 进阶篇 —— 视图 11.1、概述 11.2、基本语法 11.3、检查选项 CASCADED 11.4、检查选项 LOCAL 11.5、视图的更新原则12、 进阶篇 —— 存储过程 12.1、概述 12.2、基本语法 12.3、系统变量 12.4、用户定义变量 …...
STM32项目分享:心率血氧手环(可报警)
目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 1.PCB图 2.PCB板打样焊接图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片: 哔哩哔哩视频链接: https://www.bilibili.c…...
前端面经总结、学习【2023秋招】
目录 1、浏览器输入URL发生了什么?2、跨域是什么?如何解决跨域问题?3、cookie 是什么?4、cookie 能做什么? 1、浏览器输入URL发生了什么? URL解析:判断浏览器输入的是搜索内容还是URLÿ…...
Linux DMA-Buf驱动框架
一、DMABUF 框架 dmabuf 是一个驱动间共享buf 的机制,他的简单使用场景如下: 用户从DRM(显示驱动)申请一个dmabuf,把dmabuf 设置给GPU驱动,并启动GPU将数据输出到dmabuf,GPU输出完成后…...
MySQL之优化服务器设置(三)
优化服务器设置 InnoDB表空间 InnoDB把数据保存在表空间内,本质上是一个由一个或多个磁盘文件组成的虚拟文件系统。InnoDB用表空间实现很多功能,并不只是存储表和索引。它还保存了回滚日志(旧版本行)、插入缓冲(Insert Buffer)、双写缓冲(Doublewrite …...
如何实现 Python 源码压缩加密常用解决方案详细教程(更新中)
Python是一种高级的、解释型的、面向对象的编程语言,Python 码简洁易读,并且Python语言跨平台,拥有丰富的标准库和第三方库,深受开发人员的喜爱。 Python 程序扩展名 .py:这是 Python 程序的标准文件扩展名。当你创建…...
SAP Build 2-PDF数据提取与决策
0. 安装desktop agent 在后续过程中发现要预先安装desktop agent,否则没法运行自动化流程… 0.1 agent下载 参考官方文档说明 https://help.sap.com/docs/build-process-automation/sap-build-process-automation/create-user-in-rbsc-download-repository?loca…...
【回溯】Leetcode 77. 组合【中等】
组合 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输入: n 4, k 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 解题思路 定义递归函数࿱…...
项目中常量的定义方式
方式一 在常量个数少的时候,通常情况下使用这种方式。 public class MqConstants {public static final String EXCHANGE_1 "exchange1";public static final String EXCHANGE_2 "exchange2";public static final String EXCHANGE_3 "…...
BL104钡铼多协议采集网关助力企业智能化转型
BL104钡铼多协议采集网关(PLC物联网关BL104)是为满足工业环境需求而设计的专业工业级协议转换网关。它在企业智能化转型过程中扮演着关键角色,为企业提供了高效、稳定的通信解决方案,助力企业实现智能化转型。 首先,P…...
【LC刷题】DAY08:151 55 28 459
【LC刷题】DAY08:151 55 28 459 文章目录 【LC刷题】DAY08:151 55 28 459151. 反转字符串中的单词 [link](https://leetcode.cn/problems/reverse-words-in-a-string/description/)55. 右旋字符串 [link](https://kamacoder.com/problempage.php?pid106…...
Debian 12.5 一键安装 Oracle 19C 单机
前言 Oracle 一键安装脚本,演示华为 Debian 12.5 一键安装 Oracle 19C 单机版过程(全程无需人工干预)。 ⭐️ 脚本下载地址:Shell脚本安装Oracle数据库 安装准备 1、安装好操作系统,建议安装图形化2、配置好网络3、上…...
ARP协议相关
把ip地址解析成mac地址这里的mac地址就是路由器的mac地址 免费ARP 源ip和目的ip都是一样的,那怎么让其他人更新arp表呢?? 是因为目标mac是全f,是一个广播报文 如果冲突就是ip一样但是mac又不一样 代理ARP pc1和pc4是在同一个子网…...
Github 2024-06-14 开源项目日报Top10
根据Github Trendings的统计,今日(2024-06-14统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量JavaScript项目2Python项目2非开发语言项目2TypeScript项目1Dart项目1Rust项目1Lua项目1Java项目1Jupyter Notebook项目1从零开始构建你喜爱的技…...
记录AE快捷键(持续补充中。。。)
记录AE快捷键 快捷键常用快捷键图层快捷键工具栏图层与属性常用指令视图菜单时间轴常规快捷键项目首选项功能摄像机操作 常用操作导入AI/PS工程文件加选一个关键参数快速回到上下一帧隐藏/显示图层关键帧拉长缩短关键帧按着鼠标左键不松手,在秒表那一列往下移动会都…...
基于springboot实现问卷调查系统项目【项目源码+论文说明】计算机毕业设计
基于springboot实现问卷调查系统演示 摘要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,问卷信息因为其管理内容繁杂,管理数…...
React@16.x(29)useRef
目录 1,介绍2,和 React.createRef() 的区别3,计时器的问题 目前来说,因为函数组件每次触发更新时,都会重新运行。无法像类组件一样让一些内容保持不变。 所以才出现了各种 HOOK 函数:useState,u…...
无人机的力量——在民用方面的应用
无人机在民用方面的应用广泛且多样化,以下是对其应用的详细介绍: 影视航拍: 无人机航拍影像具有高清晰、大比例尺、小面积、高视角的优点,特别适合获取带状地区航拍影像(如公路、铁路、河流、水库、海岸线等ÿ…...
探索档案未来,尽在ARCHE-2024
2024年第三届上海国际智慧档案展览会暨高峰论坛(ARCHE-2024)将于2024年6月19日至21日在上海跨国采购会展中心隆重举行。深圳市铨顺宏科技有限公司应邀参展,将以全新形象盛装亮相,展示其在档案管理领域的最新技术和解决方案。 ARC…...
Maven 核心插件 maven-clean-plugin 使用详解
在软件开发中,构建和管理项目的复杂性随着代码量和依赖的增加而不断提升。Maven作为一个强大的构建工具,简化了这一过程,并通过其插件机制提供了丰富的功能。其中,maven-clean-plugin 是Maven的核心插件之一,它在项目的…...
金融数据中心布线运维管理解决方案
金融行业的核心业务,如交易、支付、结算等,对网络的依赖程度极高。布线作为网络基础设施的重要组成部分,其稳定性和可靠性直接关系到业务的连续运行。因此,良好的布线管理能够确保网络系统的稳定运行,减少因网络故障导…...
C++初学者指南第一步---2. Hello world
C初学者指南第一步—2. Hello world 目录 C初学者指南第一步---2. Hello world1.源文件 “Hello.cpp”2.编译hello.cpp3.术语4.编译器标志5.不要使用 “using namespace std;” ! 1.源文件 “Hello.cpp” #include <iostream> // our first program int main…...
gitLab批量下载有权限的项目
前言 参考 https://www.jianshu.com/p/b3d4e5cee835 适用于git私服拉取个人所涉及权限的代码,方便有多个项目权限的人快速拉取自己所有权限的代码。 默认生成目录结构与gitlab一致 步骤一:获取权限你的代码权限文件d 从gitlab私服生成所有你有权限的代码信息 …...
解决 kali 中使用 vulhub 拉取不到镜像问题
由于默认情况下,访问的镜像是国外的,而从 2023 年开始,docker 的镜像网站就一直访问不了,所以我们可以把镜像地址改成国内的阿里云镜像地址。 1、在 cd /etc/docker/目录下创建或修改daemon.json文件 sudo touch daemon.json 2、在…...
CSS3 简介
CSS3 简介 CSS3,即层叠样式表的第三代,是网页设计和开发中不可或缺的技术之一。它为HTML元素提供了更加丰富和灵活的样式定义,使得网页不仅结构清晰,而且外观精美、交互性强。CSS3继承了CSS2的基本特性,并引入了许多新…...
springboot事务管理的机制是什么
SpringBoot的事务管理机制实质上是基于Spring框架的事务处理机制。其主要目的是确保一系列数据库操作要么全部成功,要么全部失败(回滚),从而维护数据的完整性和一致性。 SpringBoot事务管理遵循ACID四大特性: 1、原子…...
Linux下tar命令解压缩
tar 命令是 Unix 和 Linux 系统中用来创建归档文件以及提取归档文件的工具。它通常用于备份文件或将多个文件和目录打包成一个单独的归档文件。默认情况下,tar 不会对文件进行压缩,但可以通过结合其他压缩工具(如 gzip 或 bzip2)来…...
当财政支持减弱时,国有企业如何实现降本增效?
随着市场环境的不断变化和上级市场化政策要求的不断推进,部分国有企业面临着双重压力,一方面,市场的快速变革要求企业不断创新、提升竞争力;另一方面,在响应上级市场化转型的号召下,财政支持的减弱成为了许…...
大模型「训练」与「微调」概念详解【6000字长文】
本文你将学到什么 1、大模型预训练与微调的基本流程 2、预训练、训练、后期预训练、微调的区别 3、大模型训练与微调的一些概念,如: Post-pretrain、SFT、RLHF、模型对齐、Lora、Q-Lora、大模型量化、微调指标、微调参数、大模型评测指标 预训练与微…...
JVM 垃圾回收器
一、垃圾回收器类型 如果说垃圾收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体 实现。下图展示了7种作用于不同分代的收集器,其中用于回收新生代的收集器 包括Serial、PraNew、Parallel Scavenge,回收老年代的收集器包括Seri…...
优秀网站开发/产品设计公司
1. 解压Oracle11.1.0.6 for win32,然后点击setup 2.选择高级安装,下一步 3.选择企业版,下一步 4.修改Oracle基目录,也可以是默认,下一步 5.将状态复选框打上√,下一步 6.为新安装的oracle创建数据库,选择创建数据库&am…...
北京网站设计定制开发建设公司/域名注册平台有哪些
一、登录阿里云, 找到对象存储oss 二、创建Bucket 三、获取操作oss的4个配置 地域节点 AccessKey ID 和 AccessKey Secret Bucket名称...
国外数码印花图案设计网站/爱站数据官网
时间限制:1秒 空间限制:65536K 热度指数:395算法知识视频讲解题目描述对给定的字符串(只包含z,o,j三种字符),判断他是否能AC。 是否AC的规则如下: 1. zoj能AC; 2. 若字符串形式为xzojx,则也能AC,…...
wordpress 联系地图/百度搜索高级搜索技巧
最近博客更新的少了,相对而言,我在自己的个人公众号里还是挺活跃的,大家可以扫描旁边的二维码,或者微信搜索公众号:“编程一生”加关注。 在分布式的年代,一个应用需要部署到多台服务器上。那么要查看日志文…...
别人能打开的网站我打不开/企业网站建设的步骤
EDA365欢迎您登录!您需要 登录 才可以下载或查看,没有帐号?注册x3 K1 ~ W3 V6 w6 h w) B1 I. C$ X在概率论和信息论中,两个随机变量的互信息(Mutual Information,简称MI)或转移信息(transinformation)是变量间相互依赖…...
为什么做网站还要续费/百度网址ip
为什么80%的码农都做不了架构师?>>> 序 本文主要研究下springboot2的ScheduledTasksEndpoint 实例 注解形式 Component public class ScheduleTask {Scheduled(cron "0 0 5 * * ?")public void cronJob(){}Scheduled(fixedDelay 2*60*1000…...