1.information_schema 数据库的系统表

系统表说明
schemata 存储数据库的信息,包括名称、字符集、排序规则。
tables 提供数据库中各个表的信息,包括表类型(如 BASE TABLE 、VIEW)、存储引擎、行格式、行数、创建时间等信息。
columns 存储关于每个表的列的信息,包括列名、数据类型、是否允许 NULL 、默认值等信息。
statistics 包含关于表索引的信息,列出每个索引的字段、索引类型(如 BTREE)、唯一性等信息。
character_sets 列出服务器支持的字符集及其默认编码。
collations 提供字符集排序规则的信息,包括每种字符集支持的排序规则及其属性。
collation_character_set_applicability 描述哪些排序规则应用于哪些字符集。
user_privileges 列出每个用户的全局权限,这些权限被定义在 mysql 数据库的 user 表里。
table_privileges 列出授予用户或角色的表级别权限。
column_privileges 列出授予用户或角色的列级别权限。
triggers 包含所有触发器的信息,包括触发器名、关联的表、事件(如 INSERT 、UPDATE 、DELETE)、定义和启用状态。
views 存储视图的信息,包括定义视图的原始 SELECT 语句和安全依赖。
routines 存储存储过程和函数的信息,包括参数、返回类型、创建者等信息。
schema_privileges 描述授予用户或角色的数据库级别权限。
engines 列出数据库引擎的信息,包括引擎名称、支持情况和注释。
table_constraints 存储表约束的信息,包括约束类型(如 PRIMARY KEY 、FOREIGN KEY)、约束名称和约束状态。
key_column_usage 含有约束中所涉及的表列的信息,用于定义主键和外键的关系。

 

1.1 tables 表的字段

