如何增加字段描述,取得字段描述

本文介绍如何在SQLServer中使用扩展属性为字段添加、修改和删除描述信息,并提供了查询字段描述的方法。
如何增加字段描述,取得字段描述,我也有回答,也看到其他同仁的答案,这里整理一下!

  新增:我们知道在SQL Server 2000中,Microsoft添加了扩展属性,用于帮助用户在多个数据库对象上定义和操作用户定义的属性。

exec sp_addextendedproperty N'MS_Description', N'字段描述', N'user', N'dbo', N'table', N'表名', N'column', N'字段名'
GO

例如:EXEC sp_addextendedproperty N'MS_Description',N'地址',N'user', dbo,N'table', N'a', N'column', a_add
GO--我的表是a,要给字段a_add加上字段描述:地址

其他相关:

删除:

EXEC sp_dropextendedproperty N'MS_Description',N'user', dbo,N'table', N'表名', N'column', 字段名

修改:

EXEC   sp_updateextendedproperty N'MS_Description', N'字段描述', N'user', dbo,N'table',N'表名', 'column', 字段

至于查询出来,sql server有提供系统函数fn_listextendedproperty ():

--获取某一个字段的描述
SELECT   *
FROM   ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', '表名', 'column', default)--其他变数,按照你的要求你照写即可,只要表名换成你的
where objname = '字段名'

另外也可以自己查询系统表:

SELECT o.name AS tableName, c.name AS columnName, p.[value] AS Description
FROM sysproperties p INNER JOIN
      sysobjects o ON o.id = p.id INNER JOIN
      syscolumns c ON p.id = c.id AND p.smallid = c.colid
WHERE (p.name = 'MS_Description')
ORDER BY o.name
 

sql表列字段描述默认值删除字段 //删除表 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[JHCRM_Report_ss]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [JHCRM_Report_ss] //添表 if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Table1]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) create table [Table1] ([col1] int,[col2] int) //添字段 if not exists( select * from syscolumns where syscolumns.[name]='FNewObjectEnd' and syscolumns.[id]=(select id from dbo.sysobjects where id=object_id(N'[dbo].[jsc_financial]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) ) ALTER TABLE jsc_financial ADD FNewObjectEnd int--NULL --添先用项目结项数 go EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'先用项目结项数' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'jsc_financial', @level2type=N'COLUMN',@level2name=N'FNewObjectEnd' if not exists( select * from syscolumns where syscolumns.[name]='Record_Money' and syscolumns.[id]=(select id from dbo.sysobjects where id=object_id(N'[dbo].[JHCRM_Resource_Record_Main]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) ) ALTER TABLE JHCRM_Resource_Record_Main ADD Record_Money numeric(12, 2)--NULL --资源费用 go EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'资源费用' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'JHCRM_Resource_Record_Main', @level2type=N'COLUMN',@level2name=N'Record_Money' //删除字段 if not exists( select * from syscolumns where syscolumns.[name]=table_Name and syscolumns.[id]=(select id from dbo.sysobjects where id=object_id(N'[dbo].[tableName]')" and OBJECTPROPERTY(id, N'IsUserTable') = 1) ) ALTER TABLE table_Name DROP COLUMN tableName
### 静态字段与非静态字段的区别 #### 1. **生命周期** - 静态字段属于类本身,当程序载类时即被初始化,并在整个应用程序运行期间保持存在。即使没有任何类的实例存在,静态字段仍然有效[^2]。 - 非静态字段则隶属于具体的对象实例。只有在创建了一个类的对象后,这些字段才会被分配内存空间并初始化[^1]。 #### 2. **存储位置** - 静态字段存放在全局堆中,所有该类型的对象共享同一份数据副本[^2]。 - 非静态字段位于栈或托管堆上的各个独立对象内部,每个对象都有自己的一套字段值[^1]。 #### 3. **访问方式** - 访问静态字段只需通过类名即可完成,无需先建立任何实例。 - 若要操作非静态字段,则必须借助已存在的具体对象作为媒介来进行间接寻址[^1]。 --- ### 非静态成员需要对象引用的原因 在面向对象编程(OOP)里,非静态成员本质上是用来描述某一特定实体的状态或者行为特征。因为每一个单独的对象都可能拥有自己独特的属性组合或者是执行不同的动作序列,所以当我们试图获取某项非静态特性时,实际上是在询问某个确切个体的相关信息。如果没有指定明确的目标对象,计算机就无法知道到底是要查询哪一个实例的信息或是对其作出何种改变[^3]。 例如下面这段代码片段很好地诠释了这一点: ```csharp public class Car { public string Color { get; set; } // Non-static property public void Drive() { // Non-static method Console.WriteLine("Driving..."); } } // Correct usage with an object reference: Car myCar = new Car(); myCar.Color = "Red"; // Accessing non-static member via 'myCar' instance. myCar.Drive(); // Invoking non-static method on 'myCar'. ``` 在这里,“Color”是非静态属性,“Drive”也是非静态的方法。如果我们不通过像`myCar`这样的实际物体来调用他们的话,系统就不清楚我们要处理哪一辆车的颜色设定抑或是启动那辆车行驶的动作[^3]。 相比之下,如果是静态成员的话,由于他们是依附于整个类别之上而非个别物件之内,所以我们能够直接借由类别名称去取得他们的资讯或触发相应功能,而不必担心混淆不同个体之间差异性的状况发生。 --- ### 结论 综上所述,区分静态与非静态的关键在于前者关联到整体概念层面的事物表现形式;后者则是聚焦于单一实体的具体体现方面。而对于为何非静态成分必须要凭借对象参照才能够以运用的问题解答便是基于上述理由—唯有如此方能精准定位目标主体进而实施正确无误的操作流程[^1].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值