5 - 视图|存储过程
视图|存储过程
- 视图
- 视图基本使用
- 使用视图
- 视图进阶
- 存储过程
- 创建存储过程
- 存储过程进阶
- 存储过程参数
- 循环结构
视图
视图是虚拟存在的表 表头下的数据在真表里 表头下的数据存储在创建视图时 在select命令访问的真表里
优点:
- 安全
- 数据独立
- 简单 用户无需关心数据内部
视图基本使用
create view v1 as select name from tarena.user

除了视图,每个表都会存在两个文件

查看所有表的状态
show table status ;

查看创建视图具体select命令
show create view 视图名;

使用视图
- insert
insert into tarena.v11 vlaues ("xxx",2002);
- delete
delete from tarena.v11 where name in ("xxx","yyy")
- update
# 物理表 会跟着变
update tarena.v11 set uid=1001 where name='root'
视图进阶




可以通过视图修改数据限制 限制方式如下:
- with check option
- local 首先满足自身的限制,同时满足基表的限制
local
- local 首先满足自身的限制,同时满足基表的限制
mysql> create view v31 as select name , uid from tarena.user where uid <= 100;
mysql> create view v45 as select name,uid from v31 where uid>=10 with local check option;
mysql> update v45 set uid=800 where name="ftp"
# 虽然超出基表v31限制,但是还是改成了 因为基表没有加限制
# 修改视图v31 加修改限制
mysql> create or REPLACE view v31 as select name,uid from tarena.user where uid <= 100 with check option;
mysql> update v45 set uid=6 where name="sshd"; 没有满足自身限制
mysql> update v45 set uid=600 where name="sshd"; 没有满足基表v31的限制
- cascaded 满足视图自身限制即可(默认值)
mysql> create view v21 as > select name,uid from tarena.user where uid>10> with check option# 此时的限制条件是uid>10 如果改小于10 会失败
mysql> update v21 set uid=9 where name='root'; # 会失败
存储过程
存储过程就是mysql服务里的脚本。mysql存储过程 是登陆mysql服务之后编写的脚本 是由一条或多条sql命令组成,存放在mysql库下的表里。避免重复的sql操作。
写好的存储过程 会存放在mysql库下的proc表里
创建存储过程
命令行结束符 修改为//
delimiter //
---
create procedure 库名.存储过程名(列表参数)
begin一组合法的sql命令
end
//
--
delimiter ;

查看已创建的存储过程
select db,name,type,body from mysql.proc where type="procedure"
执行存储过程
call 库名.存储过程名 创建的存储过程没有参数
call 库名.存储过程名(参数)
删除存储过程
drop procedure 库.存储过程名; 不加括号 无论有无参数
存储过程进阶


用户自定义变量
-
用户变量

-
局部变量:begin/end语句块中

存储过程参数
调用参数时,名称前也不需要@
create procedure 名称(类型 变量名 数据类型 , 类型 变量名 数据类型,…)

delimiter //
create procedure tarena.p3()
begin
select name from tarena.user where name="ftp";
end //
delimiter ;
delimiter //
create procedure tarena.p4(in dept_no int)
begin
select dept_id,count(name) from employees where dept_id=dept_no
group by dept_id
end //
delimiter;## 调用
call tarena.p4(3)
- out参数的作用
delimiter //
create procedure tarena.p5(in emp_name varchar(10),out mail varchar)
begin
select email into mail from employees where name=emp_name;
end //
delimiter ;# 调用
call tarena.p5("bob",@x)
- inout参数
既有in参数的功能 又有out参数的功能
delimiter //
create procedure tarena.myadd(inout i int)
begin
set i=i+100;
end //
delimiter ;
set @x = 8
set @y = 101
call tarena.myadd(@x);
call tarena.myadd(@y);
select @x,@y
循环结构
- if
格式一:
IF 条件 THEN语句;
END IF;
格式二:
IF 条件 THEN语句1;
ELSEIF 条件2 THEN语句2;
ELSE语句3;
END IF;
解决乱码问题:
alter database tarena default character set utf8;
# 查看库使用的字符集
show create detabase tarena \G
show create table tarena.departments \G
# 修改完重新创建存储过程 就好使了

