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

วิธีแสดงชนิดข้อมูลคอลัมน์ในคอลัมน์แยกต่างหากด้วย MySQL SELECT

การดึงข้อมูล 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)