您的位置:首页 > 数据库 > MySQL

MySQL 一键生成wiki、protobuf等

2016-07-05 18:18 405 查看

SHOW FULL FIELDS FROM TABLE 语句的妙用

例如一个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说明文档:

<?php

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用户ID
user_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 获取到了字段名、类型、注释要自动生成什么都是分分钟的事了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: