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

时间:2020-12-20 13:52:57

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