创建函数
-- ----------------------------
-- Procedure structure for cleanProc
-- ----------------------------
DROP PROCEDURE IF EXISTS `cleanProc`;
delimiter ;;
CREATE PROCEDURE `cleanProc`()
BEGIN
delete from T_TARGET_FILE where (TO_DAYS(NOW()) - TO_DAYS(RECEIVE_TIME))>3;
delete from T_RECV_LOG where (TO_DAYS(NOW()) - TO_DAYS(RECEIVE_TIME))>3;
END
;;
delimiter ;
创建事件
-- ----------------------------
-- Event structure for cleanEvent
-- ----------------------------
DROP EVENT IF EXISTS `cleanEvent`;
delimiter ;;
CREATE EVENT `cleanEvent`
ON SCHEDULE
EVERY '1' DAY STARTS '2019-08-24 08:00:00'
ON COMPLETION PRESERVE
DO call cleanProc()
;;
delimiter ;
SET FOREIGN_KEY_CHECKS = 1;
删除事件
drop event cleanEvent
查看事件
show events
show variables like 'event_scheduler';
select @@event_scheduler;
查看存储过程
show create procedure cleanProc
启动事件
set global event_scheduler = on;
存储过程查询
SELECT SPECIFIC_NAME,SECURITY_TYPE,SQL_DATA_ACCESS FROM information_schema.ROUTINES where ROUTINE_NAME='cleanProc';
SELECT * FROM information_schema.ROUTINES where ROUTINE_NAME='cleanProc';
存储过程删除
DROP PROCEDURE cleanProc ;
存储过程调用
call cleanProc()
命令行下创建存储过程
存储过程想修改一下,网上兜兜转转找起来修改没改太明白,如果仍有修改需要请自行百度,我用了一种笨方法,就是先删除再增加,有图形管理客户端搞起来比较容易,但是如果通过mysql命令行进行进行修改,便遇到了一头雾水,因为存储过程里写了两条SQL,每条SQL后面都用;分隔了,估计是与mysql命令行执行的分号有冲突,所以一直报错。后来百度了下,找到了修改的方法:
步骤:1先修改mysql语句执行的分隔符 2持行存储过程,具体来看下图吧:
修改mysql 语句持行分隔符: DELIMITER //
创建存储过程:
CREATE DEFINER=`back_aqjk`@`%` PROCEDURE `cleanProc`()
BEGIN
delete from T_TARGET_FILE where (TO_DAYS(NOW()) - TO_DAYS(RECEIVE_TIME))>3;
delete from T_RECV_LOG where (TO_DAYS(NOW()) - TO_DAYS(RECEIVE_TIME))>3;
END
密码修改(转载)
方法1: 用SET PASSWORD命令
首先登录MySQL。
格式:mysql> set password for 用户名@localhost = password('新密码');
例子:mysql> set password for root@localhost = password('123');
方法2:用mysqladmin
格式:mysqladmin -u用户名 -p旧密码 password 新密码
例子:mysqladmin -uroot -p123456 password 123
方法3:用UPDATE直接编辑user表
首先登录MySQL。
mysql> use mysql;
mysql> update user set password=password('123') where user='root' and host='localhost';
mysql> flush privileges;
方法4:在忘记root密码的时候,可以这样
以windows为例:
1. 关闭正在运行的MySQL服务。
2. 打开DOS窗口,转到mysql\bin目录。
3. 输入mysqld --skip-grant-tables 回车。--skip-grant-tables 的意思是启动MySQL服务的时候跳过权限表认证。
4. 再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),转到mysql\bin目录。
5. 输入mysql回车,如果成功,将出现MySQL提示符 >。
6. 连接权限数据库: use mysql; 。
6. 改密码:update user set password=password("123") where user="root";(别忘了最后加分号) 。
7. 刷新权限(必须步骤):flush privileges; 。
8. 退出 quit。
9. 注销系统,再进入,使用用户名root和刚才设置的新密码123登录。
说明:新安装的MySQL5.7,输入UPDATE user SET password=PASSWORD("123456") WHERE user='root';时 提示ERROR 1054 (42S22): Unknown column 'password' in 'field list',原来是mysql数据库下已经没有password这个字段了,password字段改成了authentication_string,所以 UPDATE user SET authentication_string=PASSWORD("123456") WHERE user='root';即可
方法5:alter user 'root'@'localhost' identified by '123456'; 这种方式适用于高版本更改成功后需要重启mysql服务
原文:https://blog.csdn.net/zht741322694/article/details/82462552
创建唯一索引
ALTER TABLE `test`.`T_TARGET_FILE`
ADD UNIQUE INDEX `mineCode_fileType_fileTime`(`COAL_MINE_ID`, `FILE_TYPE`, `FILE_TIME`) USING BTREE;
创建重复数据并且只留一条
DELETE FROM T_TARGET_FILE WHERE ID IN
(SELECT M.ID FROM
(SELECT MIN(ID)AS ID FROM T_TARGE GROUP BY COAL_MINE_ID,FILE_TYPE,FILE_TIME HAVING COUNT(1)>1) M
)
- 注 :如果不加一层select M.ID from m,则会报错:ERROR 1093 (HY000): You can’t specify target table ‘T_TARGET_FILE’ for update in FROM clause
意思是不能直接在同一表中即查询又删除,需要增加一个中间表进行操作