- case
语法格式
CASE 变量|表达式|字段
WHEN 判断的值1 THEN 返回值1;
WHEN 判断的值2 THEN 返回值2;
... ...
ELSE 返回值n;
END CASE;
案例
delimiter //
create procedure tarena.deptype_pro2(IN no int ,OUT dept_type varchar(5))
begin
declare type varchar(5);
select dept_name into type from departments where dept_id=no;
case type
when '运维部' then set dept_type='技术部';
else set dept_type='非技术部';
end case;
end //
delimiter ;
# @使用自定义变量接受out参数的值
call tarena.deptype_pro(1,@t);
# 查看自定义变量@t的值
select @t;
- 循环语法
标签名:WHILE 循环条件 DO循环体;
END WHILE 标签名
# loop循环 只要不人为结束 就一直执行下去
LOOP循环体;
END LOOP
# repeat 循环:至少循环一次
repeat循环体;
UNTILE 循环结束条件
end repeat
循环结构控制语句:在循环条件满足的情况下,控制循环的执行
- break 结束循环
- ITERATE 相当于continue 结束当前循环并开始下次循环
注意:要给循环加标签 (就是给循环起一个名字)才能使用
案例:
delimiter //
create procedure tarena.while_pro(IN i int)
begin
declare j int default 1;
while j < i doinsert into tarena.departments(dept_name) values("hr");set j=j+1;
end while;
end //
delimiter ;
# 调用
mysql > call tarena.while_pro(3);
show processlist 相当于 ps -aux

