mysql-视图,创建表,存储过程,循环,判断实操命令

数据库操作命令在IDEA工具database的console命令

数据库表结构与视图

在这里插入图片描述

事务隔离级别RR(REPEATABLE-READ)解决不可重复读演示

mysql-RR隔离级别

-- 查询隔离级别
select @@transaction_isolation;

-- 设置隔离级别
set session transaction isolation level read committed ;
set session transaction isolation level REPEATABLE READ ;

start transaction;

select * from sys_user;

commit ;

rollback ;
-- SQL性能分析
show global status like 'Com_______';
-- 查看慢查询是否开启
show variables like 'slow_query_log';

-- linux 重启msql
-- systemctl restart mysqld;

-- 创建视图
create or replace view v_users as select id,username from sys_user where id <10;

explain select id,username from sys_user where username <10;

explain select * from v_users where id = 2;

-- 查询创建视图的语句
show create view  v_users;

drop view if exists v_users;
-- 视图检查选项,插入的数据跟据视图的where条件进行检查是否符合,如果不符合会不让插入数据
-- with cascaded check option
create or replace view v_users as select id,username from sys_user where id <10 with cascaded check option ;
-- 视图可以插入数据并且 会插入到真实表中
insert into v_users values (3,'wangliu');
insert into v_users values (30,'wangliu');

-- 视图简化多表联查 只需要查询视图不需要每次都增加其他的条件
-- 视图屏蔽/隐藏敏感数据字段 授权给无权查看的人

--  存储过程
CREATE PROCEDURE PRO_USERS()
BEGIN
    SELECT COUNT(*) FROM sys_user;
end;
-- 调用存储过程
CALL PRO_USERS();
-- 查看存储过程
select * from information_schema.ROUTINES where ROUTINE_SCHEMA = 'test';

-- 查看存储过程建表语句
show create procedure PRO_USERS;

-- 删除存储过程
drop procedure if exists PRO_USERS;

-- 系统变量 session|global 默认都是session
show session variables ;
show session variables  like 'auto%';

select @@autocommit;

select @@session.autocommit;
select @@global.autocommit;
set @@autocommit = 1;

-- 用户自定义变量
set @myName :='zxd';
set @myAge := 30;

set @myName :='lisi',@myAge := 40;

select @myName,@myAge;

select count(*) into @myCount from sys_user;

select @myCount;

-- 局部变量声明 begin ...end 之前
drop procedure if exists pro_test2;
create procedure pro_test2()
begin
    declare var_age int default 0;
    set var_age := 20;
    select var_age;
end;

show create procedure pro_test2;

call pro_test2();

-- IF ELSEIF ELSE 存储过程逻辑分支判断
create procedure pro_p3()
begin
    declare score int default 58;
    declare res varchar(10);
    if score >80 then
        set res:= '优秀';
        elseif score >60 then
        set res :='及格';
        else
        set res:= '不及格';
    end if;
    select res;
end;

call pro_p3();

-- 存储过程带输入,输出参数的
create procedure pro_p4(in score int,out res varchar(10))
begin
    if score >80 then
        set res:= '优秀';
    elseif score >60 then
        set res :='及格';
    else
        set res:= '不及格';
    end if;
    select res;
end;

call pro_p4(18,@res);
select @res;

-- INOUT 出参与入参是同一个参数的写法
drop procedure if exists p5;

create procedure p5(inout score double)
begin
    set score := score*0.5;
end;

set @score :=178.8;
call p5(@score);
select @score;

-- 根据传入的月份,返回季度信息
drop procedure p6;
create procedure p6(in month int,out res varchar(20))
begin
    case
        when month >=1 and month <=3
            then set res:= '第一季度';
        when month >=4 and month<=6
            then set res:= '第二季度';
        when month >=7 and month<=9
            then set res:= '第三季度';
        when month >=10 and month<=12
            then set res:= '第四季度';
        else
            set res:='非法参数';
        end case ;
    select concat('您输入的月份 ',month,',所属季度为',res) into res;
end;

call p6(7,@res);
select @res;

