Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Kiểm tra sự tồn tại của bảng trong MySQL dùng CASE WHEN trên INFORMATION_SCHEMA

Để 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_SCHEMA thường có sẵn cho tất cả user.