開發過程中的資料庫結構結構,不可避免的會需要反覆的修改。最麻煩的情況莫過於開發者資料庫結構已經修改,而實際應用中資料庫又有大量資料,如何在不影響資料庫中資料情況下,更新資料結構呢?當然,我們可以手工對應用資料庫表結構各個新增、更正、刪除的字段一一
調整,這對一兩個字段來說,是比較簡單的,如果改動比較大的時候,這個過程將是非常繁瑣的。本文意在介紹使用
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'
goexec sp_addextendedproperty n'ms_description', n'使用者暱稱', n'user', n'dbo', n'table', n'hr_user', n'column', n'nickname'
goexec sp_addextendedproperty n'ms_description', n'使用者id', n'user', n'dbo', n'table', n'hr_user', n'column', n'userid'
goexec 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'
goexec 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
SQLSERVER2000技術規格
sqlserver2000技術規格 系統技術規格 每個伺服器最多可以允許16個sqlserver例項 每個例項可擁有 2147483467 個鎖 資料庫技術規格 sqlserver的資料庫大小1048516tb 每個資料庫可擁有的檔案組數32767 每個資料庫可擁有的檔案組數256 檔案大小 資料檔...
SQLSERVER2000啟動失敗
服務管理器中啟動sqlserver服務 彈出視窗的錯誤資訊是 本地計算機上的mssqlserver服務啟動後又停止了。一些服務自動停止,如果它們沒有什麼可做的,例如 效能日誌和警報 服務 1 解決方法 調整系統時間到你上一次能夠正常啟動的時間,啟動sqlserver服務,成功後,然後再把時間調回來。...
SQLSERVER2000技術規格
quote 系統技術規格 每個伺服器最多可以允許16個sqlserver例項 每個例項可擁有 2147483467 個鎖 資料庫技術規格 sqlserver的資料庫大小1048516tb 每個資料庫可擁有的檔案組數32767 每個資料庫可擁有的檔案組數256 檔案大小 資料檔案 32tb 夠大了吧,...