SQLServer 2000の運転中のデータベース構造を調整する。
3377 ワード
開発中のデータベース構造は、繰り返し修正することが避けられない。最も面倒なのは開発者のデータベース構造がすでに修正されたことに勝るものではないです。実際のアプリケーションではデータベースに大量のデータがありますが、どのようにデータベースの中のデータに影響しないで、データ構造を更新しますか?もちろん、私達は手動でデータベーステーブル構造を追加し、訂正し、削除したフィールドを一つ一つ調整できます。これは一つ二つのフィールドにとって、比較的簡単です。もし変更が大きい場合、このプロセスは非常に煩雑です。この文章はSQLServer 2000 T-SQL文を使ってデータベース構造の調整を行うもので、皆様に便利なものを提供したいと思います。以下は既存のデータベーステーブルHR_である。Userを例にとって、このような操作のやり方を説明します。
HR_User既存構造:
今は、HR_が必要です。Userにフィールドユーザーのニックネーム「NickName」「varrhar」(50)は空ではなく、生年月日「Birthday」「datetime」は空ではない。
この二つのフィールドを開発データベースに追加しました。クエリーアナライザまたは企業マネージャで新しいテーブルの構成文を作成します。
UserName、NickNameフィールドの長さが足りないことが分かりました。100に変更する必要があります。
HR_User既存構造:
[UserId] [int] NOT NULL , Id,
[UserName] [varchar] (50) NOT NULL ,
一、データベースに新しいフィールドを追加します。今は、HR_が必要です。Userにフィールドユーザーのニックネーム「NickName」「varrhar」(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 Table Table 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