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

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
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 - 视图|存储过程

视图&#xff5c;存储过程 视图视图基本使用使用视图视图进阶 存储过程创建存储过程存储过程进阶存储过程参数循环结构 视图 视图是虚拟存在的表 表头下的数据在真表里 表头下的数据存储在创建视图时 在select命令访问的真表里 优点&#xff1a; 安全数据独立简单 用户无需关…...

系统学习Python——警告信息的控制模块warnings:警告过滤器-[基础知识]

分类目录&#xff1a;《系统学习Python》总目录 警告过滤器控制着警告是否被忽略、显示或转为错误&#xff08;触发异常&#xff09;。 从概念上讲&#xff0c;警告过滤器维护着一个经过排序的过滤器类别列表&#xff1b;任何具体的警告都会依次与列表中的每种过滤器进行匹配&…...

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&#xff1a; 单调递增的数字&#xff1a;力扣题目链接 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&am…...

.net6解除文件上传限制。Multipart body length limit 16384 exceeded

在C#中上传文件时如果不修改默认文件的上传大小会提示Multipart body length limit 16384 exceeded这个错误提示表明你的请求中的Multipart body长度超过了16384字节的限制。这通常意味着你正在尝试发送一个太大的请求体&#xff0c;可能是因为包含了太多数据或者太大的文件。要…...

电子电器架构网络演化 —— 车载以太网TSN

电子电器架构网络演化 —— 车载以太网TSN 我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任何消…...

智能门锁触控工作原理中应用的电容式触摸芯片

智能门锁的识别技术中&#xff0c;密码几乎成为标配功能。相比机械按键的触控方式&#xff0c;电容式触控方式可以在加上一层玻璃甚至金属一体成型之后与用户进行交互&#xff0c;由于进行了物理性隔离&#xff0c;使得外壳更具完整性&#xff0c;物理上安全性更佳。电容式触控…...

Spark 中 BroadCast 导致的内存溢出(SparkFatalException)

背景 本文基于 Spark 3.1.1 open-jdk-1.8.0.352目前在排查 Spark 任务的时候&#xff0c;遇到了一个很奇怪的问题&#xff0c;在此记录一下。 现象描述 一个 Spark Application, Driver端的内存为 5GB,一直以来都是能正常调度运行&#xff0c;突然有一天&#xff0c;报…...

深度学习经典算法详细模型图

很早绘制的一些模型图&#xff0c;当时放在CSDN的草稿里&#xff0c;今天发现了&#xff0c;把它分享出来吧&#xff0c;还能更清晰的帮助理解&#xff01; 1.AlexNet(2012) 2. VGGNet(2014) 3. SqueezeNet(2016) 4. GoogleNet(2014)...

03、Kafka ------ CMAK(Kafka 图形界面管理工具) 下载、安装、启动

目录 CMAK&#xff08;Kafka 图形界面管理工具&#xff09;下载安装启动打开 cmak 图形界面 CMAK&#xff08;Kafka 图形界面管理工具&#xff09; Kafka本身并没有提供Web管理工具&#xff0c;而是推荐使用bin目录下各种工具命令来管理Kafka&#xff0c; 这些工具命令其实用起…...

复习python从入门到实践——函数function

复习python从入门到实践——函数function 函数是特别难的&#xff0c;大家一定要好好学、好好复习、反复巩固。函数没学好&#xff0c;会为后面造成很大困扰。 教科书中函数举例会稍微有点复杂。在此章复习中&#xff0c;我将整理出容易疏漏和混淆的知识点&#xff0c;并用最简…...

【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. 起因&#xff1a; 我们在运行flask后&#xff0c;断开服务依然保持运行&#xff0…...

torch.nn.functional.interpolate与torchvision.transforms.Resize方法对张量图像Resize应用

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、非张量数据使用torch方法resize(transforms.Resize)二、张量数据使用torch方法resize(torch.nn.functional.interpolate) 前言 要使用 PyTorch 对张量进行…...

【Spring】Spring的事务管理

前言&#xff1a; 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) 】领域对抗神经网络简介

【深度学习&#xff1a;Domain Adversarial Neural Networks】领域对抗神经网络简介 前言领域对抗神经网络DANN 模型架构DANN 训练流程DANN示例 GPT示例 前言 领域适应&#xff08;DA&#xff09;指的是当不同数据集的输入分布发生变化&#xff08;这种变化通常被称为共变量变…...

STM32 ESP8266 物联网智能温室大棚 (附源码 PCB 原理图 设计文档)

