如何用一条sql语句列出某个表的所有字段?

zxj7611 2004-04-05 04:49:51
如上
...全文
322 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
shanfei 2004-04-05
  • 打赏
  • 举报
回复
select top 0 * from 表
tinghuyang 2004-04-05
  • 打赏
  • 举报
回复
up
luckds 2004-04-05
  • 打赏
  • 举报
回复
呵呵 我考虑的很简单 不好意思

SELECT * FROM 表名 where 1=2

就可以看到 这个表的所有字段了 谢谢
netcoder 2004-04-05
  • 打赏
  • 举报
回复
凑个热闹:
3、一个数据库所有的列信息保存在该库syscolumns系统里,使用下面的语句查询
方法一、

use 数据库名字
go
Select a.id as ID, c.name as 表名, a.name as 列名 ,b.name as 类型, a.length as 长度, a.scale as Scale, a.isnullable as 允许空 from syscolumns a, systypes b, sysObjects c where a.xtype = b.xusertype and a.id = c.id and c.xtype='U' and c.status>0 order by a.colorder

方法二、使用系统视图

use 数据库名字
go
select * from information_schema.columns

另外:sp_help '表名',可以获取此表的表结构等信息
Eric1006 2004-04-05
  • 打赏
  • 举报
回复
select * from syscolumns t,sysobjects tt where t.id=tt.id and tt.name='tablename'
LoveSQL 2004-04-05
  • 打赏
  • 举报
回复
select name from syscolumns where id=object_id('表名')
progress99 2004-04-05
  • 打赏
  • 举报
回复
zjcxc
--更详细的


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 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],''),
索引名称=isnull(h.索引名称,''),
索引顺序=isnull(h.排序,'')
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
left join sysproperties f on d.id=f.id and f.smallid=0
left join(--这部分是索引信息,如果要显示索引与表及字段的对应关系,可以只要此部分
select 索引名称=a.name,c.id,d.colid
,排序=case indexkey_property(c.id,b.indid,b.keyno,'isdescending')
when 1 then '降序' when 0 then '升序' end
from sysindexes a
join sysindexkeys b on a.id=b.id and a.indid=b.indid
join (--这里的作用是有多个索引时,取索引号最小的那个
select id,colid,indid=min(indid) from sysindexkeys
group by id,colid) b1 on b.id=b1.id and b.colid=b1.colid and b.indid=b1.indid
join sysobjects c on b.id=c.id and c.xtype='U' and c.name<>'dtproperties'
join syscolumns d on b.id=d.id and b.colid=d.colid
where a.indid not in(0,255)
) h on a.id=h.id and a.colid=h.colid
--where d.name='要查询的表' --如果只查询指定表,加上此条件
order by a.id,a.colorder

leeboyan 2004-04-05
  • 打赏
  • 举报
回复
select top 0 * from tablename
shuichangliu 2004-04-05
  • 打赏
  • 举报
回复
select a.name from syscolumns a
left join sysobjects b on a.id=b.id
where b.name=tableName
dafu71 2004-04-05
  • 打赏
  • 举报
回复
exec sp_columns 'tablename'
zjcxc 元老 2004-04-05
  • 打赏
  • 举报
回复
--这个更详细

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 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.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
left join sysproperties f on d.id=f.id and f.smallid=0
--where d.name='要查询的表' --如果只查询指定表,加上此条件
order by a.id,a.colorder
zjcxc 元老 2004-04-05
  • 打赏
  • 举报
回复
select case when c.colid=1 then object_name(c.id) else '' end as 表名
,c.name as 字段名
,t.name 数据类型
,c.prec as 长度
,p.value as 字段说明
,m.text as 默认值
from syscolumns c
inner join systypes t on c.xusertype=t.xusertype
left join sysproperties p on c.id=p.id and c.colid = p.smallid
left join syscomments m on c.cdefault=m.id
where c.id=object_id('表名')
and objectproperty(c.id,'IsUserTable')=1
HeartWing520 2004-04-05
  • 打赏
  • 举报
回复
SELECT c.name
FROM sysobjects t
JOIN syscolumns c
ON t.id = c.id
WHERE t.name = 'table name'

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