简单栽获得MySql数据库被所有表的主键和外键约束信息之Sql语句

   
最近当写Rafy底层的一对物,在数据库方面将MySql数据库集成到内部去,里面来一个求,需要得到不系统数据库,也不怕是咱温馨建之数据库中所有表的主键和外键元数据列表。

     第一种办法:是网上的法,可以直接动用,【MySQL
查看数据库中来预兆外键关系的发明信息

SELECT C.TABLE_SCHEMA            拥有者,
           C.REFERENCED_TABLE_NAME  父表名称 ,
           C.REFERENCED_COLUMN_NAME 父表字段 ,
           C.TABLE_NAME             子表名称,
           C.COLUMN_NAME            子表字段,
           C.CONSTRAINT_NAME        约束名,
           T.TABLE_COMMENT          表注释,
           R.UPDATE_RULE            约束更新规则,
           R.DELETE_RULE            约束删除规则
      FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE C
      JOIN INFORMATION_SCHEMA. TABLES T
        ON T.TABLE_NAME = C.TABLE_NAME
      JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS R
        ON R.TABLE_NAME = C.TABLE_NAME
       AND R.CONSTRAINT_NAME = C.CONSTRAINT_NAME
       AND R.REFERENCED_TABLE_NAME = C.REFERENCED_TABLE_NAME
      WHERE C.REFERENCED_TABLE_NAME IS NOT NULL ;     

UPDATE/DELETE_RULE 类型:
 1. CASCADE: 从父表中删除或更新对应的行
,同时活动的删减或更新自表中匹配的行 。ON DELETE CANSCADE和ON UPDATE
CANSCADE都被InnoDB所支持 。
 2. SET NULL: 从父表中剔除或更新对应的行 ,同时将子表中的外键列设为空
。注意, 这些在他键列没有给设为NOT NULL时才行。 ON DELETE SET NULL和ON
UPDATE SET SET NULL都被InnoDB所支持 。
 3. NO ACTION: InnoDB拒绝去或更新父表 。
 4. RESTRICT: 拒绝去或更新父表 。指定RESTRICT( 或者NO ACTION
)和忽略ON DELETE或者ON UPDATE选项的力量是同的 。
 5. SET DEFAULT: InnoDB时不支持 。

亚种植办法:

select
O.CONSTRAINT_SCHEMA,O.CONSTRAINT_NAME,O.TABLE_SCHEMA,O.TABLE_NAME,O.COLUMN_NAME,O.REFERENCED_TABLE_SCHEMA,O.REFERENCED_TABLE_NAME,O.REFERENCED_COLUMN_NAME,O.UPDATE_RULE,O.DELETE_RULE,O.UNIQUE_CONSTRAINT_NAME,T.CONSTRAINT_TYPE
from (
select
K.CONSTRAINT_SCHEMA,K.CONSTRAINT_NAME,K.TABLE_SCHEMA,K.TABLE_NAME,K.COLUMN_NAME,K.REFERENCED_TABLE_SCHEMA,K.REFERENCED_TABLE_NAME,K.REFERENCED_COLUMN_NAME,R.UPDATE_RULE,R.DELETE_RULE,R.UNIQUE_CONSTRAINT_NAME
from information_schema.KEY_COLUMN_USAGE K LEFT join
information_schema.REFERENTIAL_CONSTRAINTS R on
K.CONSTRAINT_NAME=R.CONSTRAINT_NAME)
 as O inner join Information_schema.TABLE_CONSTRAINTS T on
O.Table_Name=T.TABLE_NAME and T.CONSTRAINT_NAME=O.CONSTRAINT_NAME
where O.CONSTRAINT_SCHEMA!=’mysql’ and O.CONSTRAINT_SCHEMA!=’sys’;

老二栽方式会列有具有的非系统数据所有表的主键信息与外键信息,第一栽艺术只有见面列有外键约束信息。

网站地图xml地图