SQL Server表中添加新列并添加描述

注: sql server 2005 及以上支持. 版本估计是不支持(工作环境2005,2008).

工作需要, 需要向SQL Server 现有表中添加新列并添加描述. 从而有个如下存储过程. (先附上存储过程然后解释)

/********调用方法********** 作用: 添加列并添加列描述信息 调用: exec [SetColumnInfo] '表名', '列名', N'列说明,描述','列类型{默认:NVARCHAR(50)}','列默认值{默认:NULL}' ******************/ CREATEPROCEDURE [dbo].[SetColumnInfo] @tableName NVARCHAR(100) --表名 ,@columnName NVARCHAR(100) --列名 ,@columnInfo NVARCHAR(2000) --列说明,描述 ,@columnType NVARCHAR(100)='NVARCHAR(50)' --列类型 例如: NVARCHAR(50) ,@columnDefault NVARCHAR(100)='NULL' --列默认值 例如: NULL as begin IFNOTEXISTS ( SELECT * FROM syscolumns WHERE id = object_id(@tableName) AND NAME = @columnName ) BEGIN print 'exec:'+('ALTER TABLE ' + @tableName + ' ADD ' + @columnName + '' + @columnType + '' + @columnDefault) print 'Add['+@columnName+']column' EXEC ('ALTER TABLE ' + @tableName + ' ADD ' + @columnName + '' + @columnType + '' + @columnDefault) END IFEXISTS ( SELECT * FROM::fn_listextendedproperty('MS_Description', 'SCHEMA' --用户或用户定义类型 , N'dbo' --指定的 0 级对象类型的名称 , N'TABLE' --1 级对象的类型 , @tableName --指定的 1 级对象类型的名称 , N'COLUMN' --2 级对象的类型 , @columnName --指定的 2 级对象类型的名称 ) ) BEGIN print 'Edit['+@columnName+']Description' EXEC sys.sp_updateextendedproperty @name = N'MS_Description' --要添加的属性名称 ,@value = @columnInfo --将要与属性相关联的值 ,@level0type = N'SCHEMA' --用户或用户定义类型 ,@level0name = N'dbo' --指定的 0 级对象类型的名称 ,@level1type = N'TABLE' --1 级对象的类型 ,@level1name = @tableName --指定的 1 级对象类型的名称 ,@level2type = N'COLUMN' --2 级对象的类型 ,@level2name = @columnName --指定的 2 级对象类型的名称 END ELSE BEGIN print 'Add['+@columnName+']Description' EXEC sys.sp_addextendedproperty @name = N'MS_Description' --要添加的属性名称 ,@value = @columnInfo --将要与属性相关联的值 ,@level0type = N'SCHEMA' --用户或用户定义类型 ,@level0name = N'dbo' --指定的 0 级对象类型的名称 ,@level1type = N'TABLE' --1 级对象的类型 ,@level1name = @tableName --指定的 1 级对象类型的名称 ,@level2type = N'COLUMN' --2 级对象的类型 ,@level2name = @columnName --指定的 2 级对象类型的名称 END end GO

解释:

语句:

SELECT * FROM syscolumns WHERE id = object_id(@tableName) AND NAME = @columnName

作用: 查找表中是否存在指定的列. 如果存在则添加会报错.

ALTER TABLE 语句:

ALTER TABLE 语句用于在已有的表中添加、修改或删除列。

如需在表中添加列,请使用下列语法:

ALTERTABLE table_name ADD column_name datatype

要删除表中的列,请使用下列语法:

ALTERTABLE table_name DROPCOLUMN column_name

要改变表中列的数据类型,请使用下列语法:

ALTERTABLE table_name ALTERCOLUMN column_name datatype

属性的增删改:

fn_listextendedproperty: 获取扩展属性, 主要判断下属性是否存在如果存在则更新, 不存在则添加

sp_updateextendedproperty: 更新字段描述

sp_addextendedproperty : 添加字段描述

sp_dropextendedproperty: 删除字段描述

因为sp_dropextendedproperty上文存储过程没有出现特附上示例:

EXECsp_dropextendedproperty 'MS_Description','user',dbo,'table','表','column',a1

以上所述是小编给大家介绍的SQL Server表中添加新列并添加描述,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

时间: 2024-09-17 00:05:13

SQL Server表中添加新列并添加描述的相关文章

SQL Server表中添加新列并添加描述_MsSql

