dELIMITER $$USE `aa1`$$DROP PROCEDURE IF EXISTS `aa`$$CREATE PROCEDURE `aa`() BEGIN DECLARE f INT DEFAULT 1; WHILE f<=100 DO SET @a=CONCAT('create table t',f,' (id int,bh varchar(10))'); PREPARE stml FROM @a; EXECUTE stml; SET f=f+1; END WHILE; END$$DELIMITER ;
SQL语句无法实现循环,只能通过程序或者存储过程来实现。如果只是一次性工作,则建议直接用EXCEL的公式手批量生成SQL语句 然后一次性贴到MYSQL的命令行工具中执行即可。S1 : 创建一个模板表 create table t (id int, col1 int , col2 varchar(10)); S2 : EXCEL中在A1输入 ="create table t"&ROW()&" like t;" S3: 下拉填充这个A1至A1000 create table t1 like t; create table t2 like t; create table t3 like t; create table t4 like t; create table t5 like t; create table t6 like t; create table t7 like t; create table t8 like t; create table t9 like t; create table t10 like t;S4: 复制到MYSQL命令行工具一次行执行。
[root@localhost ~]# for i in `seq 1 10`; do echo "create table tb$i(a int);"; done 然后拿语句占到sql客户端里
BEGIN
DECLARE f INT DEFAULT 1;
WHILE f<=100 DO
SET @a=CONCAT('create table t',f,' (id int,bh varchar(10))');
PREPARE stml FROM @a;
EXECUTE stml;
SET f=f+1;
END WHILE;
END$$DELIMITER ;
S2 : EXCEL中在A1输入 ="create table t"&ROW()&" like t;"
S3: 下拉填充这个A1至A1000
create table t1 like t;
create table t2 like t;
create table t3 like t;
create table t4 like t;
create table t5 like t;
create table t6 like t;
create table t7 like t;
create table t8 like t;
create table t9 like t;
create table t10 like t;S4: 复制到MYSQL命令行工具一次行执行。
然后拿语句占到sql客户端里