- 1 1. บทนำ
- 2 2. วิธีพื้นฐานในการแสดงรายการคอลัมน์
- 3 สรุป
- 4 3. ขั้นสูง: ค้นหาคอลัมน์โดยใช้เงื่อนไข
- 5 สรุป
- 6 4. การทำอัตโนมัติ: ดึงรายการคอลัมน์ด้วยสคริปต์
- 7 สรุป
- 8 5. การจัดการข้อผิดพลาด: วิธีแก้ไขข้อผิดพลาดเรื่องสิทธิ์
- 9 สรุป
- 10 6. วิธีตรวจสอบรายการคอลัมน์ด้วยเครื่องมือ GUI
- 11 สรุป
- 12 7. คำถามที่พบบ่อย (FAQ)
- 13 สรุป
- 14 8. สรุปสุดท้าย
- 15 สรุปและขั้นตอนต่อไป
1. บทนำ
เมื่อออกแบบและจัดการฐานข้อมูลด้วย MySQL การรู้ วิธีดึงรายการคอลัมน์ของตาราง เป็นสิ่งสำคัญ
โดยการตรวจสอบรายการคอลัมน์ คุณสามารถเข้าใจโครงสร้างตารางได้ง่ายขึ้น รักษาความสอดคล้องของข้อมูล และออกแบบคำสั่ง SQL ที่เหมาะสม
โดยเฉพาะอย่างยิ่ง คุณอาจต้องการดึงรายการคอลัมน์ในสถานการณ์ต่อไปนี้:
- เมื่อทำการสำรวจโครงสร้างฐานข้อมูล
- เมื่อเพิ่มหรือทำการลบคอลัมน์ใหม่
- เมื่อยืนยันชื่อคอลัมน์หรือประเภทข้อมูลที่มีอยู่
- เมื่อค้นหาตารางที่มีคอลัมน์เฉพาะ
- เมื่อประมวลผลตารางแบบไดนามิกในแอปพลิเคชันของคุณ
ในบทความนี้ เราจะอธิบายวิธีการแสดงรายการคอลัมน์ของ MySQL อย่างละเอียด ตั้งแต่พื้นฐานจนถึงเทคนิคขั้นสูง เรา ยังรวมเนื้อหาปฏิบัติ เช่น ตัวอย่างการรัน SQL, สคริปต์อัตโนมัติ, และการจัดการข้อผิดพลาด ดังนั้นจึง เป็นประโยชน์สำหรับผู้อ่านหลากหลายระดับตั้งแต่ผู้เริ่มต้นจนถึงผู้ใช้ระดับกลาง
2. วิธีพื้นฐานในการแสดงรายการคอลัมน์
MySQL มีวิธีหลายวิธีในการดึงรายการคอลัมน์ วิธีที่พบบ่อยที่สุดคือการใช้ SHOW COLUMNS และ DESCRIBE.
2-1. ดึงคอลัมน์ด้วย SHOW COLUMNS
วิธีที่ง่ายที่สุดในการดึงรายการคอลัมน์ของตารางใน MySQL คือการใช้คำสั่ง SHOW COLUMNS.
การใช้งาน
SHOW COLUMNS FROM table_name;
หรือคุณสามารถใช้ IN แทน FROM.
SHOW COLUMNS IN table_name;
ข้อมูลที่คุณสามารถดึงได้
เมื่อคุณรัน SHOW COLUMNS คุณสามารถดึงข้อมูลเช่นต่อไปนี้.
| Column Name (Field) | Data Type (Type) | Allows NULL (Null) | Key (Key) | Default Value (Default) | Other (Extra) |
|---|---|---|---|---|---|
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | NULL | ||
| age | int(3) | YES | NULL |
ตัวอย่าง
ตัวอย่างเช่น เพื่อดึงรายการคอลัมน์ของตาราง users ให้รัน SQL ด้านล่างนี้.
SHOW COLUMNS FROM users;
ผลลัพธ์:
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255)| YES | | NULL | |
| age | int(3) | YES | | NULL | |
+-------+--------------+------+-----+---------+----------------+
ข้อดีและข้อเสียของ SHOW COLUMNS
✅ ข้อดี
- ใช้งานง่ายและเรียบง่าย
- ช่วยให้คุณเข้าใจโครงสร้างตารางได้อย่างรวดเร็ว
❌ ข้อเสีย
- ยากต่อการดึงเฉพาะคอลัมน์ที่ต้องการ
- ไม่สามารถกรองผลลัพธ์ด้วยเงื่อนไข
WHERE
2-2. ดึงคอลัมน์ด้วย DESCRIBE
คำสั่ง DESCRIBE ให้ฟังก์ชันเกือบเท่ากับ SHOW COLUMNS.
การใช้งาน
DESCRIBE table_name;
ตัวอย่างเช่น เพื่อดึงข้อมูลคอลัมน์ของตาราง users:
DESCRIBE users;
ผลลัพธ์:
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255)| YES | | NULL | |
| age | int(3) | YES | | NULL | |
+-------+--------------+------+-----+---------+----------------+
ความแตกต่างระหว่าง DESCRIBE และ SHOW COLUMNS
DESCRIBE เป็น นามแฝง ของ SHOW COLUMNS ดังนั้นผลลัพธ์โดยพื้นฐานแล้วเหมือนกัน อย่างไรก็ตาม SHOW COLUMNS ดีกว่าเล็กน้อยเพราะรองรับตัวเลือกที่ละเอียดมากขึ้น.
2-3. ตรวจสอบรายการคอลัมน์ด้วย MySQL Workbench หรือ phpMyAdmin
คุณยังสามารถตรวจสอบรายการคอลัมน์โดยใช้เครื่องมือ GUI แทนการใช้บรรทัดคำสั่งได้.
✅ ใน MySQL Workbench คลิกขวาที่ตารางและเลือก “Show Table Structure”
✅ ใน phpMyAdmin คลิกที่ตารางเป้าหมายและตรวจสอบรายการภายใต้แท็บ “Structure”
หากคุณไม่คุ้นเคยกับ CLI เครื่องมือ GUI สามารถช่วยให้ทำงานได้อย่างเป็นธรรมชาติมากขึ้น.
สรุป
ในบทความนี้ เราได้ครอบคลุม วิธีพื้นฐานในการแสดงรายการคอลัมน์ใน MySQL โดยเน้นที่ SHOW COLUMNS และ DESCRIBE.
ประเด็นสำคัญ
✔ SHOW COLUMNS เป็นวิธีที่พบบ่อยที่สุดในการแสดงรายการคอลัมน์
✔ DESCRIBE คืนค่าผลลัพธ์ที่เกือบเหมือนกับ SHOW COLUMNS
✔ คุณยังสามารถตรวจสอบรายการคอลัมน์โดยใช้เครื่องมือ GUI (MySQL Workbench, phpMyAdmin)

