游客发表

作为DBA分享几个工作中关于外键的外键常用查询。具体如下 :
如何查询用户数据库(模式)中定义的查询外键约束。如何查询所有引用具有外键的语句特定的表。如何查询没有外键的术分表。如何查找没有关系的外键表 - Loner Tables。如何查询MySQL 数据库中没有关系表的查询比率。二、语句相关SQL1、术分查询用户数据库(模式)中定义的外键外键约束 复制select concat(fks.constraint_schema, ., fks.table_name) as foreign_table, -> as rel, concat(fks.unique_constraint_schema, ., fks.referenced_table_name) as primary_table, fks.constraint_name, group_concat(kcu.column_name order by position_in_unique_constraint separator , ) asfk_columns
from information_schema.referential_constraintsfks
join information_schema.key_column_usagekcu
on fks.constraint_schema = kcu.table_schema and fks.table_name = kcu.table_name and fks.constraint_name = kcu.constraint_name-- where fks.constraint_schema = database namegroup by fks.constraint_schema, fks.table_name, fks.unique_constraint_schema, fks.referenced_table_name, fks.constraint_nameorder by fks.constraint_schema, fks.table_name;1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.注意:如果您需要特定数据库(模式)的信息,请取消注释 where 子句并提供您的查询数据库名称。

primary_table
from information_schema.key_column_usagewhere referenced_table_name = table name -- provide table name here-- and table_schema = database nameorder by foreign_table;1.2.3.4.5.6.7.8.说明:
foreign_table - 外部表名 - 您要查找的表。rel - 涉及 FK 和方向的查询关系符号。primary_table - 主要(引用)表名 - 您作为参数提供的表。

foreign_keys
from information_schema.tablestab
left join information_schema.table_constraintsfks
on fks.table_schema = tab.table_schema and fks.table_name = tab.table_name and fks.constraint_type = FOREIGN KEYwhere tab.table_type = BASE TABLE and tab.table_schema not in (mysql, information_schema, performance_schema, sys) and fks.table_name is null -- and tab.table_schema = your database nameorder by tab.table_schema, tab.table_name;1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.说明:
database_name - 数据库的名称(模式)。table_name - 表的名称。foreign_keys - 表示缺少 FK 的符号。

fks
from information_schema.tablestab
left join information_schema.referential_constraintsref
on tab.table_schema = ref.constraint_schema and tab.table_name = ref.table_nameleft join information_schema.referential_constraintsref_by
on tab.table_schema = ref_by.unique_constraint_schema and tab.table_name = ref_by.referenced_table_namewhere ref.constraint_name is null and ref_by.constraint_name is null and tab.table_type = BASE TABLE and tab.table_schema not in (mysql, information_schema, performance_schema, sys) -- and tab.table_schema = your database nameorder by tab.table_schema, tab.table_name;1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.说明:
refs - 表示缺少外键约束引用的图标。服务器租用table- 表的名称。fks - 象征缺少外键约束的图标。

loner_ratio
from (select count(distinct concat(tab.table_schema, ., tab.table_name)) as all_tables, SUM(case when ref.constraint_name is null and ref_by.constraint_name is null then 1 else 0 end) asno_rel
from information_schema.tablestab
left join information_schema.referential_constraintsref
on tab.table_schema = ref.constraint_schema and tab.table_name = ref.table_name left join information_schema.referential_constraintsref_by
on tab.table_schema = ref_by.unique_constraint_schema and tab.table_name = ref_by.referenced_table_name where tab.table_type = BASE TABLE and tab.table_schema not in (mysql, information_schema, sys, performance_schema) ) temp;1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.说明:
table_count - 数据库中的表数(模式)。loner_tables - 数据库中Loner 表的数量(模式)。loner_ratio -孤独者比率- 数据库中孤独者表的百分比(模式)。
mysql外键是我们工作中经常遇到的,这几个关于外键查询,可以帮忙提高数据库维护的效率。
随机阅读
热门排行
友情链接