mysql 设计表与⽣成sql 语句
1、excel设计表
字段名
字段类型
是否为空(Y/N)
主键
默认值
字段注释
备注
业务模块
表名
注释id
int
Y
Y
主键ID
ai_auth_user
⽤户信息
表name
varchar
40
Y
⽤户姓名
ai_auth_user
增加字段的sql语句⽤户信息
表password
varchar
64
Y
密码
ai_auth_user
⽤户信息
2、创建设计表
CREATE TABLE    design_table    (
id INT NOT NULL AUTO_INCREMENT,        colName VARCHAR(128), -- 列名        colType VARCHAR(128), -- 列类型    colLength VARCHAR(128), -- 列类型长度        ISNULL CHAR(1), -- 是否为空 y 不为空    isKey CHAR(1), -- 是否主键 y 是
colDefault VARCHAR(64), -- 列默认值    colDescr VARCHAR(128),  -- 列注释            remark VARCHAR(256), -- 备注        bizModel VARCHAR(64), -- 模块名        tableName VARCHAR(64), -- 表名        tableDescr VARCHAR(64), -- 表备注        PRIMARY KEY (id)    )
ENGINE=InnoDB DEFAULT CHARSET=utf8 DEFAULT COLLATE=utf8_general_ci;
3、将excel表数据粘贴到数据库中(博主使⽤的数据库⼯具是dbvisualizer,⽀持多⾏粘贴)
4、查询⽣成创建表sql
-- group_concat函数长度限制问题
show variables like 'group_concat_max_len';
SET GLOBAL group_concat_max_len = 4294967295;
SET SESSION group_concat_max_len = 4294967295;
select
concat(
'create table ',  t.tableName, ' ( \n' ,
group_concat(
concat('\t', lName), ' ' , t.colType, t.isNull, t.colDefault, ' comment \'', t.colDescr, '\'', t.isKey ) order by t.i SEPARATOR ',\n'        ),
'\n) comment = \'', t.tableDescr,'\' ;\n\n\n'
) as columns
from (
select  (@i:=@i+1)  as  i,
t.tableName, t.tableDescr, t.colName, t.colDescr,
case lLength >0 then lType, '(', t.colLength, ')') lType end as colType,
case when t.isNull ='Y' then ' not null ' else ' null ' end as isNull,
case
when lDefault) > 0 lDefault like 'CURRENT_TIMESTAMP%' then concat(' default ', t.colDefault)
when lDefault) > 0 then concat(' default \'', t.colDefault, '\'')
else ' ' end as colDefault,
case when t.isKey ='Y' then  ' PRIMARY KEY auto_increment'  else ' ' end as isKey
from design_table t, (select  @i:=0)  as  it
) t
group by t.tableName, t.tableDescr;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。