美文网首页
MySQL数据库查看库表所有外键

MySQL数据库查看库表所有外键

作者: 掘金_蒋老湿 | 来源:发表于2018-10-13 17:05 被阅读0次
image.png

第一种方法

是网上的方法,可以直接使用,【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;
image.png

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';
image.png

相关文章

  • MySQL数据库查看库表所有外键

    第一种方法 是网上的方法,可以直接使用,【MySQL 查看数据库中有主外键关系的表信息】 UPDATE/DELET...

  • MySQL基本操作

    mysql 常用命令 数据库操作 连接数据库 退出数据库 查看所有数据库 选择使用的数据库 查看所有的表 查看表结...

  • MySql查看数据库及表容量大小并排序

    MySql查看数据库及表容量⼤⼩并排序查看所有数据库容量⼤⼩ 查看所有数据库各表容量⼤⼩ 查看指定数据库容量⼤⼩ ...

  • 大数据学习:MYSQL 入门之二

    mysql表操作 1、查看表 showtables;#查看数据库全部表 select*from表名;#查看表所有内...

  • 2019-4-30

    一、mysql删除外键约束 1、查看创建数据库的sql语句 show create table emp 2、查看外...

  • Node JS 连接 Mysql

    连接 Mysql 数据库 查-查看当前数据库中所有的表 查-查看某个表中的所有数据 增-增加一条数据 增-在表中增...

  • 实验楼MySQL记录(一)

    启动mysql: 登陆mysql 查看有哪些数据库 查看数据库中有那些表 mysql配置文件 创建数据库 创建数据...

  • 1.使用MySQL

    连接和登录MySQL,用USE选择数据库,用SHOW查看MySQL数据库、表和内部信息 一、MySQL与所有客户机...

  • aliyun.CentOS7.MySQL操作.2017-09-2

    初始化MySQL数据库 MySQL数据导入导出查看MySQL数据库的命令 MySQL数据导出到表 MySql数据库...

  • mysql学习笔记

    数据库和表 进入mysql:mysql -uroot -p 查看数据库:show databases; 删除数据库...

网友评论

      本文标题:MySQL数据库查看库表所有外键

      本文链接:https://www.haomeiwen.com/subject/klioaftx.html