资料下载: https://download.csdn.net/download/vvoennvv/88680924 一、概述 本系统以STM32F103C8T6单片机为主控芯片&#xff0c;采用相关传感器构建系统硬件电路。其中使用DHT11温湿度传感器对温度和湿度的采集&#xff0c;MQ-7一氧化碳传感器检测CO浓度&#xff0c;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…...

PyTorch 2.8镜像多场景落地:智慧农业病虫害识别模型田间部署方案

PyTorch 2.8镜像多场景落地&#xff1a;智慧农业病虫害识别模型田间部署方案 1. 田间AI的迫切需求 现代农业正面临病虫害防治的严峻挑战。传统人工巡查方式效率低下&#xff0c;一个熟练的技术员每天最多能检查3-5亩作物&#xff0c;而大型农场往往需要数十人同时作业。更棘手…...

探索Tabler Icons 3.40.0:新增6000+高质量SVG图标的终极指南

探索Tabler Icons 3.40.0&#xff1a;新增6000高质量SVG图标的终极指南 【免费下载链接】tabler-icons A set of over 4800 free MIT-licensed high-quality SVG icons for you to use in your web projects. 项目地址: https://gitcode.com/GitHub_Trending/ta/tabler-icons…...

OpenClaw技能市场指南:Qwen3.5-4B-Claude适配的20个实用模块

OpenClaw技能市场指南&#xff1a;Qwen3.5-4B-Claude适配的20个实用模块 1. 为什么需要关注技能市场&#xff1f; 第一次接触OpenClaw时&#xff0c;我以为它只是个能执行简单命令的自动化工具。直到在ClawHub技能市场里发现"会议纪要生成器"模块&#xff0c;才意识…...

OpenClaw技能调试:GLM-4.7-Flash功能开发排错指南

OpenClaw技能调试&#xff1a;GLM-4.7-Flash功能开发排错指南 1. 为什么需要关注技能调试 上周我在为团队开发一个基于GLM-4.7-Flash的自动化周报生成技能时&#xff0c;遇到了一个棘手的问题&#xff1a;技能在本地测试时运行完美&#xff0c;但部署到OpenClaw后却频繁超时。…...

别再傻傻分不清了!用Simulink手把手带你搞懂导纳控制与阻抗控制的本质区别

导纳控制 vs 阻抗控制&#xff1a;从理论到Simulink实战的深度解析 在机器人控制领域&#xff0c;柔性交互是一个永恒的话题。想象一下&#xff0c;当机械臂需要完成精密装配任务时&#xff0c;既要有足够的刚性保证定位精度&#xff0c;又要在意外碰撞时表现出适当的柔顺性——…...

小红书笔记API避坑指南:数据结构解析与常见错误排查

小红书笔记API避坑指南&#xff1a;数据结构解析与常见错误排查 在小红书生态中&#xff0c;API作为连接开发者与平台数据的桥梁&#xff0c;其重要性不言而喻。但许多开发者在实际调用过程中&#xff0c;常常陷入数据结构理解不透、错误排查效率低下的困境。本文将从小红书笔记…...

日语零基础每天学习笔记【01-10】

第一天 日语五十音&#xff1a;平假名/片假名发音あア いイ うウ えエ おオaかカ きキ くク けケ こコkaさサ しシ すス せセ そソsaたタ ちチ つツ てテ とトtaなナ にニ ぬヌ ねネ のノnaはハ ひヒ ふフ へヘ ほホhaまマ みミ むム めメ もモmaや…...

吃透MQ:从原理到落地,解决分布式系统的核心痛点

在分布式系统与微服务架构普及的今天&#xff0c;“高并发、高可用、低耦合”成为系统设计的核心诉求。而消息队列&#xff08;Message Queue&#xff0c;简称MQ&#xff09;&#xff0c;作为分布式架构中的“通信枢纽”&#xff0c;凭借异步通信、流量削峰、系统解耦等核心能力…...

永磁同步电机双矢量模型预测电流MPCC控制仿真:传统与现代控制策略的对比分析

永磁同步电机双矢量模型预测电流MPCC控制仿真【参考文献】 &#xff08;1&#xff09;参考文献&#xff1a;《永磁同步电机鲁棒双矢量模型预测电流控制_郭鑫》 &#xff08;2&#xff09;描述&#xff1a;传统单矢量预测电流控制在单个控制周期内只能输出单个电压矢量&#xff…...

OBS高级计时器:提升直播专业度的时间管理工具

OBS高级计时器&#xff1a;提升直播专业度的时间管理工具 【免费下载链接】obs-advanced-timer 项目地址: https://gitcode.com/gh_mirrors/ob/obs-advanced-timer 在直播行业竞争日益激烈的今天&#xff0c;精准的时间控制是提升直播质量的关键因素之一。OBS高级计时器…...