查询SQL SERVER表结构信息

最近很多朋友询问关于SQL Server数据库中表结构信息的问题,在这里示例说明。

SELECT
  表名  = case when a.colorder=1 then d.name else '' end,
  表说明 = case when a.colorder=1 then isnull(f.value,'') else '' end,
  字段名 = a.name,
  主键  = 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(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 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='your_table_name' --仅查询指定表时需要该行
   
  获取表内所有字段:

  SELECT name FROM syscolumns WHERE id=object_id('table1') ORDER BY colid

  列出库my中所有的用户建立的表名:

  SELECT * FROM my.dbo.sysobjects WHERE xtype='U' and status>0

  列出表cs的所有属性:

  SELECT * FROM sysobjects WHERE parent_obj = object_id( 'cs')

下边是关于sysobjects的介绍

  经常我们要查询表的索引,约束,相关性,触发器的属性,那么要知道sysobjects这个表的字段的意思,那么不管要查什么都没有问题!

  Sysobjects:SQL-SERVER的每个数据库内都有此系统表,它存放该数据库内创建的所有对象,如约束、默认值、日志、规则、存储过程等,每个对象在表中占一行。以下是此系统表的字段名称和相关说明。
  Name,id,xtype,uid,status:分别是对象名,对象ID,对象类型,所有者对象的用户ID,对象状态。
  xtype:对象类型。可以是下列对象类型中的一种:
   C = CHECK 约束
   D = 默认值或 DEFAULT 约束
   F = FOREIGN KEY 约束
   L = 日志
   FN = 标量函数
   IF = 内嵌表函数
   P = 存储过程
   PK = PRIMARY KEY 约束(类型是 K)
   RF = 复制筛选存储过程
   S = 系统表
   TF = 表函数
   TR = 触发器
   U = 用户表
   UQ = UNIQUE 约束(类型是 K)
   V = 视图
   X = 扩展存储过程
  当xtype='U' and status>0代表是用户建立的表,对象名就是表名,对象ID就是表的ID值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值