การค้นหาตารางที่มีคอลัมน์ชื่อเฉพาะจาก information_schema
MySQL เก็บข้อมูลเมตาของฐานข้อมูลไว้ใน information_schema เราสามารถสอบถามว่าในฐานข้อมูลใดฐานข้อมูลหนึ่ง มีตารางไหนบ้างที่มีคอลัมน์ชื่อตามที่ต้องการ
คำสั่งค้นหาตารางที่มีคอลัมน์ 'StudentFirstName' ในฐานข้อมูล 'web'
mysql> SELECT myColumnName.table_name
FROM information_schema.columns myColumnName
WHERE myColumnName.column_name = 'StudentFirstName'
AND table_schema = 'web';
ผลลัพธ์:
+---------------+
| TABLE_NAME |
+---------------+
| demotable109 |
| demotable297 |
| demotable335 |
| demotable395 |
| demotable418 |
| demotable425 |
| demotable436 |
+---------------+
7 rows in set (0.14 sec)
ตรวจสอบโครงสร้างตารางหนึ่งเพื่อยืนยัน
mysql> DESC demotable297;
ผลลัพธ์:
+------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+-------+
| StudentId | int(11) | YES | | NULL | |
| StudentFirstName | varchar(100) | YES | | NULL | |
| StudentLastName | varchar(100) | YES | | NULL | |
+------------------+--------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
คำอธิบาย
information_schema.columns: ตารางที่เก็บข้อมูลคอลัมน์ทุกตารางทุกฐานข้อมูลtable_schema = 'web': กรองเฉพาะฐานข้อมูลชื่อ 'web'column_name = 'StudentFirstName': กรองเฉพาะคอลัมน์ชื่อนี้- ผลลัพธ์คือรายชื่อตารางที่มีคอลัมน์นี้
- สามารถเพิ่มเงื่อนไขอื่นได้ เช่น
data_type = 'varchar'