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

หาตารางทั้งหมดในฐานข้อมูล MySQL ที่มีคอลัมน์ชื่อเฉพาะ (เช่น StudentFirstName)

การค้นหาตารางที่มีคอลัมน์ชื่อเฉพาะจาก 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'