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小时内删除。
发表评论