向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[‘[email protected]+‘]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[‘[email protected]+‘]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[‘[email protected]+‘]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

时间: 07-10

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

将txt文件内容导入sql server 数据库表中

将类似这样的txt文件,如何导入到sql server 数据库表中呢? 第一步,在开始菜单中 找到 sql server 的导入和导出数据 然后,在数据源 的下拉框中 选择 平面文件源 基本都是点击 下一步 选择好要导入数据的数据库 与表: 编辑映射 : 点击下一步 执行 然后 完成 查看数据库 表 数据已经导入 成功

SQL语句 在一个表中插入新字段

SQL语句 在一个表中插入新字段: alter table 表名 add 字段名 字段类型 例: alter table OpenCourses add Audio varchar(50)alter table ListenCourses add Audio varchar(50)

SQL Server 判断表中是否存在某字段

原文:SQL Server 判断表中是否存在某字段 功能:判断表中是否存在某字段,若不存在,则新增该字段 语句: IF NOT EXIST (SELECT 1 FROM [DATABASE].SYS.SYSCOLUMNS WHERE ID=OBJECT_ID([DATABASE].[SCHEMA].[TABLENAME]) AND NAME='COLUMN_NAME') ALTER TABLE [TABLENAME] ADD [COLUMN_NAME] [COLUMN_TYPE] p.s. 之前

【转】用sql语句创建表的时候给列指定说明(描述)

用sql语句创建表的时候,如何给列指定说明.主要用到sp_addextendedproperty这个存储过程. 语法   sp_addextendedproperty     [ @name = ] { 'property_name' }     [ , [ @value = ] { 'value' }         [ , [ @level0type = ] { 'level0_object_type' }                     , [ @level0name = ] {

sql Server获取表中今天、昨天、本周、上周、本月、上月等数据

在做Sql Server开发的时候有时需要获取表中今天.昨天.本周.上周.本月.上月等数据,这时候就需要使用DATEDIFF()函数及GetDate()函数了.DATEDIFF ( datepart , startdate , enddate )释义:计算时间差datepare值:year | quarter | month | week | day | hour | minute | second | millisecondstartdate:开始日期enddate :结束日期GetDate(

Sql server 进行表中数据复制转移遇到的问题

前段时间的工作中,公司要求对sqlserver 中某些初始化的基础数据完全复制到另一个相同表表结构的数据表中,当时第一反应写 sql语句如下:Insert into Table1(Filed1,Filed2)select Filed1,Filed2 from Table2 .执行成功!!! 仔细一查看,数据全乱套了(Id是自增Id,但Id 不一定是连续的). 于是采用B方案: 把Table1 中Id的自增取消,先把数据插入进去再重新加上自增长(问题解决). 但是 当 Table1 是存储过程动态

sql将同一个表中的两列Int数据相加,有些数据是空的

不能这样加! 有些数据为null吧,null+任何值=null 如这句话就不行 update HY_MYGGCYSWCQKB set HY_MYGGCYSWCQKB.Sj_By_Sr=HY_MYGGCYSWCQKB.Sj_By_Sr+HY_MYGGCYSWCQKB.Sj_By_Sr_Tz-HY_MYGGCYSWCQKB.Sj_By_Sr_Tj; 如果有一列未Null,相加结果就为null. 正常来说可以, SELECT total + moneyFROM 表 就可以了.但是:有些数据是空的情况下

在Sql Server数据表中使用Guid类型的列及设置Guid类型的默认值

1.列的类型为uniqueidentifier 2.列的默认值可以设为newid() 3.程序里字符转换成guid string xxx="xxxx-xxxx-xxx";  guid nn= new guid(xxx)

如何将sql server 数据库表中的某一列的某一字符替换成需要的字符

实例:select   replace(chexing, '微型车', '0001')   from   T_MODEL chexing:要替换的字段名称. 微型车:要被替换的内容. 0001:替换后的内容. 注:replace适用于非:text,ntext字段!!