MySQL 查看数据库中有主外键关系的表信息 2
2016-08-04 10:23
585 查看
转载自:http://blog.itpub.net/28602568/viewspace-1711771/
SQL:
[align=left] SELECT C.TABLE_SCHEMA 拥有者,[/align]
[align=left] C.REFERENCED_TABLE_NAME 父表名称 ,[/align]
[align=left] C.REFERENCED_COLUMN_NAME 父表字段 ,[/align]
[align=left] C.TABLE_NAME 子表名称,[/align]
[align=left] C.COLUMN_NAME 子表字段,[/align]
[align=left] C.CONSTRAINT_NAME 约束名,[/align]
[align=left] T.TABLE_COMMENT 表注释,[/align]
[align=left] R.UPDATE_RULE 约束更新规则,[/align]
[align=left] R.DELETE_RULE 约束删除规则[/align]
[align=left] FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE C[/align]
[align=left] JOIN INFORMATION_SCHEMA. TABLES T[/align]
[align=left] ON T.TABLE_NAME = C.TABLE_NAME[/align]
[align=left] JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS R[/align]
[align=left] ON R.TABLE_NAME = C.TABLE_NAME[/align]
[align=left] AND R.CONSTRAINT_NAME = C.CONSTRAINT_NAME[/align]
[align=left] AND R.REFERENCED_TABLE_NAME = C.REFERENCED_TABLE_NAME[/align]
[align=left] WHERE C.REFERENCED_TABLE_NAME IS NOT NULL ;
[/align]
[align=left]UPDATE/DELETE_RULE 类型:[/align]
[align=left] 1. CASCADE: 从父表中删除或更新对应的行 ,同时自动的删除或更新自表中匹配的行 。ON DELETE CANSCADE和ON UPDATE CANSCADE都被InnoDB所支持 。[/align]
[align=left] 2. SET NULL: 从父表中删除或更新对应的行 ,同时将子表中的外键列设为空 。注意, 这些在外键列没有被设为NOT NULL时才有效。 ON DELETE SET NULL和ON UPDATE SET SET NULL都被InnoDB所支持 。[/align]
[align=left] 3. NO ACTION: InnoDB拒绝删除或者更新父表 。[/align]
[align=left] 4. RESTRICT: 拒绝删除或者更新父表 。指定RESTRICT( 或者NO ACTION )和忽略ON DELETE或者ON UPDATE选项的效果是一样的 。[/align]
[align=left] 5. SET DEFAULT: InnoDB目前不支持 。
[/align]
表信息参考列表:
REFERENTIAL_CONSTRAINTS表注释参考:http://www.php100.com/manual/PostgreSQL8/infoschema-referential-constraints.html#AEN29463
KEY_COLUMN_USAGE表注释参考:http://www.php100.com/manual/PostgreSQL8/infoschema-key-column-usage.html
SQL:
[align=left] SELECT C.TABLE_SCHEMA 拥有者,[/align]
[align=left] C.REFERENCED_TABLE_NAME 父表名称 ,[/align]
[align=left] C.REFERENCED_COLUMN_NAME 父表字段 ,[/align]
[align=left] C.TABLE_NAME 子表名称,[/align]
[align=left] C.COLUMN_NAME 子表字段,[/align]
[align=left] C.CONSTRAINT_NAME 约束名,[/align]
[align=left] T.TABLE_COMMENT 表注释,[/align]
[align=left] R.UPDATE_RULE 约束更新规则,[/align]
[align=left] R.DELETE_RULE 约束删除规则[/align]
[align=left] FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE C[/align]
[align=left] JOIN INFORMATION_SCHEMA. TABLES T[/align]
[align=left] ON T.TABLE_NAME = C.TABLE_NAME[/align]
[align=left] JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS R[/align]
[align=left] ON R.TABLE_NAME = C.TABLE_NAME[/align]
[align=left] AND R.CONSTRAINT_NAME = C.CONSTRAINT_NAME[/align]
[align=left] AND R.REFERENCED_TABLE_NAME = C.REFERENCED_TABLE_NAME[/align]
[align=left] WHERE C.REFERENCED_TABLE_NAME IS NOT NULL ;
[/align]
[align=left]UPDATE/DELETE_RULE 类型:[/align]
[align=left] 1. CASCADE: 从父表中删除或更新对应的行 ,同时自动的删除或更新自表中匹配的行 。ON DELETE CANSCADE和ON UPDATE CANSCADE都被InnoDB所支持 。[/align]
[align=left] 2. SET NULL: 从父表中删除或更新对应的行 ,同时将子表中的外键列设为空 。注意, 这些在外键列没有被设为NOT NULL时才有效。 ON DELETE SET NULL和ON UPDATE SET SET NULL都被InnoDB所支持 。[/align]
[align=left] 3. NO ACTION: InnoDB拒绝删除或者更新父表 。[/align]
[align=left] 4. RESTRICT: 拒绝删除或者更新父表 。指定RESTRICT( 或者NO ACTION )和忽略ON DELETE或者ON UPDATE选项的效果是一样的 。[/align]
[align=left] 5. SET DEFAULT: InnoDB目前不支持 。
[/align]
表信息参考列表:
REFERENTIAL_CONSTRAINTS表注释参考:http://www.php100.com/manual/PostgreSQL8/infoschema-referential-constraints.html#AEN29463
KEY_COLUMN_USAGE表注释参考:http://www.php100.com/manual/PostgreSQL8/infoschema-key-column-usage.html
相关文章推荐
- MySQL 查看数据库中有主外键关系的表信息
- MySQL 查看数据库中有主外键关系的表信息 2
- mysql查看数据库简历的外键关系
- mysql查看数据库简历的外键关系
- Mysql查看当前数据库连接信息
- MySQL查看数据库信息
- Oracle SQLServer MySQL查看当前所有数据库表名及其他信息
- MySQL,查看数据库的信息,大小,最后修改时间等
- [转]MySQL查看数据库相关信息
- MySQL查看数据库相关信息
- Mysql 查看使用命令行查看数据库和表,字段等信息
- Windows中使用MySQL 查看数据库信息(四)
- mysql 查看数据库,表,字段信息
- 【数据库】】MySQL之desc查看表结构的详细信息
- sql server 2005 中数据库表 的创建 ,查看表 属性,表的名称重命名,情况表中信息,删除表 ; 表中列重命名,添加新列,修改列的数据类型,删除列,设置列的主键外键
- MySQL查看表相关外键关系sql
- mysql 查看数据库信息、表大小
- 数据库查看所有外键,验证某外键是否已经存在(mysql)
- mysql 查询数据库的外键关系
- 每日MySQL之019:使用SHOW命令查看数据库信息