字段名字段类型取值范围含义
table_catalog varchar(512) 通常为常量值 'def' 目录名称,MySQL 总是返回 def
table_schema varchar(64) 存储数据库的名称 数据库名称
table_name varchar(64) 数据库中表的名称 表名称
table_type varchar(64) 'BASE TABLE''VIEW''SYSTEM VIEW' 指示表的类型,可以是基表、视图或系统视图
engine varchar(64) 存储引擎名称如 InnoDBMyISAM 等 表所使用的存储引擎
version bigint 整数值 表的版本号,通常用于标识表结构定义的更改次数
row_format varchar(64) 'Fixed''Dynamic''Compressed''Redundant''Compact' 表的行格式,决定数据在表内的物理存储方式
table_rows bigint 表中行数 表的预计行数,具体数量可能依赖于统计信息的更新频率
avg_row_length bigint 平均行长度 表数据文件中每行的平均长度(字节)
data_length bigint 数据部分长度(字节) 表的数据长度,单位为字节
max_data_length bigint 最大数据部分长度(字节) 表可存储的最大数据量,单位为字节
index_length bigint 索引部分长度(字节) 表的索引占用空间大小,单位为字节
data_free bigint 空闲空间大小(字节) 表中的未用数据空间,单位为字节,是表空间效率的一个指标
auto_increment bigint 下一个自增值 下一个自动递增值(如果适用)
create_time datetime 表创建时间 表的创建时间
update_time datetime 表更新时间 表结构的最近更新时间
check_time datetime 检查表的时间 表的最后一次检查时间
table_collation varchar(32) 排序规则名称 表级的字符集排序规则
checksum bigint (null) 表的校验和 表的校验和值,用于数据一致性验证(可能为 NULL
create_options varchar(128) 其他创建选项 与表创建相关的具体选项,逐个用空格分隔
table_comment varchar(2048) 自定义评论 对表的注释或描述信息

 

1.2 columns 表的字段

字段名字段类型取值范围含义
table_catalog varchar(512) 通常为常量值 'def' 目录名称,MySQL 中通常为 def
table_schema varchar(64) 数据库名称 表所在的数据库名称
table_name varchar(64) 表名称 表的名称
column_name varchar(64) 列名称 列的名称
ordinal_position bigint 从 1 开始的整数值 列在表中的位置,从 1 开始
column_default longtext 列的默认值或 NULL 列的默认值,如果没有定义默认值则为 NULL
is_nullable varchar(3) 'YES' 或 'NO' 指示列是否允许为 NULLYES 表示可以为 NULLNO 表示不可以
data_type varchar(64) 列的数据类型 列的数据类型,如 intvarchardate 等
character_maximum_length bigint 字符串类型的最大长度(字符) 对于字符数据类型,表示最大字符长度,如果适用,则为整数值;否则为 NULL
character_octet_length bigint 字符串类型的最大长度(字节) 对于字符数据类型,表示最大字节长度,如果适用,则为整数值;否则为 NULL
numeric_precision bigint 数字列的精度值 对于数值数据类型,表示数值精度;否则为 NULL
numeric_scale bigint 数字列的小数位数 对于数值数据类型,表示小数位数;否则为 NULL
datetime_precision bigint 时间列的秒小数位数 对于时间数据类型,表示秒的小数位数;否则为 NULL
character_set_name varchar(64) 列使用的字符集名称 对于字符数据类型,表示使用的字符集;否则为 NULL
collation_name varchar(64) 列使用的排序规则名称 对于字符数据类型,表示使用的排序规则;否则为 NULL
column_type longtext 列类型定义字符串 列的完整类型定义字符串,包括显示宽度、数字精度及可选的 UNSIGNED 等信息
column_key varchar(3) 'PRI''UNI''MUL''' 与索引相关的信息:PRI 表示主键,UNI 表示唯一索引,MUL 表示非唯一索引,'' 表示无索引
extra varchar(30) 自动属性信息 包含其他信息,如 auto_increment 和 on update CURRENT_TIMESTAMP
privileges varchar(80) 列级权限的信息 指示可以应用于列的权限,如 SELECTINSERTUPDATEREFERENCES
column_comment varchar(1024) 列的注释 列的注释或描述信息
generation_expression longtext 生成列的表达式 对于生成的列,表示生成该列的表达式;否则为 NULL

1.2.1 查看某数据库每张表的字段数:

select table_name,count(0)
from information_schema.columns
where table_schema='数据库名'
group by table_name

 

1.2.2 查看某张表的字段顺序

select column_name,ordinal_position
from information_schema.columns
where table_schema='数据库名'
and table_name='表名'

 

1.3 statistics 表的字段

字段名字段类型取值范围含义
table_catalog varchar(512) 通常为常量值 'def' 目录名称,MySQL 中通常为 def
table_schema varchar(64) 数据库名称 表所在的数据库名称
table_name varchar(64) 表名称 索引所在的表的名称
non_unique bigint 0 或 1 表示索引是否允许重复值,0 表示唯一索引,1 表示非唯一索引
index_schema varchar(64) 数据库名称 索引所在的数据库名称
index_name varchar(64) 索引名称 索引的名称
seq_in_index bigint 从 1 开始的整数值 列在索引中的顺序位置,从 1 开始
column_name varchar(64) 列名称 包含在索引中的列名
collation varchar(1) AD, 或 NULL 索引中列的排序顺序,A 表示升序,D 表示降序,NULL 表示未指定(对于非索引列)
cardinality bigint 索引基数的估计值 索引中唯一值的估计数量,通常用于影响优化器的选择策略
sub_part bigint 列的前缀长度(字节)或 NULL 如果索引仅使用列的一部分,则表示索引的前缀长度;否则为 NULL
packed varchar(10) 索引是否压缩的信息或 NULL 如果索引列使用了压缩,则显示相关信息;否则为 NULL
nullable varchar(3) 'YES' 或 'NO' 指示列是否允许为 NULLYES 表示可以为 NULLNO 表示不可以
index_type varchar(16) 索引类型名称,如 BTREEFULLTEXT 等 索引使用的数据结构类型
comment varchar(16) 索引的注释 索引的注释信息
index_comment varchar(1024) 详细索引注释信息 索引的详细注释信息
is_visible varchar(3) 'YES' 或 'NO' 指示索引是否可见,YES 表示可见,NO 表示不可见(MySQL 8.0 及以上版本支持)

 

1.3.1 查看数据库每张表的索引数

select table_name,count(0)
from information_schema.statistics
where table_schema='数据库名'
group by table_name

1.4 routines 表的字段

routines 表包含关于存储过程和函数的信息。

字段名数据类型描述
specific_name varchar 存储过程或函数的特定名称。这在同一数据库中唯一标识例程,尤其在重载情况下。
routine_catalog varchar 通常为 NULL,保留以实现 SQL 标准。
routine_schema varchar 存储过程或函数所在的数据库名称。
routine_name varchar 存储过程或函数的名称。
routine_type enum 例程的类型:'PROCEDURE' 或 'FUNCTION'。
data_type varchar 函数返回值的数据类型。如果是存储过程,则此字段为 NULL 。
character_maximum_length bigint 如果返回类型是字符或二进制类型,则为其最大长度。否则为 NULL 。
character_octet_length bigint 字符串数据类型的最大字节长度。如果不是字符串数据类型,则为 NULL 。
numeric_precision bigint 如果返回类型是数值数据类型,则为其精度。否则为 NULL 。
numeric_scale bigint 如果返回类型是精确数值数据类型(decimal),则为其小数点后的位数。否则为 NULL 。
datetime_precision bigint 如果返回类型是 datetime 或时间戳数据类型,则为其精度。否则为 NULL 。
character_set_name varchar 如果返回类型是字符数据类型,则为其字符集。否则为 NULL 。
collation_name varchar 如果返回类型是字符数据类型,则为其排序规则。否则为 NULL 。
dtd_identifier longtext 数据类型描述的内部格式。
routine_body enum 永远是 'SQL',表示例程体的类型。
routine_definition longtext 例程的定义(CREATE 语句的主体)。如果用户没有权限,则显示为 NULL 。
external_name varchar 保留字段,目前未使用。
external_language varchar 保留字段,目前未使用。
parameter_style varchar 总是 'SQL',表示使用的参数样式。
is_deterministic enum 标识例程是否确定性('YES' 或 'NO')。
sql_data_access enum 例程的数据操作权限:'CONTAINS SQL', 'NO SQL', 'READS SQL DATA', 'MODIFIES SQL DATA'。
sql_path varchar 保留以实现 SQL 标准。通常为 NULL 。
security_type enum 例程的安全类型:'DEFINER' 或 'INVOKER'。
created timestamp 例程创建的日期和时间。
last_altered timestamp 例程最后修改的日期和时间。
sql_mode varchar 例程定义中的 SQL 模式。
routine_comment varchar 例程的注释。
definer varchar 最初定义例程的 MySQL 用户账户。
character_set_client varchar 创建例程时的客户端字符集。
collation_connection varchar 创建例程时的连接排序规则。
database_collation varchar 创建例程时的数据库排序规则。

 

1.5 mysql支持的字符集

select *
from information_schema.character_sets

 

posted on 2024-12-03 13:50  卡米i  阅读(109)  评论(0)    收藏  举报