开发中常需动态获取表结构(生成 CRUD、构建迁移、文档自动化)。MySQL SHOW FULL COLUMNS 返回字段名、类型、排序规则、是否为空、键类型、默认值、额外属性、权限、注释等完整元数据。本文给出标准查询代码与结果字段详解。
| 语句 | 用途 |
|---|---|
| SHOW DATABASES | 列出所有数据库 |
| SHOW TABLES [FROM db_name] | 列出库中表 |
| SHOW CREATE TABLE tbl_name | 导出建表 DDL |
| SHOW TABLE STATUS [FROM db_name] | 表状态(行数、引擎、自增值等) |
| SHOW COLUMNS FROM tbl_name [FROM db_name] | 列出字段(简略) |
| SHOW FULL COLUMNS FROM tbl_name [FROM db_name] | 列出字段完整详情(推荐) |
| SHOW INDEX FROM tbl_name [FROM db_name] | 列出索引 |
connect_errno) {
die("Connect failed: " . $mysqli->connect_error);
}
$table = 'your_table_name';
$res = $mysqli->query("SHOW FULL COLUMNS FROM `$table`");
if (!$res) {
die("Query failed: " . $mysqli->error);
}
$fields = [];
while ($row = $res->fetch_assoc()) {
$fields[] = $row;
}
$res->free();
print_r($fields);
/* 输出示例:
Array(
[0] => Array(
[Field] => id
[Type] => char(2)
[Collation] => utf8_general_ci
[Null] => NO
[Key] => PRI
[Default] =>
[Extra] =>
[Privileges] => select,insert,update,references
[Comment] =>
),
[1] => Array(
[Field] => title
[Type] => char(50)
[Collation] => utf8_general_ci
[Null] => YES
[Key] =>
[Default] =>
[Extra] =>
[Privileges] => select,insert,update,references
[Comment] => 建议存储:标题、姓名等信息
),
...
)
*/
?>
| 键名 | 含义 | 示例 |
|---|---|---|
| Field | 字段名 | id |
| Type | 数据类型(含长度) | varchar(255) |
| Collation | 字符集排序规则 | utf8mb4_general_ci |
| Null | 是否允许 NULL | YES/NO |
| Key | 索引类型 | PRI(主键)、UNI(唯一)、MUL(普通索引) |
| Default | 默认值 | NULL、'0'、CURRENT_TIMESTAMP |
| Extra | 额外信息 | auto_increment、on update CURRENT_TIMESTAMP |
| Privileges | 当前用户权限 | select,insert,update,references |
| Comment | 字段注释 | 建议存储:标题... |
query("SELECT * FROM `$table` LIMIT 1");
$meta = $res->fetch_fields(); // 返回对象数组,含 name, type, length, flags, decimals 等
// 但无法获取 Comment、Default 等完整元数据
?>
结论:SHOW FULL COLUMNS 是获取完整表结构元数据的标准方式,配合 information_schema.COLUMNS 表可做跨库跨表的复杂元数据查询。