本文共 1934 字,大约阅读时间需要 6 分钟。
通过MySQL存储程序,可以自动化地创建多个数据库表。在本文中,我们将编写一个MySQL存储程序,该程序可以自动创建100张表。这将节省手动编写SQL语句的时间,提高效率。
以下是存储程序的代码:
#mysqlDELIMITER $$CREATE PROCEDURE `createTables`() BEGIN DECLARE i INT; DECLARE table_name VARCHAR(20); DECLARE table_pre VARCHAR(20); DECLARE sql_text VARCHAR(2000); SET i = 0; SET table_name = ''; SET table_pre = 'user_convenient_'; SET sql_text = ''; WHILE i < 100 DO IF i < 10 THEN SET table_name = CONCAT(table_pre, '0', i); ELSE SET table_name = CONCAT(table_pre, i); END IF; SET sql_text = CONCAT('CREATE TABLE ', table_name, '(user_id bigint(20) NOT NULL DEFAULT 0 COMMENT \'用户ID\', operate_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT \'数据更新时间\', PRIMARY KEY (user_id)) ENGINE=INNODB DEFAULT CHARSET=utf8'); SELECT sql_text; SET @sql_text = sql_text; PREPARE stmt FROM @sql_text; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET i = i + 1; END WHILE;END$$DELIMITER ;#drop PROCEDURE createTables;删除存储程序#call createTables();执行存储程序#show procedure status;列出存储程序状态#show create procedure createTables显示存储程序的具体内容 createTablesi:用于计数器,控制循环次数table_name:存储当前要创建的表名table_pre:表名前缀,用于生成表名sql_text:存储生成的SQL语句WHILE i < 100 DO:执行100次循环IF i < 10 THEN ... ELSE ...:表名生成规则 i小于10时,表名格式为user_convenient_0iuser_convenient_iSELECT sql_text;显示SQL语句PREPARE和EXECUTE执行SQL语句DEALLOCATE PREPARE stmt;释放准备好的语句#call createTables();
#show procedure status;#show create procedure createTables;
table_name的长度为20字符,确保表名不超过这个限制通过上述存储程序,您可以快速创建100张表,适用于需要大量标准化数据模型的场景。如有任何问题或需要进一步的帮助,请随时联系我。
转载地址:http://srbfk.baihongyu.com/