-- while 循环逻辑
drop procedure p7;
create procedure p7(inout num int)
begin
    declare total int default 0;
    while num >0 do
        set total:= total +num;
        set num := num -1;
        end while;
    set num := total;
end;

set @num := 10;
call p7(@num);
select @num;

-- repeat 循环逻辑 SQL逻辑会先执行一次,不管是否满足until条件
drop procedure p8;
create procedure p8(inout num int)
begin
    declare total int default 0;

    repeat
        set total := total + num;
        set num:= num -1;
    until  num <=0
        end repeat;
    set num:= total;
end;

set @num :=-10;
call p8(@num);
select @num;

-- loop循环
drop procedure p9;
create procedure p9(in num int,out res int)
begin
    #一定要初始化赋值
    set res:=0;
    sum:loop
        if num <=0 then
            leave sum;
        end if;
        set res := res +num;
        set num:=num -1;
    end loop sum;
end;

call p9(-10,@res);
select @res;

-- loop 退出当前循环 测试一个数字相加 只加偶数不加奇数
drop procedure p10;
create procedure p10(in num int,out res int)
begin
    #一定要初始化赋值
    set res:=0;
    sum:loop
        if num <=0 then
            leave sum;
        end if;
        if num%2 = 1 then
            set num:= num -1;
            iterate sum;
        end if;
        set res := res +num;
        set num:=num -1;
    end loop sum;
end;

call p10(10,@res);
select @res;

-- cursor
-- 准备一张表
create table tb_user(
    id int auto_increment primary key ,
    name varchar(20),
    age int ,
    phone int,
    email varchar(100),
    zhuanye varchar(50)
);
-- 查看默认建表语句
show create table tb_user;
desc tb_user;
drop table tb_user;
select * from tb_user;
insert into tb_user values (null,'唐僧',80,1990618888,'tangsanzang@qq.com','玄奘法师'),
                           (null,'猪八戒',400,1990613333,'zhubajie@qq.com','净坛使者');
-- 创建存储过程
create procedure p11(in v_num int)
begin
    # 声明的临时变量必须在游标之上
    declare v_name varchar(20);
    declare v_age int default 0;
    declare pro_cur cursor for select name ,age from tb_user where age > v_num;
    #增加异常处理
    # [02000][1329] No data - zero rows fetched, selected, or processed
    #declare exit handler for sqlstate '02000' close pro_cur;
    declare exit handler for not found close pro_cur;
    # 准备要生成的表
    drop table if exists pro_tb_user;
    create table if not exists pro_tb_user(
        id int auto_increment primary key ,
        name varchar(20),
        age int
    );
    #打开游标
    open pro_cur;
    #遍历游标 死循环 知道循环到最后一条查不到数据退出
    while true do
        fetch pro_cur into v_name,v_age;
        insert into pro_tb_user values (null,v_name,v_age);
    end while;
    #关闭游标
    close pro_cur;
end;
drop procedure p11;

call p11(100);

select * from pro_tb_user;

create procedure p12(in v_num int)
begin
    # 声明的临时变量必须在游标之上
    declare v_name varchar(20);
    declare v_age int default 0;
    declare done int default 0;
    declare pro_cur cursor for select name ,age from tb_user where age > v_num;
    #增加异常处理
    # [02000][1329] No data - zero rows fetched, selected, or processed
    #declare exit handler for sqlstate '02000' close pro_cur;
    declare continue handler for not found set done:=1;
    # 准备要生成的表
#     drop table if exists pro_tb_user;
    create table if not exists pro_tb_user(
      id int auto_increment primary key ,
      name varchar(20),
      age int
    );
    #打开游标
    open pro_cur;
    #循环数据
    ext_loop :loop
        fetch pro_cur into v_name,v_age;
        if done =1 then
            leave ext_loop;
        end if;
        insert into pro_tb_user values (null,v_name,v_age);
    end loop;
    #关闭游标
    close pro_cur;
end;

call p12(50);

-- 表锁测试
-- 读锁 -都可以读 但是不能写
-- 写锁 -只有自己能读能写,别人都不能读不能写
lock tables test.tb_user read ;

