目录
- 引言
- 举例
- 总结
引言
当我们把一个项目做完以后,客户要求我们把系统中所有的电话,证件号等进行加密处理时,我们难道要一个表一表去查看那些字段是电话和证件号码吗? 这种办法有点费劲,下面我们来探索如何找到想要的字段吧!
举例
- 找到哪些表中包含某个指定的字段
SELECTt.table_name AS '表名',t.COLUMN_NAME AS '字段名',t.COLUMN_COMMENT AS '字段描述'
FROMinformation_schema.COLUMNS t
WHEREtable_schema = 'xxx_industry_db' AND column_name = 'region_id';
在数据库xxx_industry_db中查找具有字段名为 region_id的表,查询结果
- 查找数据库具有电话或证件号码等关键字字段的表及字段
SELECTTABLE_NAME AS '表名',COLUMN_NAME AS '列名',COLUMN_COMMENT AS '注释'
FROMinformation_schema.`COLUMNS`
WHERETABLE_SCHEMA = 'xxx_industry_db'AND (COLUMN_COMMENT LIKE '%电话%' OR COLUMN_COMMENT LIKE '%身份证%' OR COLUMN_COMMENT LIKE '%号码%' OR COLUMN_COMMENT LIKE '%手机%'OR COLUMN_COMMENT LIKE '%联系方式%')
ORDER BYTABLE_NAME,ORDINAL_POSITION;
查找数据库xxx_industry_db列名包含 电话,身份证,号码,手机或联系方式的表及字段名,查询结果:
总结
通过查询数据处带的表 information_schema.COLUMNS,我们还可以查更多我们想要查询的信息,比如我们还可以字段名称包含某些关键字的表及列:
SELECTTABLE_NAME AS '表名',COLUMN_NAME AS '列名',COLUMN_COMMENT AS '注释'
FROMinformation_schema.`COLUMNS`
WHERETABLE_SCHEMA = 'xxx_industry_db'AND (COLUMN_NAME LIKE '%phone%' OR COLUMN_NAME LIKE '%mobile%' OR COLUMN_NAME LIKE '%card%' OR COLUMN_NAME LIKE '%no%' )
ORDER BYTABLE_NAME,ORDINAL_POSITION;