2009-11-11 4 views

Antwort

114

Verwenden INFORMATION_SCHEMA.TABLES Tabelle:

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

Sie auch das Schema mit, dass möchten, Die Abfrage würde also so aussehen: SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE engine = 'InnoDB' –

66

Wenn Sie die Ergebnisse aus einer einzigen Datenbank wollen

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

Ich habe dies markiert, weil Sie wahrscheinlich loo wollen k nur bei einem bestimmten Schema –

1

Wenn ein Problem haben und in dem sehen will DB-Tabellen mit spezifischem Motor ist

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; 

Grüße.

4

Weitere Beispiele hier.

Alle Tabellen, die von Motor (außer Systemtabellen):

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'); 

Alle Tabellen außer dem Motor (außer Systemtabellen):

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');