mysql设计表与生成sql语句

本文介绍了如何使用Excel来设计数据库表,并通过DBVisualizer工具将数据导入MySQL,同时展示了如何查询生成创建表的SQL语句。

1、excel设计表

字段名字段类型长度是否为空(Y/N)主键默认值字段注释备注业务模块表名表注释
idint YY 主键ID  ai_auth_user用户信息表
namevarchar40Y  用户姓名  ai_auth_user用户信息表
passwordvarchar64Y  密码  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', trim(t.colName), ' ' , 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 when t.colLength >0 then concat(t.colType, '(', t.colLength, ')') else t.colType end as colType,
                case when t.isNull ='Y' then ' not null ' else ' null ' end as isNull,
                case 
									when LENGTH(t.colDefault) > 0 and t.colDefault like 'CURRENT_TIMESTAMP%' then concat(' default ', t.colDefault) 
									when LENGTH(t.colDefault) > 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;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值