มีหลายวิธีในการตรวจสอบว่าตารางมีอยู่ใน Database หรือไม่
วิธีที่ 1: SHOW TABLES (พื้นฐาน)
-- แสดงทุกตาราง
SHOW TABLES;
-- เช็คตารางเฉพาะ (Pattern Matching)
SHOW TABLES LIKE 'tblstudent';
ผลลัพธ์
-- มีตาราง
+---------------------------------+
| Tables_in_business (tblstudent) |
+---------------------------------+
| tblstudent |
+---------------------------------+
-- ไม่มีตาราง
Empty set (0.00 sec)
วิธีที่ 2: INFORMATION_SCHEMA.TABLES (ยืดหยุ่นที่สุด)
SELECT TABLE_NAME, TABLE_TYPE, ENGINE, TABLE_ROWS
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'business'
AND TABLE_NAME = 'tblstudent';
ข้อดี
- ได้ Metadata ครบ: Engine, Rows, Size, Create Time, Collation, v.v.
- ใช้ใน Application/Stored Procedure ได้
- รองรับ Wildcard:
TABLE_NAME LIKE 'tbl%' - Filter ได้หลายเงื่อนไข
วิธีที่ 3: SHOW TABLE STATUS
SHOW TABLE STATUS LIKE 'tblstudent';
ให้ข้อมูลรายละเอียดมากกว่า SHOW TABLES
วิธีที่ 4: COUNT(*) กับ INFORMATION_SCHEMA (Boolean Check)
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'business'
AND TABLE_NAME = 'tblstudent';
คืนค่า 1 = มี, 0 = ไม่มี
วิธีที่ 5: DESCRIBE / DESC (ถ้าตารางมีอยู่)
DESC tblstudent;
-- ถ้าไม่มี: ERROR 1146 (42S02): Table 'business.tblstudent' doesn't exist
⚠️ จะ Error ถ้าตารางไม่มี - ไม่เหมาะสำหรับเช็ค Boolean
สรุปแนะนำ
| Use Case | วิธีที่แนะนำ |
|---|---|
| CLI Quick Check | SHOW TABLES LIKE 'name' |
| Application Code | INFORMATION_SCHEMA Query |
| Need Metadata | SHOW TABLE STATUS / INFORMATION_SCHEMA |
| Boolean Exists Check | COUNT(*) FROM INFORMATION_SCHEMA |
| Check + Describe | DESC (ถ้าแน่ใจว่ามี) |