Mostrar claves foráneas en MySQL

Preet Sanghavi 30 enero 2023
  1. Crear una tabla en MySQL
  2. Mostrar claves foráneas de una tabla en MySQL
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.

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

Artículo relacionado - MySQL Key