3. ขั้นสูง: ค้นหาคอลัมน์โดยใช้เงื่อนไข
SHOW COLUMNS และ DESCRIBE นั้นสะดวก แต่เมื่อทำงานกับจำนวนตารางหรือคอลัมน์ที่มาก
คุณอาจต้องการการค้นหาที่ยืดหยุ่นมากขึ้น
ในกรณีเช่นนั้น การใช้ INFORMATION_SCHEMA จะเป็นประโยชน์อย่างมาก
ที่นี่ เราจะอธิบาย วิธีดึงรายการคอลัมน์ทั่วทั้งฐานข้อมูล และ วิธีค้นหาตารางที่มีคอลัมน์เฉพาะ.
3-1. ดึงรายการคอลัมน์สำหรับทุกตารางในฐานข้อมูล
MySQL มีมุมมองระบบที่เรียกว่า INFORMATION_SCHEMA.COLUMNS.
โดยการใช้มัน คุณสามารถดึง ข้อมูลคอลัมน์สำหรับทั้งฐานข้อมูล.
ไวยากรณ์ SQL
SELECT table_name, column_name
FROM information_schema.columns
WHERE table_schema = 'database_name';
ตัวอย่าง
ตัวอย่างเช่น เพื่อดึงชื่อทุกตารางและชื่อคอลัมน์ใน my_database:
SELECT table_name, column_name
FROM information_schema.columns
WHERE table_schema = 'my_database';
ผลลัพธ์
+------------+--------------+
| table_name | column_name |
+------------+--------------+
| users | id |
| users | name |
| users | email |
| orders | id |
| orders | user_id |
| orders | total_price |
+------------+--------------+
สิ่งนี้ทำให้มองเห็นได้ง่ายว่า ตารางใดมีคอลัมน์ใด อย่างรวดเร็ว.
3-2. ค้นหาตารางที่มีคอลัมน์เฉพาะ
หากคุณต้องการ ค้นหาเฉพาะตารางที่มีคอลัมน์เฉพาะ
คุณก็สามารถทำได้ด้วย INFORMATION_SCHEMA.COLUMNS ด้วยเช่นกัน.
ไวยากรณ์ SQL
SELECT table_name
FROM information_schema.columns
WHERE column_name = 'column_name'
AND table_schema = 'database_name';
ตัวอย่าง
ตัวอย่างเช่น เพื่อค้นหาตารางที่มีคอลัมน์ email ใน my_database:
SELECT table_name
FROM information_schema.columns
WHERE column_name = 'email'
AND table_schema = 'my_database';
ผลลัพธ์
+------------+
| table_name |
+------------+
| users |
| customers |
+------------+
สิ่งนี้แสดงว่าคอลัมน์ email มีอยู่ในตาราง users และตาราง customers.
3-3. ดึงข้อมูลคอลัมน์อย่างละเอียด
ด้วย INFORMATION_SCHEMA.COLUMNS คุณยังสามารถดึงรายละเอียดเช่น ชนิดข้อมูล, การอนุญาต NULL, และค่าเริ่มต้นได้อีกด้วย.
ไวยากรณ์ SQL
SELECT column_name, data_type, is_nullable, column_default
FROM information_schema.columns
WHERE table_name = 'table_name'
AND table_schema = 'database_name';
ตัวอย่าง
ตัวอย่างเช่น เพื่อดึงข้อมูลอย่างละเอียดสำหรับแต่ละคอลัมน์ในตาราง users:
SELECT column_name, data_type, is_nullable, column_default
FROM information_schema.columns
WHERE table_name = 'users'
AND table_schema = 'my_database';
ผลลัพธ์
+-------------+-----------+------------+--------------+
| column_name | data_type | is_nullable | column_default |
+-------------+-----------+------------+--------------+
| id | int | NO | NULL |
| name | varchar | YES | NULL |
| email | varchar | YES | NULL |
| age | int | YES | NULL |
+-------------+-----------+------------+--------------+
3-4. ประโยชน์และข้อควรระวังเมื่อใช้ INFORMATION_SCHEMA
ประโยชน์
✅ คุณสามารถดึงข้อมูลคอลัมน์สำหรับทั้งฐานข้อมูล (ด้วย SHOW COLUMNS คุณสามารถดึงข้อมูลได้เพียงตารางเดียวต่อครั้ง)
✅ คุณสามารถกรองข้อมูลได้อย่างอิสระด้วยคำสั่ง SQL (คุณสามารถใช้เงื่อนไข WHERE เพื่อดึงเฉพาะคอลัมน์ที่ต้องการ)
✅ คุณยังสามารถใช้ JOIN และรวมกับข้อมูลอื่น ๆ ได้
หมายเหตุ
⚠ บนฐานข้อมูลขนาดใหญ่ คำสั่งค้นหาอาจช้าลง
⚠ หากคุณไม่ได้ระบุ table_schema สำหรับฐานข้อมูลเป้าหมาย ข้อมูลที่ไม่จำเป็นอาจถูกรวมเข้าไป
สรุป
ในส่วนนี้ เราใช้ INFORMATION_SCHEMA.COLUMNS เพื่ออธิบาย
วิธีดึงรายการคอลัมน์ทั่วทั้งฐานข้อมูล และ วิธีค้นหาตารางที่มีคอลัมน์เฉพาะ.
ประเด็นสำคัญ
✔ ด้วย INFORMATION_SCHEMA.COLUMNS คุณสามารถค้นหา คอลัมน์เฉพาะ แทนการค้นหาตารางทั้งหมด
✔ เมื่อเทียบกับ SHOW COLUMNS มันทำให้คุณสามารถ กรองอย่างอิสระ ด้วยคำสั่ง SQL
✔ คุณยังสามารถดึง ข้อมูลคอลัมน์โดยละเอียด (ประเภทข้อมูล, การอนุญาต NULL, ค่าตั้งต้น ฯลฯ)
✔ สำหรับฐานข้อมูลขนาดใหญ่ คุณต้องใส่ใจเรื่องประสิทธิภาพ
4. การทำอัตโนมัติ: ดึงรายการคอลัมน์ด้วยสคริปต์
คุณสามารถดึงรายการคอลัมน์ด้วยตนเองโดยใช้ SHOW COLUMNS หรือ INFORMATION_SCHEMA แต่คุณอาจรู้สึกว่า การรัน SQL ทุกครั้งนั้นไม่สะดวก.
โดยเฉพาะอย่างยิ่ง การดึงรายการคอลัมน์แบบอัตโนมัติ มีประโยชน์ในกรณีเช่น:
- เมื่อคุณต้องการตรวจสอบการเปลี่ยนแปลงโครงสร้างฐานข้อมูล
- เมื่อคุณต้องการบันทึกรายการคอลัมน์เป็นระยะเพื่อจัดการประวัติการเปลี่ยนแปลงสคีม่า
- เมื่อคุณต้องการผสานรวมกับระบบอื่นและดึงข้อมูลคอลัมน์แบบไดนามิก
ส่วนนี้อธิบาย วิธีดึงรายการคอลัมน์ MySQL โดยอัตโนมัติด้วย Python หรือสคริปต์ Shell.
4-1. ดึงรายการคอลัมน์ด้วย Python
Python มีไลบรารีชื่อ mysql-connector-python ซึ่งใช้เชื่อมต่อกับ MySQL และดึงรายการคอลัมน์.
เตรียมสคริปต์ Python
หากไลบรารียังไม่ได้ติดตั้ง ให้ติดตั้งด้วยคำสั่งต่อไปนี้.
pip install mysql-connector-python
สคริปต์ Python
ต่อไปนี้เป็นสคริปต์ตัวอย่าง.
สคริปต์นี้จะดึงและพิมพ์รายการคอลัมน์ของตารางที่ระบุ.
import mysql.connector
# Configure MySQL connection settings
config = {
'user': 'your_user',
'password': 'your_password',
'host': 'localhost',
'database': 'your_database'
}
# Connect to MySQL
conn = mysql.connector.connect(**config)
cursor = conn.cursor()
# Table name to retrieve
table_name = "users"
# Retrieve column list
query = f"SELECT column_name FROM information_schema.columns WHERE table_name = '{table_name}' AND table_schema = '{config['database']}'"
cursor.execute(query)
# Print results
columns = cursor.fetchall()
print(f"Column list for [{table_name}]:")
for column in columns:
print(column[0])
# Close connection
cursor.close()
conn.close()
รันสคริปต์
เมื่อคุณรันสคริปต์ จะพิมพ์รายการคอลัมน์เช่นตัวอย่างต่อไปนี้.
Column list for [users]:
id
name
email
age
4-2. ดึงรายการคอลัมน์ด้วยสคริปต์ Shell
คุณสามารถดึงรายการคอลัมน์ด้วย สคริปต์ Shell (Bash) โดยไม่ต้องใช้ Python.
ในสภาพแวดล้อม Linux และการดูแลเซิร์ฟเวอร์ นี่เป็นวิธีที่รวดเร็วและสะดวก.
เตรียมสคริปต์ Shell
สร้างสคริปต์ตามตัวอย่างต่อไปนี้และบันทึกเป็น mysql_columns.sh.
#!/bin/bash
DB_NAME="your_database"
TABLE_NAME="users"
USER="your_user"
PASSWORD="your_password"
# Retrieve column list using the MySQL command
mysql -u$USER -p$PASSWORD -D$DB_NAME -e "SELECT column_name FROM information_schema.columns WHERE table_name = '$TABLE_NAME' AND table_schema = '$DB_NAME';"
วิธีการรัน
ให้สิทธิ์การทำงานและรันสคริปต์.
chmod +x mysql_columns.sh
./mysql_columns.sh
ผลลัพธ์
column_name
id
name
email
age
วิธีนี้ทำให้คุณ ดึงรายการคอลัมน์บนเซิร์ฟเวอร์ Linux ได้อย่างรวดเร็ว.
4-3. ดึงและบันทึกรายการคอลัมน์เป็นระยะ (Cron Job)
แทนที่จะรันสคริปต์ด้วยตนเอง คุณสามารถ ดึงรายการคอลัมน์เป็นระยะและบันทึกลงไฟล์ ได้.
ตัวอย่างเช่น คุณสามารถ บันทึกรายการคอลัมน์วันละครั้งเพื่อทำตามการเปลี่ยนแปลงสคีม่า.
ขั้นตอน
- สร้างสคริปต์ Python หรือ Shell script (ใช้สคริปต์ที่กล่าวถึงข้างต้น)
- บันทึกผลลัพธ์ลงไฟล์
- กำหนดค่า cron job
ตัวอย่าง Shell Script ที่บันทึกผลลัพธ์
#!/bin/bash
DB_NAME="your_database"
TABLE_NAME="users"
USER="your_user"
PASSWORD="your_password"
OUTPUT_FILE="/path/to/logs/${TABLE_NAME}_columns_$(date +\%Y\%m\%d).txt"
# Retrieve column list and save to a file
mysql -u$USER -p$PASSWORD -D$DB_NAME -e "SELECT column_name FROM information_schema.columns WHERE table_name = '$TABLE_NAME' AND table_schema = '$DB_NAME';" > $OUTPUT_FILE
กำหนดค่า cron job
รันคำสั่งต่อไปนี้เพื่อเปิดการกำหนดค่า cron.
crontab -e
จากนั้นเพิ่มบรรทัดต่อไปนี้ (ทำงานทุกวันเวลา 03:00 น.)
0 3 * * * /path/to/mysql_columns.sh
สิ่งนี้ทำให้ การทำงานอัตโนมัติที่ดึงรายการคอลัมน์ทุกวันและบันทึกลงไฟล์.
สรุป
ในส่วนนี้ เราได้อธิบาย วิธีดึงรายการคอลัมน์ของ MySQL อย่างอัตโนมัติด้วยสคริปต์.
สิ่งที่ควรจำ
✔ คุณสามารถดึงรายการคอลัมน์ด้วยสคริปต์ Python (โดยใช้ MySQL Connector)
✔ คุณยังสามารถดึงรายการเหล่านี้ด้วย Shell script โดยใช้คำสั่ง MySQL
✔ คุณสามารถใช้ cron job เพื่อบันทึกรายการคอลัมน์เป็นระยะ
✔ สิ่งนี้มีประโยชน์สำหรับการติดตามประวัติการเปลี่ยนแปลงสคีมาฐานข้อมูล
ในบทความต่อไป เราจะอธิบาย “วิธีแก้ไขข้อผิดพลาดเมื่อเกิดขึ้น” หากคุณต้องการเรียนรู้เกี่ยวกับ ข้อผิดพลาดเรื่องสิทธิ์และวิธีแก้ไขเมื่อรัน SHOW COLUMNS หรือ INFORMATION_SCHEMA อย่าลืมตรวจสอบส่วนต่อไปด้วย!
5. การจัดการข้อผิดพลาด: วิธีแก้ไขข้อผิดพลาดเรื่องสิทธิ์
เมื่อดึงรายการคอลัมน์ด้วย SHOW COLUMNS หรือ INFORMATION_SCHEMA ใน MySQL คุณอาจเจอข้อผิดพลาดเช่น “permission denied”.
ส่วนนี้อธิบาย สาเหตุทั่วไปและวิธีแก้ไข.
5-1. หากคุณได้รับข้อผิดพลาดกับ SHOW COLUMNS
เมื่อคุณรัน SHOW COLUMNS คุณอาจเห็นข้อผิดพลาดเช่นต่อไปนี้.
ERROR 1142 (42000): SELECT command denied to user 'user'@'localhost' for table 'users'
สาเหตุ
ข้อผิดพลาดนี้เกิดจากผู้ใช้ ไม่มีสิทธิ์ SELECT บนตาราง SHOW COLUMNS ต้องการสิทธิ์ SELECT.
วิธีแก้ไข
เข้าสู่ระบบในฐานะผู้ดูแล (ผู้ใช้ root) และมอบสิทธิ์ SELECT ให้กับผู้ใช้เป้าหมาย.
GRANT SELECT ON your_database.* TO 'user'@'localhost';
FLUSH PRIVILEGES;
หลังจากนั้น SHOW COLUMNS ควรทำงานได้.
5-2. หากคุณได้รับข้อผิดพลาดกับ INFORMATION_SCHEMA
เมื่อคุณรันคิวรีโดยใช้ INFORMATION_SCHEMA คุณอาจเห็นข้อผิดพลาดเช่นต่อไปนี้.
ERROR 1045 (28000): Access denied for user 'user'@'localhost' (using password: YES)
สาเหตุ
เพื่อคิวรี INFORMATION_SCHEMA คุณอาจต้องการไม่เพียงสิทธิ์ SELECT แต่ยังต้องมี สิทธิ์เข้าถึง INFORMATION_SCHEMA.
วิธีแก้ไข
มอบสิทธิ์เข้าถึง INFORMATION_SCHEMA ด้วยคำสั่งต่อไปนี้.
GRANT SELECT ON information_schema.* TO 'user'@'localhost';
FLUSH PRIVILEGES;
สิ่งนี้ทำให้เข้าถึง INFORMATION_SCHEMA.COLUMNS ได้.
5-3. หากคุณยังได้รับข้อผิดพลาดแม้เป็นผู้ใช้ root
ในบางสภาพแวดล้อม แม้ผู้ใช้ root อาจมีการจำกัดการเข้าถึง SHOW COLUMNS หรือ INFORMATION_SCHEMA ในกรณีนั้น ให้ตรวจสอบสิทธิ์.
วิธีตรวจสอบสิทธิ์
SHOW GRANTS FOR 'root'@'localhost';
หากไม่ได้มอบ ALL PRIVILEGES คุณสามารถแก้ไขได้ด้วย:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
5-4. การเปลี่ยนแปลงสิทธิ์ใน MySQL 8.0
ใน MySQL 8.0 การตั้งค่าสิทธิ์เริ่มต้นบางอย่างได้เปลี่ยนแปลง โดยเฉพาะ การเข้าถึง INFORMATION_SCHEMA อาจถูกจำกัดโดยค่าเริ่มต้น ซึ่งอาจทำให้เกิดข้อผิดพลาด.
วิธีแก้ไข
ใน MySQL 8.0 คุณอาจต้องมอบสิทธิ์ SELECT บนฐานข้อมูล mysql.
GRANT SELECT ON mysql.* TO 'user'@'localhost';
FLUSH PRIVILEGES;
สิ่งนี้จะทำให้คิวรี INFORMATION_SCHEMA ทำงานได้ใน MySQL 8.0 ด้วย.
5-5. หาก MySQL Workbench แสดง “Access denied”
เมื่อรัน SHOW COLUMNS ใน MySQL Workbench คุณอาจเห็นข้อความแสดงข้อผิดพลาดเช่น:
Error: Access denied; you need (at least one of) the SELECT privilege(s) for this operation
วิธีแก้ไข
ใน MySQL Workbench คุณสามารถมอบสิทธิ์ผ่าน GUI ได้เช่นกัน
- เปิด “Administration” → “Users and Privileges”
- เลือกผู้ใช้เป้าหมาย
- ในแท็บ “Schema Privileges” ให้มอบสิทธิ์
SELECT - คลิก “Apply” เพื่อบันทึก
สิ่งนี้ควรทำให้ MySQL Workbench สามารถดึงรายการคอลัมน์ได้สำเร็จ
สรุป
ในส่วนนี้ เราได้อธิบาย วิธีแก้ไขข้อผิดพลาดเมื่อรัน SHOW COLUMNS และ INFORMATION_SCHEMA ใน MySQL.
สิ่งที่ควรจำ
✔ ข้อผิดพลาด SHOW COLUMNS มักเกิดจากการขาดสิทธิ์ SELECT → แก้ด้วย GRANT SELECT
✔ ข้อผิดพลาด INFORMATION_SCHEMA มักเกิดจากการขาดการเข้าถึง information_schema.* → แก้ด้วย GRANT SELECT ON information_schema.*
✔ ใน MySQL 8.0 คุณอาจต้องการสิทธิ์บน mysql.* ด้วย
✔ ข้อผิดพลาดสิทธิ์ของ MySQL Workbench สามารถแก้ได้ผ่าน GUI
6. วิธีตรวจสอบรายการคอลัมน์ด้วยเครื่องมือ GUI
จนถึงตอนนี้ เราได้แนะนำวิธีดึงรายการคอลัมน์โดยใช้ คำสั่ง SQL แต่
ด้วย เครื่องมือ GUI (Graphical User Interface) คุณสามารถตรวจสอบคอลัมน์ได้อย่างเห็นภาพ
เครื่องมือ GUI มีประโยชน์เป็นพิเศษในสถานการณ์เช่น:
- เมื่อผู้ใช้ที่ไม่คุ้นเคยกับ SQL ต้องการตรวจสอบโครงสร้างฐานข้อมูลอย่างเข้าใจง่าย
- เมื่อคุณต้องการตรวจสอบรายการคอลัมน์ของตารางอย่างรวดเร็ว
- เมื่อคุณต้องการเข้าใจประเภทข้อมูลและข้อจำกัดของคอลัมน์อย่างรวดเร็ว
ส่วนนี้อธิบายวิธีตรวจสอบรายการคอลัมน์โดยใช้เครื่องมือ GUI ที่เป็นที่นิยม เช่น MySQL Workbench และ phpMyAdmin.
6-1. ตรวจสอบรายการคอลัมน์ใน MySQL Workbench
MySQL Workbench คืออะไร?
MySQL Workbench เป็นเครื่องมือจัดการฐานข้อมูลอย่างเป็นทางการของ MySQL และเป็นเครื่องมือที่สะดวกที่ช่วยให้คุณ จัดการตารางและข้อมูลคอลัมน์ผ่าน GUI อย่างเห็นภาพ.
ขั้นตอนการตรวจสอบรายการคอลัมน์
- เปิด MySQL Workbench
- เชื่อมต่อกับเซิร์ฟเวอร์ MySQL ของคุณ
- เลือก “Local Instance MySQL” หรือการเชื่อมต่อที่คุณตั้งค่าไว้
- เปิดแท็บ “Schemas”
- ขยายฐานข้อมูลเป้าหมาย (เช่น my_database)
- คลิกขวาที่ตารางที่ต้องการตรวจสอบ (เช่น users)
- เลือก “Table Inspector”
- เปิดแท็บ “Columns”
สิ่งที่คุณเห็นในรายการคอลัมน์
ในแท็บ “Columns” คุณจะเห็นข้อมูลดังต่อไปนี้.
| Column Name | Data Type | Allows NULL | Primary Key | Default Value | Additional Info |
|---|---|---|---|---|---|
| id | INT | NO | PRI | AUTO_INCREMENT | |
| name | VARCHAR(255) | YES | NULL | ||
| VARCHAR(255) | YES | UNI | NULL | ||
| age | INT | YES | NULL |
✅ คุณสามารถตรวจสอบรายละเอียดคอลัมน์ได้อย่างเข้าใจโดยไม่ต้องรัน SQL
✅ คุณยังสามารถตรวจสอบดัชนีและข้อจำกัดพร้อมกับตารางได้
6-2. ตรวจสอบรายการคอลัมน์ใน phpMyAdmin
phpMyAdmin คืออะไร?
phpMyAdmin เป็น เครื่องมือที่ช่วยให้คุณจัดการ MySQL ผ่านเว็บเบราว์เซอร์.
มันมักจะมีให้โดยค่าเริ่มต้นบน shared hosting และสภาพแวดล้อมที่คล้ายกัน ทำให้ใช้งานง่าย
ขั้นตอนการตรวจสอบรายการคอลัมน์
- เข้าสู่ระบบ phpMyAdmin
- เลือกฐานข้อมูลเป้าหมายจากเมนูด้านซ้าย
- คลิกที่ตารางที่ต้องการตรวจสอบ
- เปิดแท็บ “Structure”
สิ่งที่คุณเห็นในรายการคอลัมน์
ในแท็บ “Structure” ข้อมูลคอลัมน์ของตารางจะแสดงในรูปแบบตาราง
| Column Name | Data Type | Allows NULL | Default Value | Index | Comment |
|---|---|---|---|---|---|
| id | INT | NO | AUTO_INCREMENT | PRIMARY | |
| name | VARCHAR(255) | YES | NULL | ||
| VARCHAR(255) | YES | NULL | UNIQUE | ||
| age | INT | YES | NULL |
✅ คุณสามารถตรวจสอบรายการคอลัมน์ได้ง่ายในเว็บเบราว์เซอร์
✅ คุณสามารถเพิ่ม/แก้ไข/ลบคอลัมน์ผ่าน GUI ได้
6-3. เครื่องมือทางเลือก: DBeaver และ TablePlus
นอกจาก MySQL Workbench และ phpMyAdmin ยังมีเครื่องมือจัดการฐานข้อมูลที่มีประโยชน์อื่น ๆ อีกหลายตัว
DBeaver
- รองรับหลายแพลตฟอร์ม (Windows, Mac, Linux)
- รองรับฐานข้อมูลหลายประเภทนอกจาก MySQL เช่น PostgreSQL, SQLite, และ Oracle
- ช่วยให้คุณแสดงรายการคอลัมน์ด้วย GUI ที่เข้าใจง่าย
TablePlus
- UI ที่เรียบง่าย เหมาะสำหรับผู้เริ่มต้น
- รองรับ MySQL, PostgreSQL, SQLite และอื่น ๆ
- ประสิทธิภาพเร็วสำหรับการจัดการฐานข้อมูลที่สะดวกสบาย
✅ ด้วยเครื่องมือเหล่านี้ การตรวจสอบรายการคอลัมน์และการทำงานกับข้อมูลจะเป็นเรื่องราบรื่นยิ่งขึ้น
สรุป
ในส่วนนี้ เราอธิบาย วิธีตรวจสอบรายการคอลัมน์โดยใช้เครื่องมือ GUI.
ประเด็นสำคัญ
✔ ใน MySQL Workbench คุณสามารถตรวจสอบคอลัมน์ได้ใน “Table Inspector” → “Columns”
✔ ใน phpMyAdmin คุณสามารถดูข้อมูลคอลัมน์จากแท็บ “Structure”
✔ เครื่องมือทางเลือกเช่น DBeaver และ TablePlus ก็มีประโยชน์เช่นกัน
✔ เครื่องมือ GUI ช่วยให้คุณยืนยันข้อมูลคอลัมน์ได้อย่างเข้าใจง่ายโดยไม่ต้องมีความรู้ SQL
7. คำถามที่พบบ่อย (FAQ)
ต่อไปนี้เป็นคำถามทั่วไปที่ผู้อ่านมักมีเกี่ยวกับการแสดงรายการคอลัมน์ของ MySQL.
เรายังอธิบายข้อควรระวังเมื่อใช้ SHOW COLUMNS และ INFORMATION_SCHEMA, วิธีจัดการกับข้อผิดพลาด, และการใช้งานขั้นสูง.
7-1. ความแตกต่างระหว่าง SHOW COLUMNS กับ DESCRIBE คืออะไร?
คำถาม
“What is the difference between SHOW COLUMNS and DESCRIBE?”
คำตอบ
SHOW COLUMNS และ DESCRIBE ให้ ฟังก์ชันการทำงานที่เกือบเหมือนกัน.
ในความเป็นจริง DESCRIBE เป็น นามแฝง ของ SHOW COLUMNS.
✅ ตัวอย่าง SHOW COLUMNS
SHOW COLUMNS FROM users;
✅ ตัวอย่าง DESCRIBE
DESCRIBE users;
ความแตกต่างหลักคือ:
| Command | Function | Details |
|---|---|---|
| SHOW COLUMNS | Retrieve column information | Supports more detailed options |
| DESCRIBE | Alias of SHOW COLUMNS | Shorter and easier to type |
สำหรับการใช้งานส่วนใหญ่ DESCRIBE เพียงพอ,
แต่หากคุณต้องการตัวเลือกที่ยืดหยุ่นมากขึ้น ให้เลือก SHOW COLUMNS.
7-2. ประโยชน์ของการใช้ INFORMATION_SCHEMA คืออะไร?
คำถาม
“What are the benefits of using INFORMATION_SCHEMA instead of SHOW COLUMNS?”
คำตอบ
การใช้ INFORMATION_SCHEMA.COLUMNS ทำให้สามารถค้นหาขั้นสูงได้ เช่น:
✅ ดึงข้อมูลคอลัมน์ทั่วทั้งฐานข้อมูล
✅ ค้นหาตารางที่มีคอลัมน์เฉพาะ
✅ กรองผลลัพธ์โดยใช้เงื่อนไข SQL WHERE
ตัวอย่างเช่น เมื่อคุณต้องการ “ค้นหาทุกตารางที่มีคอลัมน์ email,”
SHOW COLUMNS ไม่สามารถทำได้โดยตรง, แต่ INFORMATION_SCHEMA ทำได้.
SELECT table_name
FROM information_schema.columns
WHERE column_name = 'email'
AND table_schema = 'my_database';
SHOW COLUMNS สามารถดึงข้อมูลได้ หนึ่งตารางต่อครั้ง เท่านั้น,
แต่ INFORMATION_SCHEMA สามารถค้นหา ทั่วทั้งฐานข้อมูล.
7-3. ฉันจะลิสต์ตารางที่มีคอลัมน์เฉพาะได้อย่างไร?
คำถาม
“Is there a way to list tables that contain a specific column in a database?”
คำตอบ
คุณสามารถใช้ INFORMATION_SCHEMA.COLUMNS เพื่อค้นหาตารางที่มีคอลัมน์เฉพาะ.
✅ ไวยากรณ์ SQL
SELECT table_name
FROM information_schema.columns
WHERE column_name = 'column_name'
AND table_schema = 'database_name';
✅ ตัวอย่าง
“I want to find tables that contain an email column.”
SELECT table_name
FROM information_schema.columns
WHERE column_name = 'email'
AND table_schema = 'my_database';
✅ ผลลัพธ์
+------------+
| table_name |
+------------+
| users |
| customers |
+------------+
วิธีนี้ช่วยให้คุณยืนยันได้อย่างรวดเร็วว่า ตารางใดบ้างที่มีคอลัมน์เฉพาะในฐานข้อมูลของคุณ.
7-4. ฉันจะดึงคอมเมนต์ของคอลัมน์ได้อย่างไร?
คำถาม
“How can I retrieve comment information set on columns?”
คำตอบ
ใน MySQL คุณสามารถตั้งคอมเมนต์ (คำอธิบาย) บนคอลัมน์ได้.
เพื่อดึงคอมเมนต์ ให้ใช้ SHOW FULL COLUMNS หรือ INFORMATION_SCHEMA.COLUMNS.
✅ ตัวอย่าง SHOW FULL COLUMNS
SHOW FULL COLUMNS FROM users;
✅ ใช้ INFORMATION_SCHEMA
SELECT column_name, column_comment
FROM information_schema.columns
WHERE table_name = 'users'
AND table_schema = 'my_database';
✅ ผลลัพธ์
+-------------+---------------------+
| column_name | column_comment |
+-------------+---------------------+
| id | User ID |
| name | User name |
| email | Email address |
| age | Age (optional) |
+-------------+---------------------+
7-5. ฉันจะทำให้การดึงรายการคอลัมน์อัตโนมัติด้วยสคริปต์ได้อย่างไร?
คำถาม
“Is there a way to retrieve column lists with a script and log them automatically?”
คำตอบ
With Python or Shell scripts, you can ดึงและบันทึกรายการคอลัมน์เป็นระยะ.
✅ ตัวอย่างสคริปต์ Python
import mysql.connector
config = {
'user': 'your_user',
'password': 'your_password',
'host': 'localhost',
'database': 'your_database'
}
conn = mysql.connector.connect(**config)
cursor = conn.cursor()
cursor.execute("SELECT column_name FROM information_schema.columns WHERE table_name = 'users'")
columns = cursor.fetchall()
print("Columns:")
for column in columns:
print(column[0])
cursor.close()
conn.close()
✅ ตัวอย่างสคริปต์ Shell
#!/bin/bash
DB_NAME="your_database"
TABLE_NAME="users"
USER="your_user"
PASSWORD="your_password"
mysql -u$USER -p$PASSWORD -D$DB_NAME -e "SELECT column_name FROM information_schema.columns WHERE table_name = '$TABLE_NAME';"
✅ การรันตามกำหนด (cron job)
0 3 * * * /path/to/mysql_columns.sh
(ดึงและบันทึกรายการคอลัมน์ทุกวันเวลา 03:00 น.)
สรุป
ในส่วนนี้ เราได้แนะนำ คำถามที่พบบ่อยและวิธีแก้ เกี่ยวกับการแสดงรายการคอลัมน์ของ MySQL.
ประเด็นสำคัญ
✔ SHOW COLUMNS และ DESCRIBE มีความคล้ายคลึงกัน แต่ SHOW COLUMNS มีความยืดหยุ่นมากกว่า
✔ INFORMATION_SCHEMA ช่วยให้คุณค้นหาคอลัมน์ทั่วทั้งฐานข้อมูล
✔ ใช้ INFORMATION_SCHEMA.COLUMNS เพื่อค้นหาตารางที่มีคอลัมน์เฉพาะ
✔ ใช้ SHOW FULL COLUMNS หรือ INFORMATION_SCHEMA เพื่อดึงคอมเมนต์ของคอลัมน์
✔ สคริปต์ Python หรือ Shell สามารถทำงานอัตโนมัติในการดึงคอลัมน์และ cron สามารถกำหนดเวลาได้
8. สรุปสุดท้าย
ในบทความนี้ เราได้อธิบาย วิธีดึงรายการคอลัมน์ใน MySQL อย่างละเอียด.
ตั้งแต่คำสั่ง SQL พื้นฐานจนถึงวิธีการค้นหาขั้นสูง, การทำอัตโนมัติ, การจัดการข้อผิดพลาด, และการใช้เครื่องมือ GUI,
เราได้ครอบคลุมความรู้เชิงปฏิบัติที่หลากหลาย.
สุดท้าย เรามาทบทวนประเด็นสำคัญที่สุดจากบทความทั้งหมดกัน.
8-1. ภาพรวมครบถ้วน: วิธีแสดงรายการคอลัมน์ใน MySQL
วิธีพื้นฐาน
| Method | Command | Notes |
|---|---|---|
| SHOW COLUMNS | SHOW COLUMNS FROM table_name; | The simplest method. Retrieve per table. |
| DESCRIBE | DESCRIBE table_name; | An alias for SHOW COLUMNS. |
| INFORMATION_SCHEMA | SELECT column_name FROM information_schema.columns WHERE table_name = 'table_name' AND table_schema = 'database_name'; | Search column info across the entire database. |
✅ SHOW COLUMNS และ DESCRIBE เป็น ง่ายและสะดวก
✅ INFORMATION_SCHEMA ช่วยให้คุณ ค้นหาคอลัมน์ทั่วทั้งฐานข้อมูล
8-2. วิธีขั้นสูงในการดึงข้อมูลคอลัมน์
| Method | Command | Purpose |
|---|---|---|
| Retrieve columns for all tables | SELECT table_name, column_name FROM information_schema.columns WHERE table_schema = 'database_name'; | List all columns across the database. |
| Find tables containing a specific column | SELECT table_name FROM information_schema.columns WHERE column_name = 'column_name' AND table_schema = 'database_name'; | Find which tables contain the column. |
| Retrieve detailed column info | SELECT column_name, data_type, is_nullable, column_default FROM information_schema.columns WHERE table_name = 'table_name' AND table_schema = 'database_name'; | Check data types, NULL allowance, and defaults. |
✅ คุณสามารถค้นหาตารางที่มีคอลัมน์เฉพาะ (มีประโยชน์ในระหว่างการเปลี่ยนแปลงสคีม่า)
✅ คุณยังสามารถดึงข้อมูลประเภทข้อมูลและการอนุญาต NULL
8-3. การทำอัตโนมัติและการจัดการข้อผิดพลาด
วิธีการทำอัตโนมัติ
| Method | Language | Command |
|---|---|---|
| Python script | Python | Use mysql-connector-python |
| Shell script | Bash | mysql -u user -p -e "SQL" |
| Scheduled run (cron job) | Linux | 0 3 * * * /path/to/script.sh |
✅ สคริปต์สามารถทำการแสดงรายการคอลัมน์อัตโนมัติ
✅ Cron jobs ช่วยให้การตรวจสอบสคีม่าเป็นระยะ
การจัดการข้อผิดพลาด
| Error | Cause | Solution |
|---|---|---|
SELECT command denied | No SELECT privilege for SHOW COLUMNS | GRANT SELECT ON your_database.* TO 'user'@'localhost'; |
Access denied for user | No privileges for INFORMATION_SCHEMA | GRANT SELECT ON information_schema.* TO 'user'@'localhost'; |
Table doesn't exist | Wrong table name | Specify the correct database/table |
✅ ข้อผิดพลาดที่เกี่ยวกับสิทธิ์สามารถแก้ไขได้ด้วยคำสั่ง GRANT
✅ การใช้ INFORMATION_SCHEMA อาจต้องการสิทธิพิเศษ
8-4. ตรวจสอบรายการคอลัมน์ด้วยเครื่องมือ GUI
เครื่องมือทั่วไป
| Tool | Notes |
|---|---|
| MySQL Workbench | Official tool. Visually manage column information. |
| phpMyAdmin | Easy database management from a web browser. |
| DBeaver | Feature-rich tool that supports many DBs beyond MySQL. |
| TablePlus | Simple design and intuitive operation. |
✅ เครื่องมือ GUI ช่วยให้คุณตรวจสอบคอลัมน์โดยไม่ต้องใช้คำสั่ง SQL
✅ การออกแบบและแก้ไขฐานข้อมูลทำได้อย่างเป็นธรรมชาติมากขึ้น
8-5. ไฮไลท์ FAQ
| Question | Answer |
|---|---|
What’s the difference between SHOW COLUMNS and DESCRIBE? | They are almost the same, but SHOW COLUMNS has more options. |
What are the benefits of using INFORMATION_SCHEMA? | You can search across the database and find tables that contain a specific column. |
| How can I find tables that contain a specific column? | Use INFORMATION_SCHEMA.COLUMNS. |
| How can I retrieve column comments? | Use SHOW FULL COLUMNS or INFORMATION_SCHEMA.COLUMNS. |
| How can I automate column listing? | Use Python/Shell scripts and schedule them with cron. |
✅ ให้คำตอบที่ชัดเจนต่อคำถามทั่วไป
✅ ใช้ตัวอย่าง SQL ที่เป็นรูปธรรมเพื่อเพิ่มความเป็นประโยชน์
8-6. เคล็ดลับเพื่อการจัดการฐานข้อมูลที่มีประสิทธิภาพมากขึ้น
สุดท้าย นี่คือเคล็ดลับบางอย่างเพื่อปรับปรุงประสิทธิภาพการจัดการฐานข้อมูล
✅ บันทึกโครงสร้างตารางของคุณ
- ใช้
SHOW CREATE TABLEเพื่อบันทึกโครงสร้างตาราง - ตรวจสอบ
INFORMATION_SCHEMAอย่างสม่ำเสมอเพื่อติดตามการเปลี่ยนแปลงสคีม่า
✅ ตั้งค่าการจัดการสิทธิ์ที่เหมาะสม
- ใช้
GRANTและREVOKEเพื่อลดสิทธิ์ที่ไม่จำเป็น - ใช้บันทึกการตรวจสอบเพื่อบันทึกว่าใครเปลี่ยนตารางใด
✅ ทำงานประจำอัตโนมัติด้วยสคริปต์
- ดึงและบันทึกรายการคอลัมน์เป็นระยะโดยใช้สคริปต์ Python หรือ Shell
- ใช้ cron jobs เพื่อตรวจสอบการเปลี่ยนแปลงสคีม่าเป็นประจำวัน
สรุปและขั้นตอนต่อไป
ในบทความนี้ เราได้อธิบาย วิธีแสดงรายการคอลัมน์ใน MySQL อย่างเป็นระบบตั้งแต่พื้นฐานจนถึงขั้นสูง.
ในการจัดการและพัฒนาฐานข้อมูล การแสดงรายการคอลัมน์เป็น สิ่งสำคัญสำหรับการเข้าใจโครงสร้างตารางและเพิ่มประสิทธิภาพการดีบัก.
ขั้นตอนต่อไป
✅ ลองแสดงคอลัมน์ใน MySQL ในสภาพแวดล้อมของคุณ
✅ ลองทำงานอัตโนมัติด้วย Python หรือสคริปต์ Shell
✅ ใช้เครื่องมือ GUI เพื่อทำให้การจัดการฐานข้อมูลเป็นเรื่องง่าย
ด้วยทักษะเหล่านี้ คุณสามารถจัดการฐานข้อมูล MySQL ได้อย่างมีประสิทธิภาพมากขึ้น! 🚀


