IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 10分钟学会MySQL存储过程(使用方法,看完即用) -> 正文阅读

[大数据]10分钟学会MySQL存储过程(使用方法,看完即用)

10分钟学会MySQL存储过程(使用方法,看完即用)

准备测试数据

登录mysql,复制粘贴,运行即可

drop database if exists mytest;
create database mytest default character set utf8;
use mytest;

DROP TABLE IF EXISTS emp;
CREATE TABLE emp (
  id int(11) PRIMARY KEY AUTO_INCREMENT,
  age int(11) DEFAULT NULL,
  name varchar(50) DEFAULT NULL
)DEFAULT CHARSET=utf8;

INSERT INTO `emp` VALUES (1, 18, '张三');
INSERT INTO `emp` VALUES (2, 20, '李四');
INSERT INTO `emp` VALUES (3, 25, '王五');
INSERT INTO `emp` VALUES (4, 22, '赵六');

DROP TABLE IF EXISTS log;
CREATE TABLE log (
  id int(11) PRIMARY KEY AUTO_INCREMENT,
  action varchar(50) DEFAULT NULL,
  uid int(11) DEFAULT NULL,
  time datetime DEFAULT NULL
)DEFAULT CHARSET=utf8;

思考:

在jdbc操作中,部分逻辑判断,是在java代码中完成后,然后根据判断后的记过去执行对应的sql语句。

有没有可能sql本身就可以做类似if操作呢? 答案是:可以的!

1.存储过程

1.能在sql中完成复杂的判断和运算
2.可编程性强,灵活
3.sql还重复使用

1.1 如何创建:

    create [or replace] procedure 存储过程名(参数列表)
    begin
        封装的sql语句
    end;

注意:命令行下执行命令时,因为只要输了分号就表示结束语句结束了,所以,创建存储过程时需要执行命令:

delimiter 表示开启一个代码段,在没有输入 表示开启一个代码段,在没有输入 表示开启一个代码段,在没有输入 时,表示整个代码段还未结束,就算输了分号也没事。

所以在命令行下应该这么写:

delimiter $$
create procedure 存储过程名(参数列表)
begin
    封装的sql语句(可以多条)
end;
$$

案例1: 创建一个简单的存储过程,封装一条sql,不含参数 (之后的语句都需要以 $$结束)

delimiter $$
create procedure p1()
begin
    select * from emp;
end;
$$

1.2 查询存储过程:

show procedure status;

1.3 调用存储过程:

call 存储过程名(参数列表);

1.4 删除存储过程:

drop procedure 存储过程名;

1.5 创建含变量的存储过程

create procedure p2()
begin
    declare my_name varchar(50) default '';
    select name into my_name from emp where id=2;
    select my_name;
end;        

其中语法说明:
    1. 声明变量:  declare 变量名 变量类型 default 默认值
    2. into :  将值复制给指定变量 

1.6 创建含参数的存储过程

create procedure p3(IN my_id int)
begin
    select name  from emp where id=my_id;
end;

语法说明:IN 是关键字,表示入参的意思

1.7 创建带有if判断的存储过程

if语法单分支:

    if(条件) then
        条件满足执行的语句
    end if;

if语法双分支:

    if(条件) then
        条件满足执行的语句
    else
        条件不满足执行的语句
    end if;

if多路分支

    if(条件1)  then 
        满足条件1执行的语句;
    elseif(条件2) then
        满足条件2执行的语句;
    else
        否则执行的语句;
    end if;
案例如下:
create procedure p4(IN my_id int)
begin
    declare my_name varchar(50) default '';
    if(my_id%2=0) then
        select name into my_name from emp where id = my_id;
        select my_name;
    else
        select my_id;
    end if;
end;

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-07-20 18:56:33  更:2022-07-20 18:58:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 4:44:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码