查找数据库中含有某字段的所有表

来源:互联网 发布:淘宝100多的正版win10 编辑:程序博客网 时间:2024/05/17 03:20

--含有某字段的所有表

select a.[name] 表名from sysobjects a,

(

      select [id],count(*) num from syscolumns

      where [name] =[columnName]

      group by [id]

) b where a.[id]=b.[id]

 

 

--同时含有某些字段的所有表

select a.[name] from sysobjects a

left join

(

select [id],count(*) num from syscolumns where [name]

in([columnName1], [columnName2],) group by [id] having count(*)>1

) b on a.[id]=b.[id]

where b.id is not null

sysobjects

在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。只有在 tempdb 内,每个临时对象才在该表中占一行。

列名

数据类型

描述

name

sysname

对象名。

Id

int

对象标识号。

xtype

char(2)

对象类型。可以是下列对象类型中的一种:

C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
L = 日志
FN = 标量函数
IF = 内嵌表函数
P = 存储过程
PK = PRIMARY KEY 约束(类型是 K
RF = 复制筛选存储过程
S = 系统表
TF = 表函数
TR = 触发器
U = 用户表
UQ = UNIQUE 约束(类型是 K
V = 视图
X = 扩展存储过程

 

 

syscolumns

每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行。该表位于每个数据库中。

列名

数据类型

描述

name

sysname

列名或过程参数的名称。

id

int

该列所属的表对象 ID,或与该参数关联的存储过程 ID

xtype

tinyint

systypes 中的物理存储类型。

 

原创粉丝点击