Astuce MySQL : Trouver les tables disposant d'une certaine colonne
Lorsque l'on dispose de plusieurs tables, voir de plusieurs bases qui contiennent des tables dont certaines colonnes sont communes, on peut avoir besoin de retrouver ces colonnes rapidement.
Par exemple, si une fois connecté à la base de données, je souhaites trouver les tables qui contiennent une colonne "DateDeCreation", je peux chercher
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = 'DateDeCreation';
Le résultat retourné contient les valeurs de TABLE_SHEMA, qui est la base de données, TABLE_NAME, qui est la table, et enfin, COLUMN_NAME qui est la colonne.
Plus fin, je souhaite chercher les tables avec les colonnes "DateDeCreation" et "DateDEdition", je peux taper
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME in ('DateDeCreation', 'DateDEdition');
Le résultat sera identique, mais avec potentiellement 2 lignes par table, si elles contiennent les deux colonnes.
Je pourrais aussi utiliser la commande suivante, si je suis sur qu'aucune autre colonne commence par "DateD"
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME like 'DateD%';
Enfin, vous pouvez limiter la recherche à une seule base de données, dans l'exemple, nommée "MaBase"
SELECT TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = "MaBase" and COLUMN_NAME like 'DateD%';