在 MySQL 数据字典中包含外键
Include foreign keys in MySQL data dictionary
我正在为 MySQL 中的特定模式生成数据字典。到目前为止,我有 table_name、columm_name、column_type(如下面的 SELECT 语句)。如何在同一个数据字典中包含外键约束?我想把外键信息。转换成这种格式:
CONCAT(table_name, '.', column_name, ' -> ', referenced_table_name, '.', referenced_column_name)
select
t.table_name,
c.column_name,
c.column_type
from
information_schema.tables as t
inner join
information_schema.columns as c ON t.table_name = c.table_name
and t.table_schema = c.table_schema
where
t.table_type in ('base table' , 'view')
and t.table_schema like 'mySchema'
order by t.table_schema , t.table_name , c.ordinal_position;
table 约束列表可以在 table_constraints table 中找到。从此 table 您可以通过获取所有行来获取所有外键:
constraint_type='FOREIGN KEY'
这将为您提供一个外键列表,如果您需要更多详细信息(例如,它们指向哪个 table 和列),请查看 key_column_usage table:
mysql> describe key_column_usage;
+-------------------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------------------------+--------------+------+-----+---------+-------+
| CONSTRAINT_CATALOG | varchar(512) | NO | | | |
| CONSTRAINT_SCHEMA | varchar(64) | NO | | | |
| CONSTRAINT_NAME | varchar(64) | NO | | | |
| TABLE_CATALOG | varchar(512) | NO | | | |
| TABLE_SCHEMA | varchar(64) | NO | | | |
| TABLE_NAME | varchar(64) | NO | | | |
| COLUMN_NAME | varchar(64) | NO | | | |
| ORDINAL_POSITION | bigint(10) | NO | | 0 | |
| POSITION_IN_UNIQUE_CONSTRAINT | bigint(10) | YES | | NULL | |
| REFERENCED_TABLE_SCHEMA | varchar(64) | YES | | NULL | |
| REFERENCED_TABLE_NAME | varchar(64) | YES | | NULL | |
| REFERENCED_COLUMN_NAME | varchar(64) | YES | | NULL | |
+-------------------------------+--------------+------+-----+---------+-------+
12 rows in set (0.00 sec)
我正在为 MySQL 中的特定模式生成数据字典。到目前为止,我有 table_name、columm_name、column_type(如下面的 SELECT 语句)。如何在同一个数据字典中包含外键约束?我想把外键信息。转换成这种格式:
CONCAT(table_name, '.', column_name, ' -> ', referenced_table_name, '.', referenced_column_name)
select
t.table_name,
c.column_name,
c.column_type
from
information_schema.tables as t
inner join
information_schema.columns as c ON t.table_name = c.table_name
and t.table_schema = c.table_schema
where
t.table_type in ('base table' , 'view')
and t.table_schema like 'mySchema'
order by t.table_schema , t.table_name , c.ordinal_position;
table 约束列表可以在 table_constraints table 中找到。从此 table 您可以通过获取所有行来获取所有外键:
constraint_type='FOREIGN KEY'
这将为您提供一个外键列表,如果您需要更多详细信息(例如,它们指向哪个 table 和列),请查看 key_column_usage table:
mysql> describe key_column_usage;
+-------------------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------------------------+--------------+------+-----+---------+-------+
| CONSTRAINT_CATALOG | varchar(512) | NO | | | |
| CONSTRAINT_SCHEMA | varchar(64) | NO | | | |
| CONSTRAINT_NAME | varchar(64) | NO | | | |
| TABLE_CATALOG | varchar(512) | NO | | | |
| TABLE_SCHEMA | varchar(64) | NO | | | |
| TABLE_NAME | varchar(64) | NO | | | |
| COLUMN_NAME | varchar(64) | NO | | | |
| ORDINAL_POSITION | bigint(10) | NO | | 0 | |
| POSITION_IN_UNIQUE_CONSTRAINT | bigint(10) | YES | | NULL | |
| REFERENCED_TABLE_SCHEMA | varchar(64) | YES | | NULL | |
| REFERENCED_TABLE_NAME | varchar(64) | YES | | NULL | |
| REFERENCED_COLUMN_NAME | varchar(64) | YES | | NULL | |
+-------------------------------+--------------+------+-----+---------+-------+
12 rows in set (0.00 sec)