例如一个create table语句:
CREATE TABLE `t_user` (
`id` varchar(32) NOT NULL COMMENT '用户ID',
`user_name` varchar(64) NOT NULL COMMENT '用户姓名',
`password` varchar(64) NOT NULL COMMENT '登录密码',
`email` varchar(64) NOT NULL COMMENT '邮箱地址',
`mobile` varchar(64) NOT NULL DEFAULT '' COMMENT '手机号',
`address` varchar(512) NOT NULL DEFAULT '' COMMENT '地址',
`sex` tinyint(4) NOT NULL DEFAULT '0' COMMENT '性别,1-男、2-女、3-未知',
`status` int(10) unsigned NOT NULL DEFAULT '1' COMMENT '状态:1、未转正;2、虚拟;4、转正;8、待离职;16、已离职',
`security_key` varchar(128) NOT NULL DEFAULT '' COMMENT '登陆安全校验码',
`ctime` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '数据创建时间',
`mtime` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '记录最后一次修改的时间',
PRIMARY KEY (`id`),
KEY `idx_mobile` (`mobile`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户信息表';
表创建成功后,执行如下命令:SHOW FULL FIELDS FROM t_user
Field Type Collation Null Key Default Extra Privileges Comment
------------ ---------------- ------------------ ------ ------ ------- ------ ------------------------------- -----------------------------------------------------------------------------------
id varchar(32) utf8mb4_general_ci NO PRI (NULL) select,insert,update,references 用户ID
user_name varchar(64) utf8mb4_general_ci NO (NULL) select,insert,update,references 用户姓名
password varchar(64) utf8mb4_general_ci NO (NULL) select,insert,update,references 登录密码
email varchar(64) utf8mb4_general_ci NO (NULL) select,insert,update,references 邮箱地址
mobile varchar(64) utf8mb4_general_ci NO MUL select,insert,update,references 手机号
address varchar(512) utf8mb4_general_ci NO select,insert,update,references 地址
sex tinyint(4) (NULL) NO 0 select,insert,update,references 性别,1-男、2-女、3-未知
status int(10) unsigned (NULL) NO 1 select,insert,update,references 状态:1、未转正;2、虚拟;4、转正;8、待离职;16、已离职
security_key varchar(128) utf8mb4_general_ci NO select,insert,update,references 登陆安全校验码
ctime int(10) unsigned (NULL) NO 0 select,insert,update,references 数据创建时间
mtime int(10) unsigned (NULL) NO 0 select,insert,update,references 记录最后一次修改的时间
就是把表的结构当成表操作取出来,包括字段名、类型、备注等,执行这个sql语句能干什么呢?
一般,表创建后下一步是不是要写protobuf的message
或者写wiki
或者生成一些固定代码
如今通过SHOW FULL FIELDS FROM TABLE 可以轻轻松松自动化生成搞定一切。
比如写了个不到10行的php代码来生成markdown说明文档:
mysql_connect("localhost", "root", "123123") or
die("Could not connect: " . mysql_error());
mysql_select_db("test");
$result = mysql_query("SHOW FULL FIELDS FROM t_user");
echo "| 参数名称 | 类型 | 非空约束 | 备注说明|\n| ------ | ------ | ------ | ------ |\n";
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
echo "|{$row[0]}|{$row[1]}|{$row[3]}|{$row[8]}|\n";
}
mysql_free_result($result);
?>
最后直接输出:
| 参数名称 | 类型 | 非空约束 | 备注说明|
| ------ | ------ | ------ | ------ |
|id|varchar(32)|NO|用户ID|
|user_name|varchar(64)|NO|用户姓名|
|password|varchar(64)|NO|登录密码|
|email|varchar(64)|NO|邮箱地址|
|mobile|varchar(64)|NO|手机号|
|address|varchar(512)|NO|地址|
|sex|tinyint(4)|NO|性别,1-男、2-女、3-未知|
|status|int(10) unsigned|NO|状态:1、未转正;2、虚拟;4、转正;8、待离职;16、已离职|
|security_key|varchar(128)|NO|登陆安全校验码|
|ctime|int(10) unsigned|NO|数据创建时间|
|mtime|int(10) unsigned|NO|记录最后一次修改的时间|
复制到wiki上保存,惊喜出来了:参数名称类型非空约束备注说明idvarchar(32)NO用户IDuser_namevarchar(64)NO用户姓名passwordvarchar(64)NO登录密码emailvarchar(64)NO邮箱地址mobilevarchar(64)NO手机号addressvarchar(512)NO地址sextinyint(4)NO性别,1-男、2-女、3-未知statusint(10) unsignedNO状态:1、未转正;2、虚拟;4、转正;8、待离职;16、已离职security_keyvarchar(128)NO登陆安全校验码ctimeint(10) unsignedNO数据创建时间mtimeint(10) unsignedNO记录最后一次修改的时间
干净利落快捷一秒生成wiki,怎么一个爽字了得
总结
通过SHOW FULL FIELDS FROM TABLE 获取到了字段名、类型、注释要自动生成什么都是分分钟的事了。