select * from tb_user;
-- 创建表与删除表字段
alter table pro_tb_user add column java int;
desc pro_tb_user;
alter table pro_tb_user drop column java;

unlock tables;

-- 测试元元数据锁
start transaction ;
select * from tb_user;
select object_type,object_schema,object_name,lock_type,lock_duration from performance_schema.metadata_locks t;

commit ;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/443709.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Kronig-Penney能带模型的MATLAB求解与仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于Kronig-Penney能带模型的MATLAB求解与仿真.综合利用 MATLAB提供的求解常微分方程、矩阵行列式、代数表达式化简及绘图等函数 ,可使 Kronig-Penney能带模型分析…

P9238 [蓝桥杯 2023 省 A] 翻转硬币(杜教筛+莫比乌斯)

题目&#xff1a;https://www.luogu.com.cn/problem/P9238 思路&#xff1a; 代码&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<string> #include<cstring> #include<cmath> #include<ctime> #include<algo…

信息抽取在旅游行业的应用:以景点信息抽取为例

开源项目推荐 今天先给大家推荐一个开源项目&#xff0c;多模态AI能力引擎平台: 免费的自然语言处理、情感分析、实体识别、图像识别与分类、OCR识别、语音识别接口&#xff0c;功能强大&#xff0c;欢迎体验。 https://gitee.com/stonedtx/free-nlp-api 场景描述 在旅游行业…

酷开科技暖心推荐 酷开系统壁纸模式带来独特视觉享受

一款好看的壁纸能够让人眼前一亮&#xff0c;酷开科技倾心打造的酷开系统壁纸模式&#xff0c;以其独特的美学设计和视觉享受&#xff0c;为消费者提供了一种全新的使用体验。 首先&#xff0c;酷开系统壁纸模式的视觉效果十分出色。它采用了高清的图像质量和细腻的色彩渲染&a…

jvm堆概述

《java虚拟机规范》中对java堆的描述是&#xff1a;所有的对象实例以及数组都应当在运行时分配在堆上。 一个JVM实例只存在一个堆内存(就是new 出来一个对象)&#xff0c;java内存管理的核心区域 java堆区在jvm启动的时候就被创建&#xff0c;空间大小确定。是jvm管理的最大一…

智能革新:2024年AI辅助研发的挑战、机遇与未来展望

引言 在进入2024年的门槛时&#xff0c;我们站在了一个科技飞速发展的新纪元&#xff0c;其中&#xff0c;人工智能&#xff08;AI&#xff09;的持续进步和应用扩展无疑是推动这一变革的强大动力。AI辅助研发&#xff0c;作为将人工智能技术应用于科研和产品开发过程的一种模…

把握机遇:2024年游戏行业春招提前批全攻略

当前&#xff0c;国内游戏行业正处于高速发展期&#xff0c;各大游戏公司对应届毕业生的人才需求十分旺盛。这一趋势不仅为即将步入职场的学生们提供了广阔的就业前景&#xff0c;也为游戏产业的创新和多元化发展注入了新鲜血液。 在这样的大环境下&#xff0c;2024年春季提前批…

基于qt的图书管理系统----05其他优化

参考b站&#xff1a;视频连接 源码github&#xff1a;github 目录 1 优化借阅记录显示2 时间显示为年月日3 注册接口 1 优化借阅记录显示 现在只能显示部分信息&#xff0c;把接的书名和人的信息全部显示 在sql语句里替换为这一句即可实现查询相关联的所有信息 QString str…

html--彩虹爱心

文章目录 js内容cssreset.min.cssstyle.css html内容 js内容 const colors ["#e03776","#8f3e98","#4687bf","#3bab6f","#f9c25e","#f47274"]; const SVG_NS http://www.w3.org/2000/svg; const SVG_XLINK &q…

训练验证码之ddddocr一个图文视频教学

