2009-11-11 6 views

Répondre

114

Utilisez le tableau INFORMATION_SCHEMA.TABLES:

SELECT table_name FROM INFORMATION_SCHEMA.TABLES 
    WHERE engine = 'InnoDB' 
+2

Vous pouvez également le schéma avec cela, de sorte que la requête ressemblerait à ceci: SELECT TABLE_SCHEMA, TABLE_NAME dE INFORMATION_SCHEMA.TABLES OU moteur = « InnoDB » –

66

Si vous voulez que les résultats d'une seule base de données

SELECT TABLE_NAME FROM information_schema.TABLES 
    WHERE TABLE_SCHEMA = 'dbname' AND engine = 'InnoDB'; 
+1

Je marqué parce que vous voulez probablement loo k à un certain schéma seulement –

1

Si certains a un problème et que vous voulez voir dans laquelle DB est des tables avec moteur spécifique

SELECT 
     (SELECT group_concat(TABLE_NAME) 
      FROM information_schema.TABLES 
      WHERE TABLE_SCHEMA = 'database1' 
      AND engine = 'MyIsam' 
     ) as database1, 
     (SELECT group_concat(TABLE_NAME) 
      FROM information_schema.TABLES 
      WHERE TABLE_SCHEMA = 'database2' 
      AND engine = 'MyIsam' 
     ) as database2, 
     (SELECT group_concat(TABLE_NAME) 
      FROM information_schema.TABLES 
      WHERE TABLE_SCHEMA = 'database3' 
      AND engine = 'MyIsam' 
     ) as database3; 

Cordialement.

4

D'autres exemples ici.

Toutes les tables par le moteur (sauf les tables système):

SELECT TABLE_SCHEMA as DbName ,TABLE_NAME as TableName ,ENGINE as Engine 
FROM information_schema.TABLES 
WHERE ENGINE = 'MyISAM' -- or InnoDB or whatever 
AND TABLE_SCHEMA NOT IN('mysql','information_schema','performance_schema'); 

Toutes les tables, à l'exception du moteur (sauf les tables système):

SELECT TABLE_SCHEMA as DbName ,TABLE_NAME as TableName ,ENGINE as Engine 
FROM information_schema.TABLES 
WHERE ENGINE != 'MyISAM' -- or InnoDB or whatever 
AND TABLE_SCHEMA NOT IN('mysql','information_schema','performance_schema');