在 MySQL 中显示外键
Preet Sanghavi
2023年1月30日
在本教程中,我们旨在探索如何在 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