在 MySQL 中显示外键

Preet Sanghavi 2023年1月30日
  1. 在 MySQL 中创建表
  2. 在 MySQL 中显示表的外键
在 MySQL 中显示外键

在本教程中,我们旨在探索如何在 MySQL 中显示表和列的外键。

引用主键的键类型,也称为另一个表的主键,称为外键。在使用 MySQL 时,了解表的外键很重要。

此外,特定表的列也可以具有与之关联的外键。让我们尝试了解如何获取这些外键。

在 MySQL 中创建表

在开始之前,我们将创建一个虚拟数据集来使用。在这里,我们将创建一个表 student_details 以及几行。

-- create the table student_details
CREATE TABLE student_details(
  stu_id int,
  stu_firstName varchar(255) DEFAULT NULL,
  stu_lastName varchar(255) DEFAULT NULL,
  primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName)
 VALUES(1,"Preet","Sanghavi"),
 (2,"Rich","John"),
 (3,"Veron","Brow"),
 (4,"Geo","Jos"),
 (5,"Hash","Shah"),
 (6,"Sachin","Parker"),
 (7,"David","Miller");

上面的查询创建了一个表,其中包含学生的名字和姓氏。要查看数据中的条目,我们使用以下代码:

SELECT * FROM student_details;

上面的代码将给出以下输出:

stu_id  stu_firstName   stu_lastName
1         Preet         Sanghavi
2         Rich          John
3         Veron         Brow
4         Geo           Jos
5         Hash          Shah
6         Sachin        Parker
7         David	        Miller

在 MySQL 中显示表的外键

要在 MySQL 中获取表的外键,我们使用以下代码块:

SELECT
  TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
FROM
  INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
  REFERENCED_TABLE_SCHEMA = '<database>' AND
  REFERENCED_TABLE_NAME = '<table>';

我们可以看到,在上面提到的查询中,我们需要输入数据库和表名来获取外键。可以使用以下查询来完成此任务:

SELECT
  TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
FROM
  INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
  REFERENCED_TABLE_SCHEMA = '<boatdb>' AND
  REFERENCED_TABLE_NAME = '<student_details>';

如前所述,上述查询的数据库名称为 boatdb,表名称为 student_details。上述代码的输出如下:

1,TABLE_NAME,,KEY_COLUMN_USAGE,VARCHAR,utf8mb4,64,-31,31
2,COLUMN_NAME,,KEY_COLUMN_USAGE,VARCHAR,utf8mb4,64,-31,31
3,CONSTRAINT_NAME,information_schema,KEY_COLUMN_USAGE,VARCHAR,utf8mb4,64,0,0
4,REFERENCED_TABLE_NAME,information_schema,KEY_COLUMN_USAGE,VARCHAR,utf8mb4,64,0,0
5,REFERENCED_COLUMN_NAME,information_schema,KEY_COLUMN_USAGE,VARCHAR,utf8mb4,64,0,0

此外,我们还可以找到与特定列关联的外键。这可以借助以下查询来实现:

SELECT
  TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
FROM
  INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
  REFERENCED_TABLE_SCHEMA = 'boatdb' AND
  REFERENCED_TABLE_NAME = 'student_details' AND
  REFERENCED_COLUMN_NAME = 'student_firstName';

正如我们所见,添加了一个额外的 REFERENCED_COLUMN_NAME

因此,借助这种技术,我们可以有效地显示与特定表和列关联的外键。

作者: Preet Sanghavi
Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

相关文章 - MySQL Key