การดึงข้อมูล Metadata จาก INFORMATION_SCHEMA.COLUMNS
MySQL เก็บข้อมูลโครงสร้างตาราง (Metadata) ไว้ในฐานข้อมูลระบบ INFORMATION_SCHEMA สามารถ JOIN กับตารางข้อมูลจริงเพื่อแสดงค่าข้อมูลพร้อมชนิดข้อมูลของคอลัมน์นั้นๆ ได้
ตัวอย่างสร้างตารางและข้อมูล
CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(20)
);
INSERT INTO DemoTable (Name) VALUES
('Chris'), ('Robert'), ('Sam');
ข้อมูลในตาราง
+----+--------+ | Id | Name | +----+--------+ | 1 | Chris | | 2 | Robert | | 3 | Sam | +----+--------+
คำสั่ง SELECT แสดงข้อมูลพร้อมชนิดข้อมูล
SELECT DemoTable.Name, col1.DATA_TYPE
FROM DemoTable
JOIN INFORMATION_SCHEMA.COLUMNS col1
ON col1.TABLE_NAME = 'DemoTable'
AND col1.COLUMN_NAME = 'Name'
AND col1.TABLE_SCHEMA = DATABASE();
ผลลัพธ์
+--------+-----------+ | Name | DATA_TYPE | +--------+-----------+ | Chris | varchar | | Robert | varchar | | Sam | varchar | +--------+-----------+
คำอธิบาย:
INFORMATION_SCHEMA.COLUMNSเก็บข้อมูลคอลัมน์ของทุกตารางในทุกฐานข้อมูล- ต้องกรองด้วย
TABLE_NAME,COLUMN_NAMEและTABLE_SCHEMA(ฐานข้อมูลปัจจุบัน) เพื่อความแม่นยำ - ใช้
JOINแบบ INNER JOIN (ค่าเริ่มต้น) เพื่อผูกข้อมูลแต่ละแถวกับข้อมูล Metadata เดียวกัน
ประยุกต์ใช้: นำไปสร้าง Data Dictionary, Dynamic SQL, หรือ Validation โปรแกรมได้
คอลัมน์อื่นๆ ที่น่าสนใจใน INFORMATION_SCHEMA.COLUMNS: COLUMN_TYPE (ชนิดข้อมูลเต็มรูปแบบ), IS_NULLABLE, COLUMN_DEFAULT, CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION, COLUMN_KEY (PRI, UNI, MUL)