MSSQL获取表结构信息

30 篇文章 0 订阅
1 篇文章 0 订阅
如下代码能正常运行,都是网上查找资料最后拼凑总结出来的。条件就自己加吧。网上好像也有不少类型的东西,这里留着以备不时只需! 
复制代码 代码如下:
/************************************************************
 * Code formatted by SoftTree SQL Assistant ?v5.0.97
 * Time: 2013-3-1 23:09:24
 ************************************************************/

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'), 0) AS 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 sys.extended_properties g
            ON  a.id = g.major_id
            AND a.colid = g.minor_id
ORDER BY
       OBJECT_NAME(a.id),
       a.colorder


sysproperties表的详解:

1、表名:sqlserver的注释表,每个数据库都有,包括表和字段的注释,表或者列的注释都会存储,没有注释不存储。 
2、字段: 
id:表的ID或者是列的ID 
smallid:列的顺序,排序用 
type:3 表,4字段,可能还有约束什么的,还没有测试出 
name:统一的MS_Description 
value:描述

如需修改(转载部分)

如果需要更新 此表的 内容 需要 开启 [允许对系统目录直接进行修改] ,否则 改不了 系统表

如果 不开启 此 功能 ,那么也可以 使用 存储过程[sp_addextendedproperty] 来 添加\更新\删除 表和字段的描述 用法如下

--创建表 
Create Table 表(a1 varchar(10),a2 char(2))

--为表 添加 描述信息 : 第二个参数为 [描述] 第六个参数为 [表名] 
EXECUTE sp_addextendedproperty N'MS_Description', '人员信息表', N'user', N'dbo', N'table', N'表', NULL, NULL

--为表 更新 描述信息 : 第二个参数为 [描述] 第六个参数为 [表名] 
EXECUTE sp_updateextendedproperty 'MS_Description',N'adsfasfdas', N'user', N'dbo', N'table', N'表', NULL, NULL

--为表 删除 描述信息 : 第五个参数为 [表名] 
EXEC sp_dropextendedproperty 'MS_Description',N'user', N'dbo', N'table', N'表', NULL, NULL

--字段的 添加 更新 删除 方法 
--为 字段a1 添加 描述信息: 第二个参数为 [描述] 第六个参数为 [表名] 第八个参数为 [字段名称] 
EXECUTE sp_addextendedproperty N'MS_Description', '姓名', N'user', N'dbo', N'table', N'表', N'column', N'a1'

--更新 字段 a1 的描述属性:第二个参数为 [描述] 第六个参数为 [表名] 第八个参数为 [字段名称] 
EXEC sp_updateextendedproperty 'MS_Description','字段1dd','user',dbo,'table','表','column',N'a1'

--删除 字段 a1 的描述属性:第五个参数为 [表名] 第七个参数为 [字段名称] 
EXEC sp_dropextendedproperty 'MS_Description','user',dbo,'table','表','column','a1'

--删除测试 
Drop Table 表 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值