Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Tìm bảng chứa cột cụ thể trong database MySQL

Sử dụng INFORMATION_SCHEMA.COLUMNS với COLUMN_NAME để tìm bảng chứa cột cụ thể.

Tạo bảng demo

mysql> create table DemoTable (
    -> CustomerId int,
    -> CustomerName varchar(20),
    -> CustomerCountryName varchar(100)
    -> );
Query OK, 0 rows affected (1.05 sec)

Truy vấn tìm bảng có cột "CustomerCountryName"

mysql> select * from information_schema.columns WHERE COLUMN_NAME = 'CustomerCountryName';

Kết quả - Cột xuất hiện trong 3 bảng

+---------------+--------------+--------------+---------------------+------------------+----------------+-------------+-----------+--------------------------+------------------------+-------------------+---------------+--------------------+--------------------+-----------------+--------------+------------+-------+---------------------------------+----------------+-----------------------+-------+
| 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                    | COLUMN_COMMENT | GENERATION_EXPRESSION | SRS_ID |
+---------------+--------------+--------------+---------------------+------------------+----------------+-------------+-----------+--------------------------+------------------------+-------------------+---------------+--------------------+--------------------+-----------------+--------------+------------+-------+---------------------------------+----------------+-----------------------+-------+
| def           | sample       | demotable189 | CustomerCountryName | 4                | NULL           | YES         | varchar   | 100                      | 300                    | NULL              | NULL          | NULL               | utf8               | utf8_general_ci | varchar(100) |            |       | select,insert,update,references |                | NULL                  | NULL   |
| def           | web          | DemoTable    | CustomerCountryName | 4                | NULL           | YES         | varchar   | 20                       | 60                     | NULL              | NULL          | NULL               | utf8               | utf8_unicode_ci | varchar(20)  |            |       | select,insert,update,references |                | NULL                  | NULL   |
| def           | web          | DemoTable    | CustomerCountryName | 3                | NULL           | YES         | varchar   | 100                      | 300                    | NULL              | NULL          | NULL               | utf8               | utf8_unicode_ci | varchar(100) |            |       | select,insert,update,references |                | NULL                  | NULL   |
+---------------+--------------+--------------+---------------------+------------------+----------------+-------------+-----------+--------------------------+------------------------+-------------------+---------------+--------------------+--------------------+-----------------+--------------+------------+-------+---------------------------------+----------------+-----------------------+-------+
3 rows in set (0.68 sec)

Giải thích các cột quan trọng:

  • TABLE_SCHEMA: Tên database.
  • TABLE_NAME: Tên bảng.
  • ORDINAL_POSITION: Vị trí cột trong bảng (1-based).
  • DATA_TYPE, COLUMN_TYPE: Kiểu dữ liệu.
  • COLUMN_KEY: PRI (Primary Key), UNI (Unique), MUL (Index).

Truy vấn gọn gàng hơn:

SELECT TABLE_SCHEMA, TABLE_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME = 'CustomerCountryName';