案例
delimiter //
create procedure tarena.while_pro3(IN i int)
begindeclare j int default 0;a:while j<i doset j=j+1;if mod(j,2)=0 then iterate a;end if ;insert into tarena.departments(dept_name) value(concat('hr',i))end while a;
end //
delimiter ;
# 调用
call tarena.while_pro3(10);
select * from tarena.departments;
相关文章:
5 - 视图|存储过程
视图|存储过程 视图视图基本使用使用视图视图进阶 存储过程创建存储过程存储过程进阶存储过程参数循环结构 视图 视图是虚拟存在的表 表头下的数据在真表里 表头下的数据存储在创建视图时 在select命令访问的真表里 优点: 安全数据独立简单 用户无需关…...
系统学习Python——警告信息的控制模块warnings:警告过滤器-[基础知识]
分类目录:《系统学习Python》总目录 警告过滤器控制着警告是否被忽略、显示或转为错误(触发异常)。 从概念上讲,警告过滤器维护着一个经过排序的过滤器类别列表;任何具体的警告都会依次与列表中的每种过滤器进行匹配&…...
vue中高德地图使用
1、安装 npm i amap/amap-jsapi-loader --save2、封装地图组件 <template><div id"map" ref"mapcontainer"></div> </template><script> import AMapLoader from "amap/amap-jsapi-loader"; export default {befo…...
算法训练营Day33
#Java #贪心 开源学习资料 Feeling and experiences: 单调递增的数字:力扣题目链接 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时,我们称这个整数是单调递增的。 给定一个整数 n ,返回 小于或等于 n 的最大数字&am…...
.net6解除文件上传限制。Multipart body length limit 16384 exceeded
在C#中上传文件时如果不修改默认文件的上传大小会提示Multipart body length limit 16384 exceeded这个错误提示表明你的请求中的Multipart body长度超过了16384字节的限制。这通常意味着你正在尝试发送一个太大的请求体,可能是因为包含了太多数据或者太大的文件。要…...
电子电器架构网络演化 —— 车载以太网TSN
电子电器架构网络演化 —— 车载以太网TSN 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消…...
智能门锁触控工作原理中应用的电容式触摸芯片
智能门锁的识别技术中,密码几乎成为标配功能。相比机械按键的触控方式,电容式触控方式可以在加上一层玻璃甚至金属一体成型之后与用户进行交互,由于进行了物理性隔离,使得外壳更具完整性,物理上安全性更佳。电容式触控…...
Spark 中 BroadCast 导致的内存溢出(SparkFatalException)
背景 本文基于 Spark 3.1.1 open-jdk-1.8.0.352目前在排查 Spark 任务的时候,遇到了一个很奇怪的问题,在此记录一下。 现象描述 一个 Spark Application, Driver端的内存为 5GB,一直以来都是能正常调度运行,突然有一天,报…...
深度学习经典算法详细模型图
很早绘制的一些模型图,当时放在CSDN的草稿里,今天发现了,把它分享出来吧,还能更清晰的帮助理解! 1.AlexNet(2012) 2. VGGNet(2014) 3. SqueezeNet(2016) 4. GoogleNet(2014)...
03、Kafka ------ CMAK(Kafka 图形界面管理工具) 下载、安装、启动
目录 CMAK(Kafka 图形界面管理工具)下载安装启动打开 cmak 图形界面 CMAK(Kafka 图形界面管理工具) Kafka本身并没有提供Web管理工具,而是推荐使用bin目录下各种工具命令来管理Kafka, 这些工具命令其实用起…...
复习python从入门到实践——函数function
复习python从入门到实践——函数function 函数是特别难的,大家一定要好好学、好好复习、反复巩固。函数没学好,会为后面造成很大困扰。 教科书中函数举例会稍微有点复杂。在此章复习中,我将整理出容易疏漏和混淆的知识点,并用最简…...
【Internal Server Error】pycharm解决关闭flask端口依然占用问题
Internal Server Error The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application. 起因: 我们在运行flask后,断开服务依然保持运行࿰…...
torch.nn.functional.interpolate与torchvision.transforms.Resize方法对张量图像Resize应用
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、非张量数据使用torch方法resize(transforms.Resize)二、张量数据使用torch方法resize(torch.nn.functional.interpolate) 前言 要使用 PyTorch 对张量进行…...
【Spring】Spring的事务管理
前言: package com.aqiuo.service.impl;import com.aqiuo.dao.AccountMapper; import com.aqiuo.pojo.Account; import com.aqiuo.service.AccountService; import org.springframework.jdbc.core.JdbcTemplate;import java.sql.Connection; import java.sql.SQLEx…...
配置cendos 安装docker 配置阿里云国内加速
由于我安装的cendos是镜像版。已经被配置好了。所以只需要更新相关配置信息即可。 输入 yum update自动更新所有配置 更新完成后输入 yum list docker-ce --showduplicates | sort -r 自动查询所有可用的docker版本 输入 yum install docker-ce docker-ce-cli container…...
【深度学习:Domain Adversarial Neural Networks (DANN) 】领域对抗神经网络简介
【深度学习:Domain Adversarial Neural Networks】领域对抗神经网络简介 前言领域对抗神经网络DANN 模型架构DANN 训练流程DANN示例 GPT示例 前言 领域适应(DA)指的是当不同数据集的输入分布发生变化(这种变化通常被称为共变量变…...
STM32 ESP8266 物联网智能温室大棚 (附源码 PCB 原理图 设计文档)
资料下载: https://download.csdn.net/download/vvoennvv/88680924 一、概述 本系统以STM32F103C8T6单片机为主控芯片,采用相关传感器构建系统硬件电路。其中使用DHT11温湿度传感器对温度和湿度的采集,MQ-7一氧化碳传感器检测CO浓度,GP2Y101…...
【DevOps-08-1】Harbor镜像仓库介绍和安装
一、简要描述 Harbor介绍Harbor安装 下载离线安装包把下载的离线安装包上传到服务器,并且解压修改Harbor配置文件启动Harbor登录Harbor管理后台Harbor管理后台首页二、Harbor介绍 前面在部署项目时,我们主要采用Jenkins推送jar包到指定服务器,再通过脚本命令让目标服务器对当…...
第八节 vue3新特性
系列文章目录 目录 系列文章目录 前言 操作方法 总结 前言 vue3与vue2的区别及特性。 具体信息 页面不用跟标签包裹cs...
Web前端-jQuery
文章目录 jQuery1.1 jQuery 介绍1.1.1 JavaScript 库1.1.2 jQuery的概念1.1.3 jQuery的优点 1.2 jQuery 的基本使用1.2.1 jQuery 的下载1.2.2 jQuery快速入门1.2.3 jQuery入口函数1.2.4 jQuery中的顶级对象$1.2.5 jQuery 对象和 DOM 对象1.2.6. jQuery 对象和 DOM 对象转换 1.3…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...
解析两阶段提交与三阶段提交的核心差异及MySQL实现方案
引言 在分布式系统的事务处理中,如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议(2PC)通过准备阶段与提交阶段的协调机制,以同步决策模式确保事务原子性。其改进版本三阶段提交协议(3PC…...
WebRTC调研
WebRTC是什么,为什么,如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...
qt+vs Generated File下的moc_和ui_文件丢失导致 error LNK2001
qt 5.9.7 vs2013 qt add-in 2.3.2 起因是添加一个新的控件类,直接把源文件拖进VS的项目里,然后VS卡住十秒,然后编译就报一堆 error LNK2001 一看项目的Generated Files下的moc_和ui_文件丢失了一部分,导致编译的时候找不到了。因…...
