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

MSSQL
金额阿拉伯数字转换为中文的自定义函数
关于SQL SERVER建立索引需要注意的问题
怎样获得SQL Server的优化性能?
收集SQL Server统计信息
不通过dsn访问sql server
简化SQL语句一例
数据库的数据挖掘概述(一)
数据库的数据挖掘概述(二)
谈数据库中模糊数据的输入与判别
ms sql删除重复的记录
SQL语句性能调整原则
通过HTTP访问SQL Server 2000数据库
使用SQL Server 将现有代码作为Web 服务提供
自定义用于ASP Web站点的SQL 7.0数据库(1)
自定义用于ASP Web站点的SQL 7.0数据库(2)
数据库查询结果的动态排序(1)
数据库查询结果的动态排序(2)
数据库查询结果的动态排序(3)
数据库查询结果的动态排序(4)
数据库查询结果的动态排序(5)

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 64 ::
收藏到网摘: 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