สองวิธีหลักในการดูโครงสร้างตาราง (Schema)
วิธีที่ 1: SHOW COLUMNS (สั้น กวดขวาง)
SHOW COLUMNS FROM table_name;
-- หรือ
DESC table_name;
-- หรือ
DESCRIBE table_name;
ผลลัพธ์:
| Field | Type | Null | Key | Default | Extra |
|---|---|---|---|---|---|
| ClientId | int(11) | NO | PRI | NULL | auto_increment |
| ClientName | varchar(100) | YES | NULL | ||
| ClientAge | int(11) | YES | NULL | ||
| ClientAddress | varchar(100) | YES | NULL | ||
| ClientCountryName | varchar(100) | YES | NULL | ||
| ClientEducationDetails | varchar(200) | YES | NULL |
วิธีที่ 2: INFORMATION_SCHEMA.COLUMNS (ยืดหยุ่น Query ได้)
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'database_name'
AND TABLE_NAME = 'table_name';
ผลลัพธ์:
+------------------------+
| COLUMN_NAME |
+------------------------+
| ClientAddress |
| ClientAge |
| ClientCountryName |
| ClientEducationDetails |
| ClientId |
| ClientName |
+------------------------+
เปรียบเทียบ
| คุณสมบัติ | SHOW COLUMNS | INFORMATION_SCHEMA |
|---|---|---|
| ความเร็ว | เร็วกว่า | ช้ากว่า (Join หลายตาราง) |
| Filter/Where | ไม่ได้ | ได้ (WHERE, LIKE, JOIN) |
| ข้อมูลเพิ่มเติม | พื้นฐาน | ครบถ้วน (Privileges, Comments, etc.) |
| Cross-Database | ไม่ได้ | ได้ (ระบุ TABLE_SCHEMA) |
| Programmatic Use | ยาก (Output แบบ Text) | ง่าย (Result Set ธรรมดา) |
คอลัมน์สำคัญใน INFORMATION_SCHEMA.COLUMNS
COLUMN_NAME- ชื่อคอลัมน์DATA_TYPE- ชนิดข้อมูล (int, varchar, datetime...)CHARACTER_MAXIMUM_LENGTH- ความยาวสูงสุด (สำหรับ String)NUMERIC_PRECISION, NUMERIC_SCALE- Precision/Scale (สำหรับ Decimal)IS_NULLABLE- 'YES' หรือ 'NO'COLUMN_DEFAULT- ค่า DefaultCOLUMN_KEY- 'PRI', 'UNI', 'MUL', หรือ ''EXTRA- 'auto_increment', 'on update CURRENT_TIMESTAMP' ฯลฯCOLUMN_COMMENT- Comment ของคอลัมน์
ตัวอย่าง Query หา Column ทุกตารางที่ชื่อมี 'email'
SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'my_db'
AND COLUMN_NAME LIKE '%email%';