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

MySQL: ดูชื่อและชนิดข้อมูลคอลัมน์จาก Database ด้วย INFORMATION_SCHEMA.COLUMNS

การดึงข้อมูลเมตาคอลัมน์ (Column Metadata) จาก INFORMATION_SCHEMA

View INFORMATION_SCHEMA.COLUMNS เก็บข้อมูลของทุกคอลัมน์ในทุกตาราง ใช้ Query เพื่อดูชื่อคอลัมน์และชนิดข้อมูลของตารางเฉพาะ

ไวยากรณ์ (Syntax)

SELECT COLUMN_NAME, COLUMN_TYPE 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'yourTableName';

ตัวอย่างการใช้งาน

สร้างตารางตัวอย่าง:

mysql> CREATE TABLE DemoTable (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> ClientName VARCHAR(60),
    -> ClientAge INT,
    -> ClientSalary DECIMAL(10,4),
    -> isRegularClient BOOL
    -> );
Query OK, 0 rows affected (0.44 sec)

ดูชื่อและชนิดคอลัมน์:

mysql> SELECT COLUMN_NAME, COLUMN_TYPE 
    -> FROM INFORMATION_SCHEMA.COLUMNS 
    -> WHERE TABLE_NAME = 'DemoTable';
+-----------------+---------------+
| COLUMN_NAME     | COLUMN_TYPE   |
+-----------------+---------------+
| Id              | int(11)       |
| ClientName      | varchar(60)   |
| ClientAge       | int(11)       |
| ClientSalary    | decimal(10,4) |
| isRegularClient | tinyint(1)    |
+-----------------+---------------+
5 rows in set (0.02 sec)

คำอธิบาย

  • COLUMN_NAME = ชื่อคอลัมน์
  • COLUMN_TYPE = ชนิดข้อมูลพร้อมความยาว/ความแม่นยำ (เช่น varchar(60), decimal(10,4))
  • BOOL แสดงเป็น tinyint(1) (Internal Type)

คอลัมน์อื่นๆ ที่น่าสนใจใน COLUMNS

Query ครบถ้วน: ดูโครงสร้างตารางเต็มๆ

SELECT 
    COLUMN_NAME AS `Column`,
    COLUMN_TYPE AS `Type`,
    IS_NULLABLE AS `Null`,
    COLUMN_KEY AS `Key`,
    COLUMN_DEFAULT AS `Default`,
    EXTRA AS `Extra`
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'your_db' AND TABLE_NAME = 'your_table'
ORDER BY ORDINAL_POSITION;

เทียบเท่า DESC table_name แต่ Query เองได้ กรอง/เรียง/Join ได้

Columnความหมาย
IS_NULLABLEYES/NO (อนุญาต NULL หรือไม่)
COLUMN_KEYPRI (Primary), UNI (Unique), MUL (Index), '' (None)
COLUMN_DEFAULTค่า Default (NULL ถ้าไม่มี)
EXTRAauto_increment, VIRTUAL GENERATED, STORED GENERATED
CHARACTER_SET_NAMECharset ของคอลัมน์ (ถ้ามี)
COLLATION_NAMECollation ของคอลัมน์