SQLServer 2000 실행 중인 데이터베이스 구조 조정

3607 단어
개발 과정 에서 데이터베이스 구조 구 조 는 반복 적 인 수정 이 불가피 하 다.가장 번 거 로 운 상황 은 개발 자 데이터 베이스 구조 가 수정 되 었 고 실제 응용 에서 데이터 베 이 스 는 대량의 데이터 가 있 습 니 다. 어떻게 데이터 베이스 에 영향 을 주지 않 는 상황 에서 데이터 구 조 를 업데이트 합 니까?물론 우 리 는 응용 데이터베이스 테이블 구조의 각 추가, 수정, 삭 제 된 필드 를 일일이 조정 할 수 있다. 이것 은 한두 개의 필드 에 있어 비교적 간단 하 다. 만약 에 변동 이 비교적 크다 면 이 과정 은 매우 번 거 로 울 것 이다.본 고 는 SQLServer 2000 T - SQL 문장 을 사용 하여 데이터베이스 구조 조정 을 하 는 것 을 소개 하고 여러분 께 편 의 를 드 리 고자 합 니 다.다음은 기 존 데이터베이스 테이블 HRUser 를 예 로 들 어 이런 조작 을 어떻게 하 는 지 설명 합 니 다.
HR_사용자 기 존 구조:

[UserId] [int] NOT NULL ,  Id,   
[UserName] [varchar] (50) NOT NULL ,     

1. 데이터베이스 에 새 필드 추가
지금 HRUser 에 필드 사용자 닉네임 [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' 

이때 저 희 는 데이터 베 이 스 를 응용 하 는 수정 문 구 를 구축 합 니 다. 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

 2. 데이터베이스 수정 필드 사용자 이름, 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

좋은 웹페이지 즐겨찾기