mysql查看表的结构

2021-04-01  本文已影响0人  任未然

一. 概述

在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 组合字段的公式。
上一篇下一篇

猜你喜欢

热点阅读