Fremdschlüssel in MySQL anzeigen
In diesem Tutorial möchten wir untersuchen, wie die Fremdschlüssel einer Tabelle und Spalte in MySQL angezeigt werden.
Die Art von Schlüsseln, die auf den Hauptschlüssel, auch Primärschlüssel einer anderen Tabelle genannt, verweisen, werden als Fremdschlüssel bezeichnet. Bei der Arbeit mit MySQL ist es wichtig, die Fremdschlüssel einer Tabelle zu verstehen.
Darüber hinaus können einer Spalte einer bestimmten Tabelle auch Fremdschlüssel zugeordnet sein. Versuchen wir zu verstehen, wie diese Fremdschlüssel abgerufen werden.
Erstellen Sie eine Tabelle in MySQL
Bevor wir beginnen, erstellen wir einen Dummy-Datensatz, mit dem wir arbeiten können. Hier erstellen wir eine Tabelle, student_details
, zusammen mit einigen Zeilen.
-- 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");
Die obige Abfrage erstellt eine Tabelle mit Zeilen, die die Vor- und Nachnamen der Schüler enthalten. Um die Einträge in den Daten anzuzeigen, verwenden wir den folgenden Code:
SELECT * FROM student_details;
Der obige Code würde die folgende Ausgabe ergeben:
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
Fremdschlüssel einer Tabelle in MySQL anzeigen
Um die Fremdschlüssel einer Tabelle in MySQL abzurufen, verwenden wir den folgenden Codeblock:
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>';
Wie wir sehen können, müssen wir in der oben erwähnten Abfrage die Datenbank- und Tabellennamen eingeben, um die Fremdschlüssel abzurufen. Diese Aufgabe kann mit der folgenden Abfrage erreicht werden:
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>';
Die oben erwähnte Abfrage hat den Datenbanknamen als boatdb
und den Tabellennamen als student_details
, wie bereits erwähnt. Die Ausgabe des oben genannten Codes lautet wie folgt:
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
Darüber hinaus können wir auch die Fremdschlüssel finden, die einer bestimmten Spalte zugeordnet sind. Dies kann mit Hilfe der folgenden Abfrage erreicht werden:
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';
Wie wir sehen können, wurde ein zusätzlicher REFERENCED_COLUMN_NAME
hinzugefügt.
Daher können wir mit Hilfe dieser Technik die Fremdschlüssel, die einer bestimmten Tabelle und Spalte zugeordnet sind, effizient anzeigen.