目录 一、推荐文章视频一、ddddocr环境配置二、字符集验证码训练三、ocr_api_server服务搭建 一、推荐文章视频 文章原文来自这里&#xff1a;训练验证码-4、ddddocr训练字符验证码 &#xff0c; 原文文章末尾有视频介绍更多内容见训练验证码合集 一、ddddocr环境配置 1.打开…

【漏洞复现】Salia PLCC cPH2 远程命令执行漏洞(CVE-2023-46359)

0x01 漏洞概述 Salia PLCC cPH2 v1.87.0 及更早版本中存在一个操作系统命令注入漏洞&#xff0c;该漏洞可能允许未经身份验证的远程攻击者通过传递给连接检查功能的特制参数在系统上执行任意命令。 0x02 测绘语句 fofa&#xff1a;"Salia PLCC" 0x03 漏洞复现 ​…

300分钟吃透分布式缓存-24讲:Redis崩溃后,如何进行数据恢复的?

Redis 持久化是一个将内存数据转储到磁盘的过程。Redis 目前支持 RDB、AOF&#xff0c;以及混合存储三种模式。 RDB Redis 的 RDB 持久化是以快照的方式将内存数据存储到磁盘。在需要进行 RDB 持久化时&#xff0c;Redis 会将内存中的所有数据以二进制的格式落地&#xff0c;每…

Swift 入门学习:集合(Collection)类型趣谈-上

概览 集合的概念在任何编程语言中都占有重要的位置&#xff0c;正所谓&#xff1a;“古来聚散地&#xff0c;宿昔长荆棘&#xff1b;游人聚散中&#xff0c;一片湖光里”。把那一片片、一瓣瓣、一粒粒“可耐”的小精灵全部收拢、吸纳的井然有序、条条有理&#xff0c;怎能不让…

【C++专栏】C++入门 | 函数重载、引用、内联函数

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;C专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ C入门 | 函数重载、引用、内联函数 文章编号&#xff1a;C入门 / 02 文…

【机器学习】在Python中进行K-Means聚类和层次聚类

Python中聚类算法API的使用指南 聚类分析是数据分析中一种常见的无监督学习方法&#xff0c;通过将相似的对象分组在一起&#xff0c;我们能够识别出数据集中的自然分群。本文将介绍如何使用Python中的聚类算法接口&#xff0c;KMeans和层次聚类方法。 K-Means 聚类 K-Means…

利用 Redis 和 Lua 实现高效的限流功能

简介 在现代系统中&#xff0c;限流是一种重要的机制&#xff0c;用于控制服务端的流量并保护系统免受恶意攻击或请求泛滥的影响。本文将介绍如何利用 Redis 和 Lua 结合实现高效的限流功能。 一、什么是限流 限流指的是对系统中的请求进行控制和调节&#xff0c;确保系统在…

动手学深度学习PyTorch版

基本的数据操作 import torch # 创建一个行向量&#xff0c;默认为从0开始的12个整数 # n维数组也称为张量 x torch.arange(12) x # 张量的形状 x.shape# 张量的大小,张量所有元素的个数 x.numel()#修改张量的形状 x x.reshape(3,4)#生成形状为3*4的两个向量&#xff0c;向…

离散数学——(4)

目录 1.主析取范式 2.大项 3.主合区范式 4.范式的求法 真值表法 5.推理理论 直接证法 1.主析取范式 2.大项 3.主合区范式 4.范式的求法 真值表法 5.推理理论 直接证法

验证码安全

目录 验证码识别&复用&调用&找回密码重定向&状态值 res 修改-找回密码修改返回状态值判定验证通过 验证码爆破-知道验证码规矩进行无次数限制爆破 短信轰炸原理 验证码识别&复用&调用&找回密码重定向&状态值 res 修改-找回密码修改返回状态…

GraalVM 虚拟机-概述

GraalVM 虚拟机 Graal 编译器以及由此诞生的GraalVM&#xff0c;虽然目前还处在实验阶段&#xff0c;但是也是 Java 程序员们必须要了解的&#xff0c;因为他未来极有可能替代 HotSpot&#xff0c;成为 Java生态的下一代技术基础。 1 、关于 Graal Graal编译器最早是作为 Ho…