Mostrar claves foráneas en MySQL
En este tutorial, nuestro objetivo es explorar cómo mostrar las claves externas de una tabla y una columna en MySQL.
El tipo de claves que hacen referencia a la clave principal, también denominada clave primaria de otra tabla, se denominan claves foráneas. Es importante comprender las claves externas de una tabla mientras se trabaja con MySQL.
Además, una columna de una tabla en particular también puede tener claves externas asociadas. Tratemos de entender cómo obtener estas claves externas.
Crear una tabla en MySQL
Antes de comenzar, crearemos un conjunto de datos ficticio para trabajar. Aquí crearemos una tabla, student_details
, junto con algunas filas.
-- 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 consulta anterior crea una tabla con filas que contienen los nombres y apellidos de los estudiantes. Para ver las entradas en los datos, usamos el siguiente código:
SELECT * FROM student_details;
El código anterior daría el siguiente resultado:
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
Mostrar claves foráneas de una tabla en MySQL
Para obtener las claves foráneas de una tabla en MySQL, usamos el siguiente bloque de código:
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>';
Como podemos ver, en la consulta mencionada anteriormente, debemos ingresar los nombres de la base de datos y la tabla para obtener las claves externas. Esta tarea se puede lograr mediante la siguiente consulta:
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 consulta antes mencionada tiene el nombre de la base de datos como boatdb
y el nombre de la tabla como student_details
como se mencionó anteriormente. La salida del código antes mencionado es la siguiente:
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
Además, también podemos encontrar las claves foráneas asociadas a una determinada columna. Esto se puede lograr con la ayuda de la siguiente consulta:
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';
Como podemos ver, se ha añadido un REFERENCED_COLUMN_NAME
adicional.
Por lo tanto, con la ayuda de esta técnica, podemos mostrar de manera eficiente las claves externas asociadas con una tabla y columna en particular.