Để kiểm tra xem một bảng có tồn tại trong database hiện tại, truy vấn INFORMATION_SCHEMA.TABLES kết hợp CASE WHEN để trả về kết quả boolean dạng text.
Ví dụ minh họa
Tạo bảng DemoTable:
CREATE TABLE DemoTable (Id INT, Name VARCHAR(20)); INSERT INTO DemoTable VALUES (101, 'Chris'), (102, 'David');
Truy vấn kiểm tra tồn tại:
SELECT MAX(CASE WHEN table_name = 'DemoTable'
THEN 'Yes the table exist(TRUE)'
ELSE 'No(FALSE)' END) AS isTableExists
FROM information_schema.tables;
Kết quả
| isTableExists |
|---|
| Yes the table exist(TRUE) |
Giải thích
information_schema.tables: View hệ thống liệt kê tất cả bảng.CASE WHEN ... THEN ... ELSE ... END: Trả về chuỗi cho từng hàng.MAX(): Gom thành 1 hàng. Vì 'Yes...' > 'No...' theo alphabet, MAX sẽ lấy 'Yes' nếu có.
Cách đơn giản hơn (khuyên dùng)
-- Trả về 1 nếu tồn tại, 0 nếu không SELECT COUNT(*) > 0 AS table_exists FROM information_schema.tables WHERE table_schema = DATABASE() -- Quan trọng: lọc theo database hiện tại AND table_name = 'DemoTable';
Hoặc dùng SHOW TABLES LIKE 'DemoTable' (trả về rỗng nếu không có).
Lưu ý
- Luôn lọc
table_schema = DATABASE()(hoặc tên DB cụ thể) để tránh trùng tên bảng cross-database. - Quyền truy cập
INFORMATION_SCHEMAthường có sẵn cho tất cả user.