Afficher les clés étrangères dans MySQL
Dans ce tutoriel, nous visons à explorer comment afficher les clés étrangères d’une table et d’une colonne dans MySQL.
Le type de clé qui fait référence à la clé principale, également appelée clé primaire d’une autre table, est appelé clé étrangère. Il est important de comprendre les clés étrangères d’une table lorsque vous travaillez avec MySQL.
De plus, une colonne d’une table particulière peut également avoir des clés étrangères qui lui sont associées. Essayons de comprendre comment récupérer ces clés étrangères.
Créer une table dans MySQL
Avant de commencer, nous allons créer un jeu de données factice avec lequel travailler. Ici, nous allons créer une table, student_details
, ainsi que quelques lignes.
-- 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");
La requête ci-dessus crée une table avec des lignes contenant les noms et prénoms des étudiants. Pour afficher les entrées dans les données, nous utilisons le code suivant :
SELECT * FROM student_details;
Le code ci-dessus donnerait la sortie suivante :
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
Afficher les clés étrangères d’une table dans MySQL
Pour récupérer les clés étrangères d’une table dans MySQL, nous utilisons le bloc de code suivant :
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>';
Comme nous pouvons le voir, dans la requête mentionnée ci-dessus, nous devons entrer les noms de la base de données et de la table pour récupérer les clés étrangères. Cette tâche peut être réalisée à l’aide de la requête suivante :
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>';
La requête susmentionnée porte le nom de la base de données boatdb
et le nom de la table student_details
, comme mentionné précédemment. La sortie du code susmentionné est la suivante :
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
De plus, nous pouvons également trouver les clés étrangères associées à une colonne particulière. Ceci peut être réalisé à l’aide de la requête suivante :
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';
Comme nous pouvons le voir, un REFERENCED_COLUMN_NAME
supplémentaire a été ajouté.
Par conséquent, à l’aide de cette technique, nous pouvons afficher efficacement les clés étrangères associées à une table et une colonne particulières.