Kiểm tra sự tồn tại của bảng trong MySQL
Truy vấn INFORMATION_SCHEMA.TABLES với điều kiện TABLE_NAME và TABLE_SCHEMA.
Cú pháp
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'yourTableName' AND TABLE_SCHEMA = 'yourDatabase';
Ví dụ: Kiểm tra bảng Client_information
Tạo bảng:
mysql> CREATE TABLE Client_information (Id INT, Name VARCHAR(10)); mysql> INSERT INTO Client_information VALUES (1, 'Larry'), (2, 'Mike'), (3, 'Sam');
Kiểm tra tồn tại:
mysql> SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Client_information';
Kết quả (2 hàng do bảng tồn tại trong 2 schema: sample và test):
+---------------+--------------+--------------------+------------+--------+---------+------------+------------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------------+ | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | ENGINE | VERSION | ROW_FORMAT | TABLE_ROWS | AVG_ROW_LENGTH | DATA_LENGTH | MAX_DATA_LENGTH | INDEX_LENGTH | DATA_FREE | AUTO_INCREMENT | CREATE_TIME | UPDATE_TIME | CHECK_TIME | TABLE_COLLATION | CHECKSUM | CREATE_OPTIONS | TABLE_COMMENT | +---------------+--------------+--------------------+------------+--------+---------+------------+------------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------------+ | def | sample | client_information | BASE TABLE | InnoDB | 10 | Dynamic | 4 | 4096 | 16384 | 0 | 0 | 0 | NULL | 2019-03-11 20:02:40 | NULL | NULL | utf8_general_ci | NULL | | | | def | test | client_information | BASE TABLE | InnoDB | 10 | Dynamic | 3 | 5461 | 16384 | 0 | 0 | 0 | NULL | 2019-04-03 02:28:31 | 2019-04-03 02:29:00 | NULL | utf8mb4_0900_ai_ci | NULL | | | +---------------+--------------+--------------------+------------+--------+---------+------------+------------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------------+
Các cách khác
| Phương pháp | Cú pháp | Đặc điểm |
|---|---|---|
| SHOW TABLES | SHOW TABLES LIKE 'table_name' | Nhanh, chỉ database hiện tại |
| INFORMATION_SCHEMA | SELECT ... WHERE TABLE_NAME=... | Chuẩn SQL, lọc theo schema, nhiều metadata |
| SHOW CREATE TABLE | SHOW CREATE TABLE table_name | Báo lỗi nếu không tồn tại |
| EXISTS (subquery) | SELECT EXISTS(SELECT 1 FROM information_schema.tables WHERE ...) | Trả về 1/0, dùng trong IF/CASE |