返回顶部
首页 > 资讯 > 数据库 >MySQL数据篇(八)-
  • 338
分享到

MySQL数据篇(八)-

MySQL数据篇(八)- 2017-06-10 15:06:55 338人浏览 猪猪侠
摘要

  思考:一般我们的数据都是存储在数据库里面,对于常规的CRUD操作都是用代码实现,比如使用PHP做项目,所有的数据处理都需要主动操作代码实现。如果我们现在有一项目,业务需要在用户下单后,对用户的订单进行分润处理,比如在每个月的21号,对上

  思考:一般我们的数据都是存储在数据库里面,对于常规的CRUD操作都是用代码实现,比如使用PHP项目,所有的数据处理都需要主动操作代码实现。如果我们现在有一项目,业务需要在用户下单后,对用户的订单进行分润处理,比如在每个月的21号,对上个月所有的订单按设置的规则进行分润处理,当然shll脚本也可以实现,但是今天我们说的是如何通过数据库“存储过程”和“事件”来实现。

 

一、如下图,是Mysql官网所介绍的https://dev.mysql.com/doc/refman/5.5/en/stored-objects.html

  1、简单的理解“存储过程”就是我们平时写的sql集合,里面可能包含IF判断或者posLoop:LOOP循环和我们平时写php代码差不多,就是为了实现某个操作(CRUD);

    “事件”,就是我们设置的一个自动开关,可以按照我们设置的时间,比如每天12:00或者每分钟处理一次(调用你写的存储过程)。

  

  2、比如我们常用的Navicat的数据库管理工具,第一个栏目是我们常用的“表”,第三个和第四个就是我们所说的“存储过程”和“事件”。

二、简单的需求。

  1、比如我们有一张表 t_user,需要每2分钟处理一下,如果 type 字段值为 1,则把 num 的值修改为 500。

 

   2、新建一个过程

   3、具体SQL代码。代码大致说明一下:

    :SQL里面所有需要用到的变量,都需要先定义,所有我们先定义了一下三个变量。

    :然后创建游标,相当于我们代码里面先获取数据,获取一个二维数组的 List ,并且把它放在 cur_test 里面,如果游标内容执行完成,就将 done的值设置为 1 。

    :打开游标,相当于开始获取到这个变量。开始循环,相当于我们经常做的 foreach 循环数组操作,先判断下,然后取出游标中的值,赋值给 定义好的变量。相当于我们key 和 value 键名 键值,然后判断满足即修改。

    :最后结束循环的标示和释放游标。

    :可以点击运行,如果没有问题就可以查看是否更改数据,有问题会有提示错误。

BEGIN
    #处理t_user如果type = 1,则将num修改为200
    
    #定义变量
    DECLARE done int;#定义游标标记
    DECLARE t_id int;#定义需要处理的id值
    DECLARE t_type int;#定义记录值类型
    
    #创建游标,并存储数据
    DECLARE cur_test CURSOR
            FOR
            SELECT id,type FROM t_user LIMIT 500;
    
    #游标中的内容执行完后将done设置为1
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

    #打开游标
    OPEN cur_test;
    
    #执行循环
    posLoop:LOOP
    
        #判断是否结束循环
        IF    done = 1 THEN
                LEAVE    posLoop;
        END IF;

        #取游标中的值
        FETCH cur_test INTO t_id,t_type;
        
        #如果type = 1,则将num修改为200
        IF t_type = 1 THEN
                #执行更新操作
                UPDATE t_user SET num = 200 WHERE id = t_id;
        END IF;

    #结束循环
    END LOOP posLoop;
    
    #释放游标
    CLOSE cur_test;
END

  4、创建 “事件”调用写好的过程 p_t3()。调用 存储过程 一般用 CALL + 过程名。

   5、点击保存时,可能提示 “event_scheduler = OFF” 未开启,我们开启下即可,指令如下。注意,每次重启MySQL后,该值会设为 off 需要重新开启一下。

#开启
SET GLOBAL event_scheduler = ON;
#关闭
SET GLOBAL event_scheduler = OFF;

  最后:只要数据库服务开启,每分钟都会调用一次p_t3(),实现里面的业务规则。第一个简单存储过程加事件的调用,到此为止,至于为什么SQL里面这样写,我们往下看我的“MySQL实现定时清理过期数据”篇。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL数据篇(八)-

