SQLSERVER如何获取一个数据库中的所有表的名称、一个表中所有字段的名称

SQLSERVER如何获取一个数据库中的所有表的名称、一个表中所有字段的名称

1.查询数据库中的所有数据库名:

 SELECT Name FROM Master..SysDatabases ORDER BY Name

2.查询某个数据库中所有的表名:

 SELECT Name FROM SysObjects Where XType='U' ORDER BY Name

3.查询表结构信息:

复制代码
 1 SELECT (case when a.colorder=1 then d.name else null end) 表名,  
 2 a.colorder 字段序号,a.name 字段名,
 3 (case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then ''else '' end) 标识, 
 4 (case when (SELECT count(*) FROM sysobjects  
 5 WHERE (name in (SELECT name FROM sysindexes  
 6 WHERE (id = a.id) AND (indid in  
 7 (SELECT indid FROM sysindexkeys  
 8 WHERE (id = a.id) AND (colid in  
 9 (SELECT colid FROM syscolumns WHERE (id = a.id) AND (name = a.name)))))))  
10 AND (xtype = 'PK'))>0 then '' else '' end) 主键,b.name 类型,a.length 占用字节数,  
11 COLUMNPROPERTY(a.id,a.name,'PRECISION') as 长度,  
12 isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as 小数位数,(case when a.isnullable=1 then ''else '' end) 允许空,  
13 isnull(e.text,'') 默认值,isnull(g.[value], ' ') AS [说明]
14 FROM  syscolumns a 
15 left join systypes b on a.xtype=b.xusertype  
16 inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties' 
17 left join syscomments e on a.cdefault=e.id  
18 left join sys.extended_properties g on a.id=g.major_id AND a.colid=g.minor_id
19 left join sys.extended_properties f on d.id=f.class and f.minor_id=0
20 where b.name is not null
21 --WHERE d.name='要查询的表' --如果只查询指定表,加上此条件
22 order by a.id,a.colorder
复制代码

 

 

作者: Crazy大象
出处: http://www.cnblogs.com/ynbt/
关于作者:专注于.Net、WCF和移动互联网开发。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过ffy_wang@qq.com联系我,非常感谢。  
### 如何在SQL Server数据库中搜索所有以找到包含某个字段名的 为了在SQL Server 中查找包含特定字段名的所有,可以利用系统视图 `INFORMATION_SCHEMA.COLUMNS` 或者系统目录视图 `sys.columns` 和 `sys.tables` 来完成此操作。以下是具体的解决方案: #### 使用 INFORMATION_SCHEMA.COLUMNS 视图 通过查询 `INFORMATION_SCHEMA.COLUMNS` 系统视图,可以直接筛选出包含指定字段名的所有。 ```sql SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE '%目标字段名%' AND TABLE_CATALOG = 'CrabFarmDB'; -- 替换为目标数据库名称 ``` 上述脚本会返回所有包含匹配字段名的名[^1]。 #### 使用 sys.columns 和 sys.tables 系统视图 另一种方法是通过联合查询 `sys.columns` 和 `sys.tables` 系统视图来获取相同的结果。 ```sql SELECT t.name AS Table_Name FROM sys.columns c JOIN sys.tables t ON c.object_id = t.object_id WHERE c.name LIKE '%目标字段名%'; ``` 该语句同样能够检索到所有含有指定字段名的,并且更加灵活,因为它允许进一步扩展条件过滤逻辑[^3]。 如果还需要考虑性能优化或者更复杂的场景,则可以根据实际需求调整以上两种方式的具体实现细节。 #### 注意事项 当执行这类元数据查询时,请注意大小写敏感度以及通配符的位置可能影响最终结果集范围;另外,在生产环境中运行此类大规模扫描命令之前最好先评估其潜在负载影响。 ```python # Python 示例代码片段展示如何动态构建 SQL 查询字符串 (仅作参考用途) def generate_sql(field_name, db_name="CrabFarmDB"): sql_query = f""" SELECT TABLE_NAME FROM {db_name}.INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE '%{field_name}%' AND TABLE_CATALOG = '{db_name}'; """ return sql_query print(generate_sql('exampleField')) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值