修改數據列 在開發和生產過程中,列名的拼寫錯誤或者列名的更改是需要操作數據表的,大多數情況下都是不需要修改的. 以下幾種情況下我們並不能直接修改數據列: 1、用於索引的列。 2、用於 CHECK、FOREIGN KEY、UNIQUE 或 PRIMARY KEY 約束的列。 3、與預設值(由 DEFA ...
修改數據列
在開發和生產過程中,列名的拼寫錯誤或者列名的更改是需要操作數據表的,大多數情況下都是不需要修改的.
以下幾種情況下我們並不能直接修改數據列:
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;
總結
在開發或者生產資料庫中,數據列一經建好,不要輕易改動,隨意改動可能會引起資料庫的級聯操作失敗和代碼錯誤。