获取sqlserver数据库中所有库、表、字段名的方法

1.获取所有数据库名:
SELECT Name from Master..SysDatabases ORDER BY Name

2.获取所有表名:
SELECT Name from DatabaseName..SysObjects Where XType='U' ORDER BY Name
XType='U':表示所有用户表;
XType='S':表示所有系统表;

3.获取所有字段名:
SELECT Name from SysColumns WHERE id=Object_Id('TableName')

access :


如果表存在,如何得到这个表?
SELECT * from MSysObjects where name='ExamResultTime ' and type=1 and flags=0


//得到该数据库中所有的表名
SELECT name from MSysObjects where type=1 and flags=0

 

 

  1. 1、获取所有用户名:   
  2. Select name FROM Sysusers where status='2' and islogin='1'  
  3. islogin='1'   :表示帐户   
  4. islogin='0'   :表示角色   
  5. status='2'   :表示用户帐户   
  6. status='0'   :表示糸统帐户   
  7.   
  8. 2、获取所有数据库名:   
  9. Select Name FROM Master..SysDatabases orDER BY Name  
  10.   
  11. 3、获取所有表名:   
  12. Select Name FROM DatabaseName..SysObjects Where XType='U' orDER BY Name  
  13. XType='U'    :表示所有用户表;   
  14. XType='S'    :表示所有系统表;   
  15.   
  16. 4、获取所有字段名:   
  17. Select Name FROM SysColumns Where id=Object_Id('表名'')   
  18.   
  19. 5、获取数据库所有类型:   
  20. select name from systypes   
  21.   
  22. 6、获取主键字段:   
  23. Select  name FROM SysColumns Where id=Object_Id('表名'and colid=(select top keyno from sysindexkeys where id=Object_Id('表名'))   
  24.   
  25. 7、获取表字段的基本信息:   
  26.  程序代码   
  27. Select  
  28.   字段名=rtrim(b.name),   
  29.   主键=CASE WHEN h.id IS NOT NULL  THEN 'PK' ELSE '' END,   
  30.   字段类型=type_name(b.xusertype)+CASE WHEN b.colstat&1=1 THEN '[ID(' CONVERT(varcharident_seed(a.name))+','+CONVERT(varchar,ident_incr(a.name))+')]' ELSE '' END,   
  31.   长度=b.length,    
  32.   允许空=CASE b.isnullable WHEN THEN 'N' ELSE 'Y' END   
  33.   默认值=isnull(e.text, ''),   
  34.   字段说明=isnull(c.value, '')   
  35. FROM sysobjects a, syscolumns b   
  36. LEFT OUTER JOIN sysproperties ON b.id c.id AND b.colid c.smallid   
  37. LEFT OUTER JOIN syscomments ON b.cdefault e.id   
  38. LEFT OUTER JOIN (Select g.id, g.colid FROM sysindexes f, sysindexkeys Where (f.id=g.id)AND(f.indid=g.indid)AND(f.indid>0)AND(f.indid<255)AND(f.status&2048)<>0) ON (b.id=h.id)AND(b.colid=h.colid)   
  39. Where (a.id=b.id)AND(a.id=object_id('要查询的表'))  --要查询的表改成你要查询表的名称   
  40. orDER BY b.colid   
  41.   
  42.  程序代码   
  43. Select  
  44.   表名=case when a.colorder=1 then d.name else '' end,   
  45.   表说明=case when a.colorder=1 then isnull(f.value,''else '' end,   
  46.   字段序号=a.colorder,   
  47.   字段名=a.name,   
  48.   标识=case when COLUMNPROPERTY(a.id,a.name,'IsIdentity')=1 then '√' else '' end,   
  49.   主键=case when exists(Select FROM sysobjects where xtype='PK' and name in (Select name FROM sysindexes Where indid in(Select indid FROM sysindexkeys Where id=a.id AND colid=a.colid))) then '√' else '' end     
  50.   类型=b.name,   
  51.   字段长度=a.length,   
  52.   占用字节数=COLUMNPROPERTY(a.id,a.name,'PRECISION'),   
  53.   小数位数=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),   
  54.   允许空=case when a.isnullable=1 then '√'else '' end,   
  55.   默认值=isnull(e.text,''),   
  56.   字段说明=isnull(g.[value],'')   
  57. FROM syscolumns a   
  58. left join systypes on a.xusertype=b.xusertype   
  59. inner join sysobjects on (a.id=d.id)and(d.xtype='U')and(d.name<>'dtproperties')   
  60. left join syscomments on a.cdefault=e.id   
  61. left join sysproperties on (a.id=g.id)and(a.colid=g.smallid)   
  62. left join sysproperties on (d.id=f.id)and(f.smallid=0)   
  63. --where d.name='要查询的表'         --如果只查询指定表,加上此条件   
  64. order by a.id,a.colorder  
### 如何在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')) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值