一. 概述
在Java开发中, 在某些场景需要知道表的结构详情, 例如: 代码生成, mysql里面有个表
information_schema.columns
记录着所有表的字段详情, 本文见说明表字段详情如何查找和说明
二. 说明
- 查询方法
select table_catalog ,
table_schema,
table_name,
column_name,
ordinal_position,
column_default,
is_nullable,
data_type,
character_maximum_length,
character_octet_length,
numeric_precision,
numeric_scale,
datetime_precision,
character_set_name,
collation_name,
column_type,
column_key,
extra,
privileges,
column_comment,
generation_expression
from information_schema.columns
where table_schema = [数据库名]
and table_name = [表名];
- 说明
字段 | 说明 |
---|---|
table_catalog | MySQL官方文档中说,这个字段值永远是def,但没写这个字段是干嘛用的。网上有把这个叫表限定符的,有叫登记目录的。作用疑似是和其他种类的数据库做区分 |
table_schema | 表格所属的库 |
table_name | 表名 |
column_name | 字段名 |
ordinal_position | 字段标识 |
column_default | 字段默认值 |
is_nullable | 字段是否可以是NULL, 该列记录的值是YES或者NO |
data_type | 数据类型,里面的值是字符串,比如varchar,float,int |
character_maximum_length | 字段的最大字符数。假如字段设置为varchar(50),那么这一列记录的值就是50。该列只适用于二进制数据,字符,文本,图像数据。其他类型数据比如int,float,datetime等,在该列显示为NULL。 |
character_octet_length | 字段的最大字节数。和最大字符数一样,只适用于二进制数据,字符,文本,图像数据,其他类型显示为NULL。和最大字符数的数值有比例关系,和字符集有关。比如UTF8类型的表,最大字节数就是最大字符数的3倍。 |
numeric_precision | 数字精度。适用于各种数字类型比如int,float之类的。如果字段设置为int(10),那么在该列保存的数值是9,少一位,还没有研究原因。如果字段设置为float(10,3),那么在该列报错的数值是10。非数字类型显示为在该列NULL。 |
numeric_scale | 小数位数。和数字精度一样,适用于各种数字类型比如int,float之类。如果字段设置为int(10),那么在该列保存的数值是0,代表没有小数。如果字段设置为float(10,3),那么在该列报错的数值是3。非数字类型显示为在该列NULL。 |
datetime_precision | datetime类型和SQL-92interval类型数据库的子类型代码。我本地datetime类型的字段在该列显示为0。其他类型显示为NULL。 |
character_set_name | 字段字符集名称。比如utf8。 |
collation_name | 字符集排序规则。比如utf8_general_ci,是不区分大小写一种排序规则。utf8_general_cs,是区分大小写的排序规则。 |
column_type | 字段类型。比如float(9,3),varchar(50)。 |
column_key | 索引类型。可包含的值有PRI,代表主键,UNI,代表唯一键,MUL,可重复。 |
extra | 其他信息。比如主键的auto_increment。 |
privileges | 权限, 多个权限用逗号隔开,比如 select,insert,update,references |
column_comment | 字段注释 |
generation_expression | 组合字段的公式。 |