本文链接: https://lsjlt.com/news/2386.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL数据篇(八)-
      思考:一般我们的数据都是存储在数据库里面,对于常规的CRUD操作都是用代码实现,比如使用PHP做项目,所有的数据处理都需要主动操作代码实现。如果我们现在有一项目,业务需要在用户下单后,对用户的订单进行分润处理,比如在每个月的21号,对上...
    99+
    2017-06-10
    MySQL数据篇(八)-
  • 【MySQL进阶之路丨第八篇】MySQL数据的插入及查询
    引言 ✒️在上一篇中我们介绍了数据表的创建和删除;在开发中,了解数据库中数据的运行方式、运行逻辑是十分重要的。 ✒️这一篇我们使用命令行方式来帮助读者掌握MySQL数据的插入及查询。 ⚽上一篇...
    99+
    2023-10-09
    mysql 数据库 sql 后端
  • MySQL数据篇(九)-
    需求:有一个活动记录表 t_ad ,商家每次发起一个活动,就会在 t_shake_devices_relation 表里面生成一些关联记录。现在写一个存储过程实现,如果活动过期,就将关联表里面的数据标记删除。 代码如下: BEGIN ...
    99+
    2021-12-29
    MySQL数据篇(九)-
  • MySQL数据库高级(八)——事件
    MySQL数据库高级(八)——事件 一、事件简介 1、事件简介 事件是用来执行定时任务的一组SQL集,在时间到时会触发。一个事件可调用一次,也可周期性的启动,由一个特定的事件调度器线程来管理的。事件取代了原...
    99+
    2024-04-02
  • Java 八股文-基础篇
    Java 基础 一、Java 概述 1.什么是 Java? Java 是一门面向对象的编程语言,不仅吸收了 C++语言的各种优点,还摒弃了 C++里难以理解的多继承、指针等概念,因此 Java 语言具...
    99+
    2023-09-18
    java jvm 开发语言 八股文
  • Python之路【第八篇】:Python
    一、模块和包 模块(module)的概念: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码会越来越长,越来越不容易维护。 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较...
    99+
    2023-01-31
    之路 第八篇 Python
  • python 学习 第八篇 jquery
    简介:jQuery是一个javascript库。极大滴简化了javascript编程。包含内容:HTML 元素选取HTML 元素操作CSS 操作HTML 事件函数JavaScript 特效和动画HTML DOM 遍历和修改AJAX1:下载 ...
    99+
    2023-01-31
    第八篇 python jquery
  • (八) 在Kubernetes上运行MySQL数据库 Running MySQL on Kubernetes
    作者:禅与计算机程序设计艺术 1.简介 Kubernetes(简称K8s)是一个开源的、用于管理云平台中容器化的应用的开源系统。在Kubernetes的框架下,可以轻松部署容器化的应用程序,同时让它...
    99+
    2023-09-24
    自然语言处理 人工智能 语言模型 编程实践 开发语言 架构设计
  • mysql 基础篇-数据查询(1)
    一、查询数据的概念:查询数据、筛选数据、确定数据的以什么样的格式输出。二、数据查询的基本语句   1、基本语句格式 :select 字段列表  FROM 表或者视图 ...
    99+
    2024-04-02
  • MySQL数据库提升篇-----事务
    day08 MySQL数据库提升篇-----事务一、事务概述:    事务在MySQL数据库中也是重要的一个部分,事务是由单独单元的一个或多个sql语句组成。每一个单...
    99+
    2024-04-02
  • 三战MySQL数据库【终极篇】
    MYSQL入门系列——第三篇 每篇前言:0.准备工作:1.表结构修改:(关键字alter)2.约束条件:(1)默认约束(default):(2)非空约束(not null):(3)唯一约束(u...
    99+
    2023-09-03
    mysql 六大约束条件 三大表关系 视图和索引 mysql正则
  • java实习心得总结(八篇)
        java实习心得总结(篇一)   此次只实训了短短的三周。虽说时间很短,但其中的每一天都使我收获很大、受益匪浅,它不但极大地加深了我对一些理论知识的理解,不仅使我在理论上对java有了全新的认识,在实践能力上也得到了提高,真正地做...
    99+
    2023-09-21
    java 开发语言
  • 【MySQL基础篇】MySQL数据库安装教程
    ✅作者简介:大家好我是hacker707,大家可以叫我hacker,新星计划第三季python赛道Top1🏆 📃个人主页:hacker707的csdn博客 ...
    99+
    2023-09-06
    数据库 mysql
  • MySQL数据库提升篇-----触发器
    day06 MySQL数据库提升篇-----触发器一、触发器概述:    触发器是什么?能有什么作用?能给我们带来什么样的操作数据库的方法这都在这里学一一的告诉大家。...
    99+
    2024-04-02
  • 【MySQL数据库 | 第十五篇】事务
        目录    前言:  介绍事务:  控制事务:  事务四大特性:  并发事务问题:  事务隔离级别: 总结:    前言: 这章我们将进入到MySQL基础篇的最后一章:事务,希望大家可以坚持下去,跟着我一起走完MySQL的学...
    99+
    2023-09-03
    数据库 mysql java
  • Oracle(PLSQL)入门学习八(完结篇)
    学习视频:https://www.bilibili.com/video/BV1tJ411r7ECp=75 游标cursor:用于存放多条数据的容器。需要开始open和关闭close。游标下移使用“fetch...into...”。...
    99+
    2022-04-06
    Oracle(PLSQL)入门学习八(完结篇)
  • python之基础篇(八)——模块与包
    防伪码:忘情公子著python中的模块  将代码量较大的程序分割成多个有组织的、彼此独立但又能互相交互的代码片段,这些自我包含的有组织的代码段就是模块。  模块在物理形式上表现为以.py结尾的代码文件:    一个文件被看作一个独立的模块,...
    99+
    2023-01-31
    模块 基础 python
  • JavaScript的八种数据类型
    目录一、前言二、动态数据类型2.1 字符串string2.2 数值number2.3 布尔boolean2.4 null和undefined2.5 symbol2.6 对象objec...
    99+
    2024-04-02
  • 【java的类型数据】——八大类型数据
    文章目录 前言字面常量字面常量的分类: 数据类型和变量变量的包装类和范围范围整型变量byteintshortlong 浮点型变量双精度浮点型double单精度浮点型float 字符型变量char布尔型变量 boole...
    99+
    2023-08-16
    java 开发语言 类型数据 学习
  • mysql第八课
    开启事务: START TRANSACTION; 提交事务: COMMIT; 回滚事务: ROLLBACK;   事务的概念:原子性,一致性,隔离性,持久性   READ UNCOMMITTED(读了未提交) READ COMMI...
    99+
    2020-05-07
    mysql第八课
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作