Làm cách nào để hiển thị tất cả các bảng trong MySQL với một công cụ nhất định, ví dụ: InnoDB, MyISAM, FEDERATED?
Làm cách nào để hiển thị tất cả các bảng trong MySQL với một công cụ nhất định, ví dụ: InnoDB, MyISAM, FEDERATED?
Câu trả lời:
Sử dụng INFORMATION_SCHEMA.TABLES
bảng:
SELECT table_name FROM INFORMATION_SCHEMA.TABLES
WHERE engine = 'InnoDB'
Nếu bạn muốn kết quả từ một cơ sở dữ liệu
SELECT TABLE_NAME FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'dbname' AND engine = 'InnoDB';
Các ví dụ khác tại đây.
Tất cả các bảng theo công cụ (ngoại trừ bảng hệ thống):
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');
Tất cả các bảng ngoại trừ động cơ (trừ bảng hệ thống):
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');
Nếu một số gặp sự cố và muốn xem DB là bảng nào với công cụ cụ thể
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;
Trân trọng.