Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีตรวจสอบว่าคอลัมน์มีอยู่ในตาราง MySQL หรือไม่

มีหลายวิธีในการตรวจสอบว่าคอลัมน์มีอยู่ในตารางหรือไม่ วิธีที่แนะนำคือใช้ SHOW COLUMNS หรือ查询 INFORMATION_SCHEMA

วิธีที่ 1: ใช้ SHOW COLUMNS (แนะนำ)

SHOW COLUMNS FROM `table_name` LIKE 'column_name';

ตัวอย่าง

SHOW COLUMNS FROM `ColumnExistDemo` LIKE 'UniqueName';
+------------+--------------+------+-----+---------+-------+
| Field      | Type         | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| UniqueName | varchar(200) | YES  |     | NULL    |       |
+------------+--------------+------+-----+---------+-------+

ถ้ามีคอลัมน์ จะแสดงข้อมูลคอลัมน์นั้น ถ้าไม่มี จะได้ Empty Set

วิธีที่ 2: ใช้ INFORMATION_SCHEMA.COLUMNS (ยืดหยุ่นกว่า)

SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'database_name'
  AND TABLE_NAME = 'table_name'
  AND COLUMN_NAME = 'column_name';

ข้อดี

  • ได้ข้อมูลรายละเอียดครบ (Data Type, Nullable, Default, Comment, v.v.)
  • ใช้ใน Subquery / Stored Procedure ได้
  • รองรับ Wildcard (%) ในชื่อคอลัมน์

วิธีที่ 3: ใช้ DESCRIBE / DESC (ดูทั้งตาราง)

DESC table_name;
-- หรือ
DESCRIBE table_name;

เหมาะสำหรับดูโครงสร้างทั้งตาราง แต่ไม่เหมาะสำหรับเช็คคอลัมน์เดียว

วิธีที่ 4: ใช้ COLUMNS() Function (ในบาง Version)

SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'db' AND TABLE_NAME = 'tbl' AND COLUMN_NAME = 'col';

คืนค่า 1 = มีอยู่, 0 = ไม่มี

สรุปแนะนำ

  • เช็คเร็ว: SHOW COLUMNS FROM tbl LIKE 'col'
  • ต้องการรายละเอียด/เขียนโปรแกรม: Query INFORMATION_SCHEMA
  • ดูโครงสร้างทั้งตาราง: DESC tbl