標籤:完成 資料類型 t-sql 錯誤 rom 視窗 http sqlserver 9.png
修改資料列
在開發和生產過程中,列名的拼字錯誤或者列名的更改是需要操作資料表的,大多數情況下都是不需要修改的.
以下幾種情況下我們並不能直接修改資料列:
1、用於索引的列。
2、用於 CHECK、FOREIGN KEY、UNIQUE 或 PRIMARY KEY 約束的列。
3、與預設值(由 DEFAULT 關鍵字定義)相關聯的列,或綁定到預設對象的列。
4、綁定到規則的列。
使用SSMS資料庫管理工具修改列
1、串連資料庫,開啟要修改的資料庫,選擇資料表-》右鍵點擊-》選擇設計。
2、在新開啟的視窗視圖中-》點擊要修改的行-》可以修改列名、列類型、是否可空、屬性等-》修改完成點擊儲存按鈕(或者ctrl+s)。
使用T-SQL指令碼修改列修改列名
文法:exec sp_rename 表明.舊列名,新列名;
樣本:exec sp_rename ‘[test1].height6‘,‘height7‘;
修改列資料類型
文法:alter table 資料庫名.dbo.表名 alter column 列名 類型 [約束];
樣本:alter table [testss].dbo.[test1] alter column height7 int null;
修改列是否可空
文法:alter table 資料庫名.dbo.表名 alter column 列名 類型 約束;
樣本:alter table [testss].dbo.[test1] alter column height7 int not null;
修改列預設值
如果預設值不存在
文法:alter table 資料庫名.dbo.表名 add constraint 約束名 default 預設值 for 列名;
樣本:alter table [testss].dbo.[test1] add constraint df_h default 1 for height7;
如果預設值存在
文法:
--第一步判斷預設值否存在,如果存在就刪除,如果不存在則不刪除
if exists (select * from sys.check_constraints where object_id = object_id(預設值約束名) and parent_object_id = object_id(表名))
alter table 表名 drop constraint 預設值約束名
--第二步添加預設值
alter table 表名 add constraint 約束名 default 預設值 for 列名;
樣本:
--第一步判斷約束是否存在,如果存在就刪除,如果不存在則不刪除
if exists (select * from sys.check_constraints where object_id = object_id(‘df_h‘) AND parent_object_id = object_id(‘[testss].dbo.[test1]‘))
alter table [testss].dbo.[test1] drop constraint df_h
--第二步添加預設值
alter table [testss].dbo.[test1] add constraint df_h default 2 for height7;
總結
在開發或者生產資料庫中,資料列一經建好,不要輕易改動,隨意改動可能會引起資料庫的級聯操作失敗和代碼錯誤。
SQLServer修改資料列