-- 說明:
-- 1. 僅復制表結構:create table my_table_copy2 like my_table;
-- 2. 復制表結構和數據:create table my_table_copy1 select * from my_table; -- 只是按select語句執行的結果新建表,並不會復制表的主鍵、索引等信息
-- 3. 完全復制表:
-- create table my_table_copy2 like my_table;
-- insert into my_table_copy2 select * from my_table;
-- 4. 復制表,同時重新定義字段名:
-- create table my_table_copy3
-- select id,username yhm,realname xm,email dzyj,address dz from my_table;
-- 5. 復制表,同時定義字段信息:
-- create table my_table_copy4
-- (
-- id INTEGER not null auto_increment PRIMARY KEY
-- )
-- select * from my_table;
-- 打開查詢執行 SET GLOBAL event_scheduler = ON; 開啟事件
-- 查詢事件狀態:show variables like "event_scheduler" ;
BEGIN
-- 時間格式Format
set @v_bak = (DATE_FORMAT(CURRENT_DATE(),'%Y%m%d'));
-- 字符串拼接
SET @newTableName = CONCAT('expresspackage_',@v_bak,'bak');
-- 1.創建備份表
SET @sql_stmt_ins1=CONCAT('CREATE TABLE ', @newTableName , ' like expresspackage;');
-- 1.3預處理需要執行的動態SQL
PREPARE stmt_ins1 FROM @sql_stmt_ins1;
-- 執行SQL語句
EXECUTE stmt_ins1;
-- 釋放掉預處理段
DEALLOCATE PREPARE stmt_ins1;
-- 1.2備份表數據
SET @sql_stmt_ins1s=CONCAT('insert into ', @newTableName, ' select * from expresspackage;');
-- 1.3預處理需要執行的動態SQL
PREPARE stmt_ins1s FROM @sql_stmt_ins1s;
-- 執行SQL語句
EXECUTE stmt_ins1s;
-- 釋放掉預處理段
DEALLOCATE PREPARE stmt_ins1s;
-- 更新表內某個字段
update expresspackage
set CreateTime = REPLACE(CreateTime,DATE_FORMAT(DATE_SUB(CURRENT_DATE(),INTERVAL 1 DAY),'%Y-%m-%d'),DATE_FORMAT(CURRENT_DATE(),'%Y-%m-%d')) WHERE ID in
(SELECT ID from
(
SELECT id from expresspackage where CreateTime < DATE_FORMAT(CURRENT_DATE(),'%Y-%m-%d')
) as a
)
;
END