得到数据库所有表名和字段

来源:互联网 发布:淘宝紫米商学院怎么样 编辑:程序博客网 时间:2024/04/19 01:00

 

Select 
(
case when a.colorder=1 then d.name else '' end) N'表名',
a.colorder N
'字段序号',
a.name N
'字段名',
(
case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then ''else '' end) N'标识',
(
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) N'主键',
b.name N
'类型',
a.length N
'占用字节数',
COLUMNPROPERTY(a.id,a.name,'PRECISION'as N'长度',
isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0as N'小数位数',
(
case when a.isnullable=1 then ''else '' end) N'允许空',
isnull(e.text,'') N'默认值',
isnull(g.[value],''AS N'字段说明'
--into ##tx

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 object_name(a.id),a.colorder

---什么都不用管,把代码放在[查询分析器]执行一下,就全懂了.呵呵. 好用,就是没得商量

select so.name,sc.name,sp.value from sysproperties sp
inner join syscolumns sc 
on sp.id = sc.id and sp.smallid = sc.colid
left join sysobjects so
on so.id = sc.id