获取SQL所有数据库名、所有表名、所有字段名

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')

下面是获取表名,大小,类型等

Select
(case when a.colorder=1 then d.name else '' end)表名, a.colorder 字段序号, a.name 字段名,
(case when COLUMNPROPERTY(a.id,a.name,'IsIdentity')=1 then '√'else '' end) 标识,
(case when (Select count(*) FROM sysobjects Where (name in
                 (Select name FROM sysindexes Where (id = a.id) AND (indid in
     (Select indid FROM sysindexkeys Where (id = a.id) AND (colid in
                       (Select colid FROM syscolumns Where (id = a.id) AND (name = a.name))))))) AND
  (xtype = 'PK'))>0 then '√' else '' end) 主键, b.name 类型, a.length 占用字节数,
       COLUMNPROPERTY(a.id,a.name,'PRECISION') as 长度,
       isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as 小数位数,
       (case when a.isnullable=1 then '√'else '' end) 允许空,
       isnull(e.text,'') 默认值,
       isnull(g.[value],'') AS 字段说明    
FROM  syscolumns  a left join systypes b on  a.xtype=b.xusertype
inner join sysobjects d on a.id=d.id  and  d.xtype='U' and  d.name<>'dtproperties'
left join syscomments e on a.cdefault=e.id
left join sysproperties g on a.id=g.id AND a.colid = g.smallid  
order by a.id,a.colorder

 

SQL 2005:

 

sysproperties SQL2005中應該用:sys.extended_properties  
如:  
Select    
表名               =   CASE   WHEN   A.COLORDER=1   THEN   D.NAME   ELSE   ' '   END,  
表說明           =   CASE   WHEN   A.COLORDER=1   THEN   ISNULL(F.VALUE, ' ')   ELSE   ' '   END,  
欄位序號       =   A.COLORDER,  
欄位名           =   A.NAME,  
標識               =   CASE   WHEN   COLUMNPROPERTY(   A.ID,A.NAME, 'ISIDENTITY ')=1   THEN   '√ 'ELSE   ' '   END,  
主鍵               =   CASE   WHEN   EXISTS(Select   1   FROM   SYSOBJECTS   Where   XTYPE= 'PK '   AND   PARENT_OBJ=A.ID   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,  
類型               =   B.NAME,  
佔用位元組數   =   A.LENGTH,  
長度               =   COLUMNPROPERTY(A.ID,A.NAME, 'PRECISION '),  
小數位數       =   ISNULL(COLUMNPROPERTY(A.ID,A.NAME, 'SCALE '),0),  
允許空           =   CASE   WHEN   A.ISNULLABLE=1   THEN   '√ 'ELSE   ' '   END,  
預設值           =   ISNULL(E.TEXT, ' '),  
欄位說明       =   ISNULL(G.[VALUE], ' ')  
FROM    
SYSCOLUMNS   A  
LEFT   JOIN    
SYSTYPES   B    
ON    
A.XUSERTYPE=B.XUSERTYPE  
INNER   JOIN    
SYSOBJECTS   D    
ON    
A.ID=D.ID     AND   D.XTYPE= 'U '   AND     D.NAME <> 'DTPROPERTIES '  
LEFT   JOIN    
SYSCOMMENTS   E    
ON    
A.CDEFAULT=E.ID  
LEFT   JOIN    
sys.extended_properties   G    
ON    
A.ID=G.major_id   AND   A.COLID=G.minor_id      
LEFT   JOIN    
sys.extended_properties   F    
ON    
D.ID=F.major_id   AND   F.minor_id=0  
ORDER   BY  

版权声明:
作者:Kiyo
链接:https://www.wkiyo.cn/html/2008-06/i571.html
来源:Kiyo's space
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>