查询数据库表字段具有某些特征的表

引言

当我们把一个项目做完以后,客户要求我们把系统中所有的电话,证件号等进行加密处理时,我们难道要一个表一表去查看那些字段是电话和证件号码吗? 这种办法有点费劲,下面我们来探索如何找到想要的字段吧!

举例

  1. 找到哪些表中包含某个指定的字段
SELECT
	t.table_name AS '表名',
	t.COLUMN_NAME AS '字段名',
	t.COLUMN_COMMENT AS '字段描述'
FROM
	information_schema.COLUMNS t 
WHERE
	table_schema = 'xxx_industry_db' 
	AND column_name = 'region_id';

在数据库xxx_industry_db中查找具有字段名为 region_id的表,查询结果
在这里插入图片描述

  1. 查找数据库具有电话或证件号码等关键字字段的表及字段
SELECT
    TABLE_NAME AS '表名',
    COLUMN_NAME AS '列名',
    COLUMN_COMMENT AS '注释'
FROM
    information_schema.`COLUMNS`
WHERE
    TABLE_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 BY
    TABLE_NAME,
    ORDINAL_POSITION;

查找数据库xxx_industry_db列名包含 电话,身份证,号码,手机或联系方式的表及字段名,查询结果:
在这里插入图片描述

总结

通过查询数据处带的表 information_schema.COLUMNS,我们还可以查更多我们想要查询的信息,比如我们还可以字段名称包含某些关键字的表及列:

SELECT
    TABLE_NAME AS '表名',
    COLUMN_NAME AS '列名',
    COLUMN_COMMENT AS '注释'
FROM
    information_schema.`COLUMNS`
WHERE
    TABLE_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 BY
    TABLE_NAME,
    ORDINAL_POSITION;		
		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值