MySQL按天建表

2021-10-01 21:12:07 字數 2914 閱讀 8494

mysql設定定時任務:

需求:mysql資料庫裡面做個定時任務自動每天建立一張表。

1.檢視是否開啟event與開啟event

show variables like '%sche%'

;

若未開啟

set global event_scheduler =

1;

2.建立儲存過程

每天建立乙個名為 test_年月日的表

delimiter //

drop procedure if exists create_table01//

create procedure create_table01()

begin

declare str_date varchar(50

);set str_date =

date_format

(now()

,'%y%m%d'

);

set @sqlcmd1 =

concat

('create table test_'

,str_date,

'(id int(11) not null auto_increment primary key,

time datetime not null

) ;');

prepare p1 from @sqlcmd1;

execute p1;

deallocate prepare p1;

end//

delimiter ;

3.建立事件,呼叫儲存過程

drop event if exists test_event01;

create event test_event01

on schedule every 1 day starts now()

do call create_table01()

;

開啟事件

alter event test_event on completion preserve enable;
show tables;
查詢是否建表成功

若是想關閉事件:

alter event test_event on completion preserve disable;
4.事件執行時間的設定

create event test_event01 on schedule every 1 day starts '2012-09-24 00:00:00'

on completion preserve enable do call create_table01()

;

every #後面的是時間間隔,可以選 1 second,3 minute,5 hour,9 day,1 month,1 quarter(季度),1 year

#從2023年1月13號0點開始,每天執行一次

on schedule every 1 day   starts '2013-01-13 00:00:00'
#從現在開始每隔九天定時執行

on schedule every 9 day starts now

() ;

#每個月的一號凌晨1 點執行

on schedule every 1 month starts date_add

(date_add

(date_sub

(curdate()

,interval day

(curdate()

)-1 day)

,interval 1 month)

,interval 1 hour)

;

#每個季度一號的凌晨1點執行

on schedule every 1 quarter starts date_add

(date_add

(date

(concat

(year

(curdate()

),'-',

elt(

quarter

(curdate()

),1,

4,7,

10),'-',1

)),interval 1 quarter)

,interval 1 hour)

;

#每年1月1號凌晨1點執行

on schedule every 1 quarter starts date_add

(date_add

(date

(concat

(year

(curdate()

),'-',

elt(

quarter

(curdate()

),1,

4,7,

10),'-',1

)),interval 1 quarter)

,interval 1 hour)

;

5.幾個相關概念

儲存程式:( 儲存函式(stored function)+儲存過程(stored procedure)+觸發器(trigger)+事件(event) )

儲存函式:返回乙個計算結果,該結果可以用在表示式裡

儲存過程:不直接返回乙個結果,但可以用來完成一般的運算或是生成乙個結果集並傳遞會客戶

觸發器:與資料表關聯,當那個資料表被 insert、delete、update語句修改時,觸發器將自動執行

事件:根據時間表在預訂時刻自動執行

mysql建立使用者表 mysql 建庫建表建使用者

1.建立資料庫 create database school 2.使用資料庫 use school 3.建立使用者 create user jame localhost identified by jame 4.授權使用者 注意這裡是用了 哦,可以自己講school也替換成 號 grant sele...

mysql建表思路 MySQL 建表思路

思想 硬碟如倉庫,表如倉庫中貨架 常用與不常用等分類 欄位如貨物 尺寸是固定或變動 訪問貨物涉及到貨架的佔位 效率。資料型別選用,建表思路,正規化 資料型別特點 資料型別的速度關係 最快 整形 date,time char,enum varchar text blob 最慢 char 與 varch...

mysql建表建索引6 mysql建表建索引

建表 create table sj projects id int 11 not null auto increment,title varchar 255 not null default comment 專案名稱 platform id int 11 not null default 0 co...