如何调整2000运行中的数据库结构,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

开发过程中的数据库结构结构,不可避免的会需要反复的修改。最麻烦的情况莫过于开发者数据库结构已经修改,而实际应用中数据库又有大量数据,如何在不影响 数据库中数据情况下,更新数据结构呢?当然,我们可以手工对应用数据库表结构各个添加、更正、删除的字段一一调整,这对一两个字段来说,是比较简单的,如 果改动比较大的时候,这个过程将是非常繁琐的。下面以现有数据库表HR_User为例,讲解如何进行这类操作。

HR_User现有结构:

[UserId][int]NOTNULL,用户Id,主键[UserName][varchar](50)NOTNULL,用户姓名

一、数据库添加新字段

现在,需要在HR_User中添加字段用户昵称[NickName] [varchar] (50) 不为空,出生日期[Birthday] [datetime] 不为空。在开发数据库中我们已经添加了这两个字段,在查询分析器或者企业管理器中生成新表的构造语句如下:

ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[HR_User]')andOBJECTPROPERTY(id,N'IsUserTable')=1)droptable[dbo].[HR_User]GOCREATETABLE[dbo].[HR_User]([UserId][int]NOTNULL,[UserName][varchar](50)COLLATEChinese_PRC_CS_ASNOTNULL,[NickName][varchar](50)COLLATEChinese_PRC_CS_ASNOTNULL,[Birthday][datetime]NOTNULL)ON[PRIMARY]GOALTERTABLE[dbo].[HR_User]ADDCONSTRAINT[DF_HR_User_UserId]DEFAULT(0)FOR[UserId],CONSTRAINT[DF_HR_User_UserName]DEFAULT('')FOR[UserName],CONSTRAINT[DF_HR_User_NickName]DEFAULT('')FOR[NickName],CONSTRAINT[DF_HR_User_Birthday]DEFAULT(getdate())FOR[Birthday],CONSTRAINT[PK_HR_User]PRIMARYKEYCLUSTERED([UserId])ON[PRIMARY]GOexecsp_addextendedpropertyN'MS_Description',N'出生日期',N'user',N'dbo',N'table',N'HR_User',N'column',N'Birthday'GOexecsp_addextendedpropertyN'MS_Description',N'用户昵称',N'user',N'dbo',N'table',N'HR_User',N'column',N'NickName'GOexecsp_addextendedpropertyN'MS_Description',N'用户Id',N'user',N'dbo',N'table',N'HR_User',N'column',N'UserId'

这时候,我们来构建应用数据库的修改语句,T-SQL修改表结构添加新字段语法为Alter TABLE TableName Add,这样我们要添加两个字段就应该这样写:

AlterTABLE[dbo].[HR_User]Add[NickName][varchar](50)COLLATEChinese_PRC_CS_ASNOTNULLDEFAULT(''),[Birthday][datetime]NOTNULLDEFAULT(getdate())GO

其实中间的语句只是简单的拷贝创建语句中对应两个字段的两句。再加上两句添加描述的语句,就大功告成。

execsp_addextendedpropertyN'MS_Description',N'出生日期',N'user',N'dbo',N'table',N'HR_User',N'column',N'Birthday'GOexecsp_addextendedpropertyN'MS_Description',N'用户昵称',N'user',N'dbo',N'table',N'HR_User',N'column',N'NickName'GO

二、数据库修改字段现在我们发现UserName、NickName字段长度不够,需要修改为100

AlterTable[HR_User]AlterColumn[UserName][varchar](100)COLLATEChinese_PRC_CS_ASNOTNULLGOAlterTable[HR_User]AlterColumn[NickName][varchar](100)COLLATEChinese_PRC_CS_ASNOTNULLGO

看完上述内容,你们掌握如何调整2000运行中的数据库结构的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!