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

ใช้ SHOW COLUMNS เป็นแหล่งข้อมูลสำหรับตารางใน MySQL

การใช้ INFORMATION_SCHEMA.COLUMNS แทน SHOW COLUMNS ใน MySQL

คำสั่ง SHOW COLUMNS ไม่สามารถใช้เป็นแหล่งข้อมูล (Data Source) ใน Subquery ได้โดยตรง แต่สามารถใช้ตาราง INFORMATION_SCHEMA.COLUMNS แทน ซึ่งให้ข้อมูลรายละเอียดมากกว่า

SELECT * FROM (
    SELECT * FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE TABLE_NAME = 'yourTableName'
) anyAliasName;

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

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

mysql> create table DemoTable (
    StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentFirstName varchar(20),
    StudentLastName varchar(20),
    StudentAge int
);

คิวรีดึงข้อมูลโครงสร้างตาราง:

mysql> SELECT * FROM (
    SELECT * FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE TABLE_NAME = 'DemoTable'
) tbl;

ผลลัพธ์ (แสดงคอลัมน์สำคัญ):

+---------------+--------------+-------------+------------------+------------------+----------------+-------------+-----------+--------------------------+------------------------+-------------------+---------------+--------------------+--------------------+-----------------+-------------+------------+----------------+---------------------------------+----------------+-----------------------+--------+
| TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME  | COLUMN_NAME      | ORDINAL_POSITION | COLUMN_DEFAULT | IS_NULLABLE | DATA_TYPE | CHARACTER_MAXIMUM_LENGTH | CHARACTER_OCTET_LENGTH | NUMERIC_PRECISION | NUMERIC_SCALE | DATETIME_PRECISION | CHARACTER_SET_NAME | COLLATION_NAME | COLUMN_TYPE | COLUMN_KEY | EXTRA          | PRIVILEGES                      | GENERATION_EXPRESSION | SRS_ID |
+---------------+--------------+-------------+------------------+------------------+----------------+-------------+-----------+--------------------------+------------------------+-------------------+---------------+--------------------+--------------------+-----------------+-------------+------------+----------------+---------------------------------+----------------+-----------------------+--------+
| def           | sample       | DemoTable   | StudentId        | 1                | NULL           | NO          | int       | NULL                     | NULL                   | 10                | 0             | NULL               | NULL               | NULL           | int(11)     | PRI        | auto_increment | select,insert,update,references | NULL              | NULL   |
| def           | sample       | DemoTable   | StudentFirstName | 2                | NULL           | YES         | varchar   | 20                       | 60                     | NULL              | NULL          | NULL               | utf8               | utf8_general_ci | varchar(20) |            |                | select,insert,update,references | NULL              | NULL   |
| def           | sample       | DemoTable   | StudentLastName  | 3                | NULL           | YES         | varchar   | 20                       | 60                     | NULL              | NULL          | NULL               | utf8               | utf8_general_ci | varchar(20) |            |                | select,insert,update,references | NULL              | NULL   |
| def           | sample       | DemoTable   | StudentAge       | 4                | NULL           | YES         | int       | NULL                     | NULL                   | 10                | 0             | NULL               | NULL               | NULL           | int(11)     |            |                | select,insert,update,references | NULL              | NULL   |
+---------------+--------------+-------------+------------------+------------------+----------------+-------------+-----------+--------------------------+------------------------+-------------------+---------------+--------------------+--------------------+-----------------+-------------+------------+----------------+---------------------------------+----------------+-----------------------+--------+

ข้อดีของ INFORMATION_SCHEMA.COLUMNS:

  • สามารถใช้ใน Subquery, JOIN, และ WHERE ได้อย่างเต็มที่
  • ให้ข้อมูลเมตadata ครบถ้วน (Data Type, Length, Nullable, Default, Key, Extra, Privileges, ฯลฯ)
  • เป็นมาตรฐาน SQL มาตรฐาน (ANSI SQL)
  • สามารถกรองด้วย TABLE_SCHEMA (ชื่อฐานข้อมูล) ได้