Esto es algo sobre lo que vale la pena investigar un poco, si va a trabajar con bases de datos de cualquier tamaño.
Todos los DBMS con los que he trabajado hasta ahora tienen un medio para ver las restricciones, las columnas y la información de la tabla. Los de MySQL que le ayudarán a hacer lo que quiere están probablemente en el INFORMACION_ESQUEMA:
TABLE_CONSTRAINTS La referencia de MySQL para esto está aquí .
SELECT table_name, constraint_name, constraint_type FROM INFORMATION_SCHEMA.table_constraints;
COLUMNAS La referencia de MySQL para esto está aquí.
SELECT column_name FROM INFORMATION_SCHEMA.columns;
Debería poder hacer algo como esto para obtener lo que desea:
SELECT INFORMATION_SCHEMA.key_column_usage.column_name
FROM INFORMATION_SCHEMA.key_column_usage
JOIN INFORMATION_SCHEMA.table_constraints
ON INFORMATION_SCHEMA.key_column_usage.column_name = INFORMATION_SCHEMA.table_constraints.column_name
WHERE INFORMATION_SCHEMA.table_constraints.constraint_type <> 'PRIMARY KEY'
El debe ser esencialmente lo que necesita. Vistas/tablas como estas pueden ser su mejor amigo cuando necesite obtener información sobre su esquema.
Espero que esta información ayude.