查询数据库包含某个字段的所有表

背景:最近,因为项目重构,需要统计老项目的数据库表中包含业务属性的某个字段,涉及到有哪些表;

​ 所以,总结如下:



一、查询指定库拥有某字段的表
-- 注释: columnName 字段名   dbName 数据库名
-- AND TABLE_NAME NOT LIKE 'vw%'   --> 作用:排除视图
SELECT DISTINCT TABLE_NAME FROM information_schema.COLUMNS WHERE COLUMN_NAME = 'columnName' AND TABLE_SCHEMA='dbName' AND TABLE_NAME NOT LIKE 'vw%';

-- 举例:我要查数据库[fengchen]中包含字段[id]的所有表
select distinct TABLE_NAME from information_schema.`COLUMNS` where COLUMN_NAME='id' and TABLE_SCHEMA='fengchen' and TABLE_NAME not like 'vm%';



二、查询指定数据库所有的表名
-- 通用模板
select table_name from information_schema.tables where table_schema='dbName' and table_type='base table';

-- 例如:我要查询数据库【fengchen】中的所有表
select table_name from information_schema.`TABLES` where TABLE_SCHEMA='fengchen' and TABLE_TYPE='base table';


三、查询指定数据库没有某字段的所有表
-- 通用模板
SELECT
	table_name 
FROM
	information_schema.TABLES 
WHERE
	table_schema = 'dbName' 
	AND table_type = 'base table' 
	AND TABLE_NAME NOT IN ( SELECT DISTINCT TABLE_NAME FROM information_schema.COLUMNS WHERE COLUMN_NAME = 'culumnName' AND TABLE_SCHEMA = 'dbName' AND TABLE_NAME NOT LIKE 'vw%' );


-- 例如:查询数据库【fengchen】中表里没有字段【id】的所有表
SELECT
	table_name 
FROM
	information_schema.`TABLES` 
WHERE
	TABLE_SCHEMA = 'fengchen' 
	AND TABLE_TYPE = 'base table' 
	AND TABLE_NAME NOT IN ( SELECT DISTINCT TABLE_NAME FROM information_schema.`COLUMNS` WHERE COLUMN_NAME = 'id' AND TABLE_SCHEMA = 'fengchen' AND TABLE_NAME NOT LIKE 'vm' )
  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值