zoukankan      html  css  js  c++  java
  • Mysql按日分表如何实现批量修改表结构 mysql分表分库后如何修改批量修改表结构

    Mysql按日分表如何实现批量修改表结构?
    1.列编辑
    1.1.首先通过以下sql查找出所有按日分表的表名

    SELECT
        table_name 
    FROM
        information_schema.TABLES 
    WHERE
        table_schema = 'bianmin_trade' 
        AND table_name LIKE 'bill_20%';

    1.2.通过文本工具(notepad++)自带的列编辑工具、进行批量编辑

     

    优点是:SQL语句比较简单直观,容易审核
    缺点是:按日分表,这样就会照成大量的SQL,显得很繁琐。
    场景:适合与生产环境执行;

    2.通过Mysql存储过程进行实现:

    /**判断存储过程是否存在,否则删除*/
    drop procedure if exists batchUpdate;
    /**声明存储过程*/
    CREATE PROCEDURE batchUpdate()  
      BEGIN  
        DECLARE tableName varchar(20) default '';  
        DECLARE done INT DEFAULT 0;  
        DECLARE tableNames CURSOR FOR select table_name from information_schema.tables where table_schema='bianmin_trade' and table_name like  'bill_20%';  
        DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;  
        OPEN tableNames;  
        REPEAT  
          FETCH tableNames INTO tableName;  
          IF not done THEN  
             set @sql=concat('alter table ',tableName,' add payment_type tinyint(2) not null default 3 comment "缴费类型"; ');
             PREPARE stmt from @sql; 
             execute stmt;
    
          END IF;  
        UNTIL done END REPEAT;  
        CLOSE tableNames;     
      END;  
    /**执行存储过程*/        
    call batchUpdate(); 
    /**删除存储过程*/
    drop procedure batchUpdate;

    优点是:SQL比较简洁
    缺点是:加大了审核难度,容易存在安全风险。
    场景:适合测试环境执行;

    早年同窗始相知,三载瞬逝情却萌。年少不知愁滋味,犹读红豆生南国。别离方知相思苦,心田红豆根以生。
  • 相关阅读:
    lqb 基础练习 数列特征
    lqb 基础练习 查找整数 (遍历)
    lqb 基础练习 杨辉三角形
    lqb 基础练习 特殊的数字
    lqb 基础练习 回文数
    lqb 基础练习 特殊回文数
    lqb 基础练习 十进制转十六进制
    lqb 基础练习 十六进制转十进制
    lqb 基础练习 十六进制转八进制 (字符串进行进制转化)
    Git详细操作
  • 原文地址:https://www.cnblogs.com/shanheyongmu/p/15513001.html
Copyright © 2011-2022 走看看