SQLServer修改數據列


修改數據列

在開發和生產過程中,列名的拼寫錯誤或者列名的更改是需要操作數據表的,大多數情況下都是不需要修改的.

以下幾種情況下我們並不能直接修改數據列:

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;

總結

在開發或者生產數據庫中,數據列一經建好,不要輕易改動,隨意改動可能會引起數據庫的級聯操作失敗和代碼錯誤。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM