首页 > 数据库 >MySql实现文献计数,用于文献阅读数量记录

MySql实现文献计数,用于文献阅读数量记录

时间:2024-12-22 09:28:03浏览次数:8  
标签:dates record -- missing 计数 日期 MySql date 文献

本文档将在本地数据库中创建一个表格,在使用时请确保数据库配置完成,并使用命令USE选择所需创建表格的数据库。

这个数据库表格用于实现:每天自动进行一次记录文献阅读数量,如果没有手动写入,则为0.

本文档将完成:

在本地部署的MySQL数据库中创建一个表格:设置一个开始日期,比如三天前,然后它会自动生成三列,即id,日期,文献数量,其中文献数量默认值为0,也就是不阅读的话就是0,如果阅读了,则需要手动更改它的值,也就是说这份表格完全是自动生成,只有需要时才需要更改。程序应该实现这样的功能:在我使用这个表所在数据库的时候触发,检查当前日期,检查记录的日期(日期只要记录年月日即可),如果记录的日期已经记录到现在,就不做更改,如果记录的日期少于现在,就将剩下的日期补全,并将补全的日期中的literature_count设置为0。

创建数据库表格 literature_log

CREATE TABLE IF NOT EXISTS literature_log (
    id INT AUTO_INCREMENT PRIMARY KEY,  -- 自增 ID
    record_date DATE NOT NULL,          -- 记录的日期
    literature_count INT DEFAULT 0      -- 文献数量,默认值为 0
);

创建存储过程 fill_missing_dates

DELIMITER //

CREATE PROCEDURE fill_missing_dates()
BEGIN
    -- 声明变量
    DECLARE current_day DATE;
    DECLARE start_date DATE;
    DECLARE last_record_date DATE;

    -- 获取当前日期
    SET current_day = CURDATE();
    
    -- 设置开始日期为三天前
    SET start_date = DATE_SUB(current_day, INTERVAL 3 DAY);
    
    -- 获取表中最晚记录的日期
    SELECT MAX(record_date) INTO last_record_date FROM literature_log;
    
    -- 如果最晚记录日期小于开始日期,则从开始日期开始插入
    IF last_record_date IS NULL OR last_record_date < start_date THEN
        SET last_record_date = start_date;
    END IF;

    -- 如果最晚记录日期小于当前日期,则补全日期
    WHILE last_record_date < current_day DO
        SET last_record_date = DATE_ADD(last_record_date, INTERVAL 1 DAY);
        
        -- 插入新的记录,literature_count 默认 0
        INSERT INTO literature_log (record_date) VALUES (last_record_date);
    END WHILE;
END //

DELIMITER ;

启用事件调度器(Event Scheduler)

确保 MySQL 的事件调度器已启用。这对于定时执行存储过程是必需的。

SET GLOBAL event_scheduler = ON;

创建事件 fill_missing_dates_event

接下来,创建一个事件 fill_missing_dates_event,它将每天自动执行一次存储过程 fill_missing_dates(),确保自动补全缺失的日期。

DELIMITER //

CREATE EVENT IF NOT EXISTS fill_missing_dates_event
ON SCHEDULE EVERY 1 DAY   -- 每天执行一次
STARTS CURRENT_TIMESTAMP -- 从当前时间开始执行
DO
    CALL fill_missing_dates(); -- 调用存储过程

//

DELIMITER ;

检查事件和存储过程的状态

执行完上述步骤后,检查存储过程和事件是否已经成功创建。

查看事件

SHOW EVENTS;

查看事件的详细信息

SHOW CREATE EVENT fill_missing_dates_event;

查看存储过程

SHOW PROCEDURE STATUS LIKE 'fill_missing_dates';

手动触发存储过程

如果你想手动触发存储过程以补全日期,可以使用以下命令:

CALL fill_missing_dates();

其他

有时候可能出现操作失误等出现报错,下面的命令可能很实用:

删除当前的存储过程和事件

-- 删除已存在的存储过程
DROP PROCEDURE IF EXISTS fill_missing_dates;

-- 删除已存在的事件
DROP EVENT IF EXISTS fill_missing_dates_event;

标签:dates,record,--,missing,计数,日期,MySql,date,文献
From: https://blog.csdn.net/Jay_Franklin/article/details/144640172

相关文章

  • 2000-2023年 上市公司-企业数字化转型(报告词频、文本统计)原始数据、参考文献、代码、
    一、数据介绍数据名称:企业数字化转型-年度报告词频、文本统计数据范围:1999-2023年5630家上市公司样本数量:63051条,345个变量数据来源:上市公司年度报告数据说明:内含数字化转型314个词频、各维度水平、文本统计面板二、整理说明爬取1999-2023年上市公司年报将原始报告文本......
  • RockyLinux9编译安装MySQL8
    原文链接:RockyLinux9编译安装MySQL8-LiuZijian’sBlog|刘子健的博客Linux版本:RockyLinuxrelease9.5(BlueOnyx)1.下载打开MySQL-Community-Server官方下载页面:https://downloads.mysql.com/archives/community/筛选出要下载的版本,ProductVersion选择8.0......
  • javaFX.(蜜雪冰城点餐小程序)MySQL数据库
    学习Java只有3个月,不喜勿喷该小程序是用的MySQL数据库,编辑软件用的equals,为什么不用idea有提示因为主打一个纯手打要源码私信目录javafx.小程序(蜜雪冰城点餐系统)简介主体思路思路讲解用户登录用户注册忘记密码​编辑主页个人信息修改冬日温暖活动模糊查询,商品......
  • MySQl常用函数解析
    1.LEAST函数:返回多个值中的最小值LEAST(value1,value2,...,valueN)2.GREATEST函数:返回多个值中的最大值GREATEST(value1,value2,...,valueN)字符串比较规则:从字符串的第一个字符开始,逐个字符进行比较,直到找到不同的字符为止。如果字符串的前几个字符相同......
  • 【数据库开发】小红书MySQL数据一致性校验能力探索与实践
    本文主要介绍数据一致性校验如何结合小红书的业务进行实践并落地,以及数据一致性校验在小红书内部拿到的实际收益。一、背景1.1什么是数据一致性校验在数据迁移、数据同步以及多数据中心部署等场景中,数据的一致性要求极为严格。然而冗长的同步计算链路产生的误写或丢失、主从复......
  • 【Mysql索引优化】索引优化的最佳实现
    文章目录【Mysql优化】索引优化的最佳实现1.全值匹配:索引的最佳使用方式2.最左前缀法则3.尽量使用覆盖索引:优化查询性能。减少select\*语句4.范围查询优化5.不在索引列上做任何操作(计算、函数、(自动or手动)类型转换)6.少用不等、空值、OR(IN)6.1不等于(`!=`或`<>`......
  • MySQL安装过程
    下载MySQL:•访问MySQL官方网站(MySQL官网)。•选择适合Windows的版本下载(CommunityServer或EnterpriseEdition)。运行安装程序:•双击下载的安装文件并启动安装向导。•按照提示进行安装,包括选择安装类型(典型或自定义)。配置MySQLServer:•在安装过程中,你可以选择......
  • Windows系统MySQL详细安装教程
    MySQL官网:https://www.mysql.com/一、下载安装包1.进入官网后点击“DOWNLOADS”2.点击下面的红框框3.找到社区版MySQL(MySQLcommunityserver)4.下载免安装版安装到指定位置命名避免中文二、MySQL的配置1.设置全局变量!2.管理员权限打开cmd转到MySQL下的bin目录下......
  • MySQL 8.0 新特性详解
    MySQL8.0引入了许多重要的功能和改进,这些特性显著提升了数据库的性能、可用性和开发体验。以下是MySQL8.0的主要新特性及其详细解析:降序索引支持MySQL8.0支持降序索引,而之前版本即使语法支持,实际仍为升序。通过降序索引,查询性能在某些场景中得到显著优化。示例CR......
  • MySQL 全局参数配置详解
    引言合理的全局参数配置对于MySQL数据库的性能和稳定性至关重要。通过调整这些参数,可以优化服务器资源的使用效率,提高查询响应速度,并确保系统的可靠性和安全性。本文将详细介绍几个关键的MySQL全局参数及其最佳实践配置建议,帮助读者构建一个高效稳定的MySQL环境。一、连......