¿Cómo consultar las llaves foráneas de una tabla en MySQL?

Si estás trabajando con bases de datos relacionales como MySQL, en algún momento puede que necesites consultar las llaves foráneas (foreign keys) de una tabla. Esto es importante porque las llaves foráneas definen las relaciones entre tablas y aseguran la integridad referencial de los datos. En este post, te mostraré cómo puedes realizar esta consulta en MySQL utilizando la tabla Servicios de la base de datos proyecto como ejemplo.

Consulta SQL para obtener las llaves foráneas de una tabla

Para obtener las llaves foráneas de una tabla en MySQL, puedes utilizar una consulta que acceda a la información del esquema. La tabla information_schema.KEY_COLUMN_USAGE almacena los detalles de las llaves foráneas en MySQL.

Aquí tienes la consulta que puedes usar:

SQL
SELECT 
    REFERENCED_TABLE_NAME AS referencedTableName, 
    COLUMN_NAME AS columnName, 
    CONSTRAINT_NAME AS constraintName, 
    TABLE_NAME AS tableName,     
    REFERENCED_COLUMN_NAME AS referencedColumnName
FROM information_schema.KEY_COLUMN_USAGE 
WHERE REFERENCED_TABLE_NAME = 'Servicios' 
AND TABLE_SCHEMA = 'proyecto' 
AND REFERENCED_TABLE_NAME IS NOT NULL;

Explicación de la consulta:
  • FROM information_schema.KEY_COLUMN_USAGE: Esta es una tabla del sistema que almacena información sobre las columnas clave (primarias y foráneas) en todas las tablas de todas las bases de datos en tu servidor MySQL.
  • WHERE REFERENCED_TABLE_NAME = ‘Servicios’: Especificamos que queremos ver las llaves foráneas de la tabla Servicios.
  • AND TABLE_SCHEMA = ‘proyecto’: Aseguramos que estamos filtrando los resultados solo para la base de datos llamada proyecto.
  • AND REFERENCED_TABLE_NAME IS NOT NULL: Este filtro asegura que solo se muestren las columnas que son llaves foráneas, ya que las columnas que tienen relaciones con otras tablas tendrán un valor en REFERENCED_TABLE_NAME.
¿Qué información devuelve?

Esta consulta devolverá un resultado con los siguientes campos:

  • referencedTableName: La tabla de la que necesitamos consultar las llaves foráneas.
  • columnName: La columna que actúa como llave foránea en la tabla referenciada.
  • constraintName: El nombre de la restricción (nombre de la llave foránea).
  • tableName: El nombre de la tabla referenciada.
  • referencedColumnName: La columna en la tabla referenciada a la que apunta la llave foránea..