注: sql server 2005 及以上支持. 版本估计是不支持(工作环境2005,2008). 工作需要, 需要向SQL Server 现有表中添加新列并添加描述. 从而有个如下存储过程. (先附上存储过程然后解释) /********调用方法********** 作用: 添加列并添加列描述信息 调用: exec [SetColumnInfo] '表名', '列名', N'列说明,描述','列类型{默认:NVARCHAR(50)}','列默认值{默认:NULL}' ************

浅析SQL Server数据库中的伪列以及伪列的含义

原文:浅析SQL Server数据库中的伪列以及伪列的含义   本文出处:http://www.cnblogs.com/wy123/p/6833116.html      SQL Server中的伪列 下午看QQ群有人在讨论(非聚集)索引的存储,说,对于聚集索引表,非聚集索引存储的是索引键值+聚集索引键值:对于非聚集索引表,索引存储的是索引键值+RowId,这应该是一个常识,对此不作具体详细阐述.这里主要是提到的RowId引起了一点思考.那么,这个RowId是个什么玩意?能不能更加直观一点来看看

SQL Server 2008中的新日期数据类型

你是否曾经想在数据库中存储一个日期而没有时间部分,或者想存储一个时间值希望有更高的精度?在SQL Server 2008的介绍中,微软介绍了一些新的日期数据类允许你只存储一个日期.更高精度的时间值等.这些新的数据类型为你存储日期和时间相关信息提供了一些附加选项.在本篇文章中,我将介绍这些新的日期数据类型以及与旧版本的SQL Server中现有的数据类型进行比较. 回顾旧的日期数据类型 在我们开始讨论SQL Server 2008中新的日期数据类型之前,先来回顾一下SQL Server 2005中

在SQL Server数据库中求计算列和平均值

 严格来说,Having并不需要一个子表,但没有子表的Having并没有实际意义.如果你只需要一个表,那么你可以用Where子句达到一切目的.为进行实践,Having预先假定至少两个表和一个基于第二个表的合计函数. 下面是一个简单的例子:你想要订单总数超过25000美元的客户清单.你需要适当连接的三个表:Customer.SalesOrderHeader和SalesOrderDetail.然后,你求Detail的和,并将总数与25000美元进行比较.查看列表A. 查看列表A中的代码时,有一件事情

sql 一个表中 求一个列的数字总和-------高手指点下

问题描述 表名Stat列为idcomment15210320我想求comment这列的和在一个label里面显示出来stringSqlconn=System.Configuration.ConfigurationSettings.AppSettings["ConnString"];SqlConnectionconn=newSqlConnection(Sqlconn);conn.Open();stringSqlStrl="selectsum(comment)from[Stat]

揭秘SQL Server 2014有哪些新特性(3)-可更新列存储聚集索引_MsSql

简介      列存储索引其实在在SQL Server 2012中就已经存在,但SQL Server 2012中只允许建立非聚集列索引,这意味着列索引是在原有的行存储索引之上的引用了底层的数据,因此会消耗更多的存储空间,但2012中的限制最大的还是一旦将非聚集列存储索引建立在某个表上时,该表将变为只读,这使得即使在数据仓库中使用列索引,每次更新数据都变成非常痛苦的事.SQL Server 2014中的可更新聚集列索引则解决了该问题. 可更新聚集列存储索引?     聚集列存储索引的概念可以类比于

SQL Server数据库中伪列及伪列的含义详解

SQL Server中的伪列 下午看QQ群有人在讨论(非聚集)索引的存储,说,对于聚集索引表,非聚集索引存储的是索引键值+聚集索引键值:对于非聚集索引表,索引存储的是索引键值+RowId,这应该是一个常识,对此不作具体详细阐述. 这里主要是提到的RowId引起了一点思考. 那么,这个RowId是个什么玩意?能不能更加直观一点来看看RowId的信息?代表什么含义?这个当然也是可以的. Oracle中的表中有一个伪列的概念,就是在查询表的时候加上select rowid,* from Table,会

使用 SQL Server 2005中的 CLR 集成

本文描述了数据库应用程序开发人员和架构师如何利用 SQL Server 2005 中的 CLR 集成功能.本文对基于 CLR 的编程方式与 SQL Server 中支持的现有编程模型(如 TransacT-SQL 和扩展存储过程)进行了比较,并且强调了各自相对的优缺点.还提供了一组选择合适的编程替代方法的高级指导,以及一些示例和代码示例. 一.简介 Microsoft 通过宿主 Microsoft .NET Framework 2.0 公共语言运行库 (CLR),SQL Server 2005显

SQL Server 2005 中的批编译、重新编译和计划缓存问题(3)

两种特殊情况 与计划最优性相关的重新编译在下列两种特殊情况中的处理方式有所不同. 特殊情况 1:在空表或索引视图上创建的统计 SQL Server 2005 处理下列情况的方式不同于 SQL Server 2000.用户创建了一个空表 T.然后又在 T 一个或多个列上创建了一个统计 S.由于 T 为空,因此统计二进制大对象(直方图)为 NULL,但已经在 T 上创建了统计.假设在查询编译期间已发现 S 是"令人关注的".根据重新编译阈值的"500 行"规则,只有至少