真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Mysql用存儲(chǔ)過(guò)程和事件每月定時(shí)創(chuàng)建一張數(shù)據(jù)庫(kù)表

業(yè)務(wù)需求,把a(bǔ)pp用戶開(kāi)機(jī)寫(xiě)入一張日志表app_open_log。
上線7個(gè)月來(lái),有74萬(wàn)條記錄了。

成都創(chuàng)新互聯(lián)公司長(zhǎng)期為千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為松溪企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì),松溪網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

現(xiàn)考慮要分庫(kù)分表了。每個(gè)月初創(chuàng)建一張以app_open_log_為前綴,日期年月為后綴的數(shù)據(jù)庫(kù)表,比如:app_open_log_201807。

實(shí)現(xiàn)思路
MySQL如何每月自動(dòng)建表?
一、新建事件每月調(diào)用存儲(chǔ)過(guò)程
二、存儲(chǔ)過(guò)程里面建表
1、獲取當(dāng)前時(shí)間,轉(zhuǎn)換字符串
2、拼接sql語(yǔ)句建表

實(shí)現(xiàn)方法
把下面兩段復(fù)制到sql,執(zhí)行即可。

首先創(chuàng)建存儲(chǔ)過(guò)程:


DELIMITER //
CREATE PROCEDURE create_table_app_open_log_month()
BEGIN
DECLARE `@suffix` VARCHAR(15);
DECLARE `@sqlstr` VARCHAR(2560);
SET `@suffix` = DATE_FORMAT(DATE_ADD(NOW(),INTERVAL 1 MONTH),'_%Y%m');
SET @sqlstr = CONCAT(
"CREATE TABLE jz_app_open_log",
`@suffix`,
"(
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `equipment_type` varchar(45) DEFAULT NULL ,
  `equipment_version` varchar(45) DEFAULT NULL ,
  `rom` varchar(45) DEFAULT NULL ,
  `cpu` varchar(45) DEFAULT NULL ,
  `mac` varchar(100) DEFAULT NULL ,
  `ip` varchar(50) DEFAULT NULL ,
  `version_code` varchar(10) DEFAULT NULL ,
  `client` varchar(45) DEFAULT '' ,
  `create_time` int(10) DEFAULT NULL,
  `version_name` varchar(45) DEFAULT '' ,
  `v` varchar(10) DEFAULT '',
  PRIMARY KEY (`id`),
  UNIQUE KEY `id_UNIQUE` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;"
);
PREPARE stmt FROM @sqlstr;
EXECUTE stmt;
END;

然后創(chuàng)建事件每月1日?qǐng)?zhí)行上面的存儲(chǔ)過(guò)程:

DELIMITER $$
SET GLOBAL event_scheduler = 1;
CREATE EVENT event_create_table_every_month
ON SCHEDULE EVERY 1 MONTH
STARTS '2018-07-01 00:00:00'
ON  COMPLETION  PRESERVE
ENABLE
DO
BEGIN
CALL create_table_app_open_log_month();
END

通過(guò)Navicate可以查看到
Mysql用存儲(chǔ)過(guò)程和事件每月定時(shí)創(chuàng)建一張數(shù)據(jù)庫(kù)表

這樣就OK了!

擴(kuò)展知識(shí):什么是存儲(chǔ)過(guò)程?
在一些語(yǔ)言中,有“過(guò)程”這種概念,procedure,和"函數(shù)",function,
PHP中沒(méi)有過(guò)程,只有函數(shù)。
過(guò)程:封裝了若干條語(yǔ)名,調(diào)用時(shí),這些封裝體執(zhí)行。
函數(shù):是一個(gè)有返回值的過(guò)程。
過(guò)程:是沒(méi)有返回值的函數(shù)。

我們把若干條sql封裝起來(lái),取個(gè)名字,---過(guò)程。
把此過(guò)程存儲(chǔ)在數(shù)據(jù)庫(kù)中,---存儲(chǔ)過(guò)程。

存儲(chǔ)過(guò)程創(chuàng)建語(yǔ)法:
定義:
create procedure procedureName()
begin
--sql語(yǔ)句;
end$
查看:
show procedure status;
調(diào)用:
call procedure()

存儲(chǔ)過(guò)程是可以編程的
即可以用變量,表達(dá)式,控制語(yǔ)句來(lái)完成復(fù)雜的功能。

在存儲(chǔ)過(guò)程中,用declare聲明變量
格式: declare 變量名 變量類型。

例:

create procedure p2()
begin 
declare age int default 18;
declare height int default 180;
select concat('年齡是',age,'身高是',height);
end$

有變量,就能運(yùn)算,有運(yùn)算,有運(yùn)算就能控制。
運(yùn)算的結(jié)果,如何賦值給變量。
set 變量名:=變量值

例:

create procedure p3()
begin
declare age int default 18;
set age:=age+20;
select concat(’20年后年齡是’,age);
end$

-- if/else控制結(jié)構(gòu)
if condition then
statement
else
end if;

--p5 給存儲(chǔ)過(guò)程傳參
存儲(chǔ)過(guò)程的括號(hào)里,可以聲明參數(shù),
語(yǔ)法是[in/out/inout] 參數(shù)名 參數(shù)類型
例:

create procedure p5(width int,height int)
begin 
select concat('你的面積是',width*height)  as area;
if width>height then
select '你很胖';
else if width

call p5(3,4)$

相關(guān)視頻:
布爾教育_MySQL高級(jí).007.存儲(chǔ)過(guò)程概念

布爾教育_MySQL高級(jí).008.引入變量與控制結(jié)構(gòu)

布爾教育_MySQL高級(jí).009.存儲(chǔ)過(guò)程的參數(shù)傳遞

本文參考了以下文章:
https://blog.csdn.net/xuanyonghao/article/details/76407720
https://blog.csdn.net/u013897685/article/details/51579121?
https://www.cnblogs.com/smile-wei/p/6424671.html
http://blog.163.com/bailin_li/blog/static/174490179201601110363/
https://blog.csdn.net/qq_26562641/article/details/53301407
https://blog.csdn.net/heshi111/article/details/53519806

重在動(dòng)手實(shí)踐。再有問(wèn)題,歡迎加入PHP技術(shù)問(wèn)答群提問(wèn)。謝謝閱讀!

---------- 招募未來(lái)大神 -----------------------

如果您有利他之心,樂(lè)于幫助他人,樂(lè)于分享
如果您遇到php問(wèn)題,百度且問(wèn)了其他群之后仍沒(méi)得到解答

歡迎加入,PHP技術(shù)問(wèn)答群,QQ群:292626152

教學(xué)相長(zhǎng)!幫助他人,自己也會(huì)得到提升!

為了珍惜每個(gè)人的寶貴時(shí)間,請(qǐng)大家不要閑聊!

愿我們互相幫助,共同進(jìn)步!

加入時(shí)留言暗號(hào),php,ajax,thinkphp,yii...


本文題目:Mysql用存儲(chǔ)過(guò)程和事件每月定時(shí)創(chuàng)建一張數(shù)據(jù)庫(kù)表
網(wǎng)頁(yè)地址:http://weahome.cn/article/iesshd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部