我是靠谱客的博主 文艺冥王星,最近开发中收集的这篇文章主要介绍查询数据库包含某个字段的所有表,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

​ 所以,总结如下:



一、查询指定库拥有某字段的表

-- 注释: 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' )

最后

以上就是文艺冥王星为你收集整理的查询数据库包含某个字段的所有表的全部内容,希望文章能够帮你解决查询数据库包含某个字段的所有表所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部