1. 程式人生 > >mysql 利用information_schema庫COLUMNS表檢視哪些表含有指定欄位

mysql 利用information_schema庫COLUMNS表檢視哪些表含有指定欄位

通常情況下,我們可以通過:
1)show columns from 表名;
2)describe 表名;
3)show create table 表名;
等命令檢視指定表包含哪些欄位資訊,本文討論如何檢視哪些資料表包含指定欄位,顯然上述命令無法實現。
Mysql所有資料表的欄位(COLUMN)資訊都儲存在information_schema.COLUMNS表中,其定義如下:

CREATE TEMPORARY TABLE `COLUMNS` (
  `TABLE_CATALOG` varchar(512) NOT NULL DEFAULT '',
  `TABLE_SCHEMA`
varchar(64) NOT NULL DEFAULT '', `TABLE_NAME` varchar(64) NOT NULL DEFAULT '', `COLUMN_NAME` varchar(64) NOT NULL DEFAULT '', `ORDINAL_POSITION` bigint(21) unsigned NOT NULL DEFAULT '0', `COLUMN_DEFAULT` longtext, `IS_NULLABLE` varchar(3) NOT NULL DEFAULT '', `DATA_TYPE` varchar(64) NOT NULL
DEFAULT '', `CHARACTER_MAXIMUM_LENGTH` bigint(21) unsigned DEFAULT NULL, `CHARACTER_OCTET_LENGTH` bigint(21) unsigned DEFAULT NULL, `NUMERIC_PRECISION` bigint(21) unsigned DEFAULT NULL, `NUMERIC_SCALE` bigint(21) unsigned DEFAULT NULL, `DATETIME_PRECISION` bigint(21) unsigned DEFAULT NULL
, `CHARACTER_SET_NAME` varchar(32) DEFAULT NULL, `COLLATION_NAME` varchar(32) DEFAULT NULL, `COLUMN_TYPE` longtext NOT NULL, `COLUMN_KEY` varchar(3) NOT NULL DEFAULT '', `EXTRA` varchar(30) NOT NULL DEFAULT '', `PRIVILEGES` varchar(80) NOT NULL DEFAULT '', `COLUMN_COMMENT` varchar(1024) NOT NULL DEFAULT '' ) ENGINE=MyISAM DEFAULT CHARSET=utf8

因此,我們只要寫個簡單的sql,即可查詢包含version欄位的所有表名

select * from information_schema.columns where column_name = 'version'

結果截圖如下:
在這裡插入圖片描述