当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 调整SQLServer2000运行中数据库结构

MSSQL
将表数据生成SQL脚本的存储过程和工具
初学者必读:经典的数据库记录分页代码
使用SQL Server 2008管理非结构化数据
利用索引提高SQL Server数据处理的效率
SQL Server数据库内存会不断增加的问题分析
面向对象设计过程中必须遵守的相关准则
SQL Server 2005如何设置多字段做关键字
SQL Server 2005数据库中表的递归查询
SQL Server中使用DTS设计器进行数据转移
在查询分析器理启动或停止SQL Agent服务
教你快速掌握SQL语言中游标的使用技巧
将SQL Server中所有表的列信息显示出来
使用SQL语句快速获取SQL Server数据字典
Sql Server 2005中的架构用户登录和角色
如何保存数据库连接参数代码及步骤详解
如何使用SQL Server数据库嵌套子查询
SQL Server从安装到建库为新手寻找捷径
课程讲解 如何使用SQL Server校勘功能
数据库理论:学习基于SQL数据库的算法
教你使用SQL Server数据库进行网络链接

MSSQL 中的 调整SQLServer2000运行中数据库结构


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 141 ::
收藏到网摘: n/a

 

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

HR_User现有结构:
 [UserId] [int] NOT NULL ,用户Id,主键
 [UserName] [varchar] (50) NOT NULL ,用户姓名

 一、数据库添加新字段
 现在,需要在HR_User中添加字段用户昵称[NickName] [varchar] (50) 不为空,出生日期[Birthday] [datetime] 不为空。
 在开发数据库中我们已经添加了这两个字段,在查询分析器或者企业管理器中生成新表的构造语句如下:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[HR_User]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[HR_User]
GO

CREATE TABLE [dbo].[HR_User] (
 [UserId] [int] NOT NULL ,
 [UserName] [varchar] (50) COLLATE Chinese_PRC_CS_AS NOT NULL ,
 [NickName] [varchar] (50) COLLATE Chinese_PRC_CS_AS NOT NULL ,
 [Birthday] [datetime] NOT NULL
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[HR_User] ADD
 CONSTRAINT [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] PRIMARY KEY  CLUSTERED
 (
  [UserId]
 )  ON [PRIMARY]
GO


exec sp_addextendedproperty N'MS_Description', N'出生日期', N'user', N'dbo', N'table', N'HR_User', N'column', N'Birthday'
GO
exec sp_addextendedproperty N'MS_Description', N'用户昵称', N'user', N'dbo', N'table', N'HR_User', N'column', N'NickName'
GO
exec sp_addextendedproperty N'MS_Description', N'用户Id', N'user', N'dbo', N'table', N'HR_User', N'column', N'UserId'
GO
exec sp_addextendedproperty N'MS_Description', N'用户姓名', N'user', N'dbo', N'table', N'HR_User', N'column', N'UserName'
GO
 这时候,我们来构建应用数据库的修改语句,T-SQL修改表结构添加新字段语法为Alter TABLE TableName Add,这样我们要添加两个字段就应该这样写:
Alter TABLE [dbo].[HR_User] Add
 [NickName] [varchar] (50) COLLATE Chinese_PRC_CS_AS NOT NULL DEFAULT(''),
 [Birthday] [datetime] NOT NULL DEFAULT(getdate())
GO
 其实中间的语句只是简单的拷贝创建语句中对应两个字段的两句。再加上两句添加描述的语句,就大功告成。
exec sp_addextendedproperty N'MS_Description', N'出生日期', N'user', N'dbo', N'table', N'HR_User', N'column', N'Birthday'
GO
exec sp_addextendedproperty N'MS_Description', N'用户昵称', N'user', N'dbo', N'table', N'HR_User', N'column', N'NickName'
GO
 二、数据库修改字段
 现在我们发现UserName、NickName字段长度不够,需要修改为100
Alter Table [HR_User] Alter
 Column [UserName] [varchar] (100) COLLATE Chinese_PRC_CS_AS NOT NULL
GO

Alter Table [HR_User] Alter
 Column [NickName] [varchar] (100) COLLATE Chinese_PRC_CS_AS NOT NULL
GO