DEFAULT約束添加規則 1、若在表中定義了預設值約束,用戶在插入新的數據行時,如果該行沒有指定數據,那麼系統將預設值賦給該列,如果我們不設置預設值,系統預設為NULL。 2、如果“預設值”欄位中的項替換綁定的預設值(以不帶圓括弧的形式顯示),則將提示你解除對預設值的綁定,並將其替換為新的預設值。 ...
DEFAULT約束添加規則
1、若在表中定義了預設值約束,用戶在插入新的數據行時,如果該行沒有指定數據,那麼系統將預設值賦給該列,如果我們不設置預設值,系統預設為NULL。
2、如果“預設值”欄位中的項替換綁定的預設值(以不帶圓括弧的形式顯示),則將提示你解除對預設值的綁定,並將其替換為新的預設值。
3、若要輸入文本字元串,請用單引號 (') 將值括起來;不要使用雙引號 ("),因為雙引號已保留用於帶引號的標識符。
4、若要輸入數值預設值,請輸入數值並且不要用引號將值括起來。
5、若要輸入對象/函數,請輸入對象/函數的名稱並且不要用引號將名稱括起來。
使用SSMS資料庫管理工具添加DEFAULT約束
1、連接資料庫,選擇數據表-》右鍵點擊-》選擇設計。
2、在表設計視窗中-》選擇數據列-》在列屬性視窗中找到預設值或綁定-》輸入預設值(註意預設值的數據類型和輸入格式)。
3、點擊保存按鈕(或者ctrl+s)-》刷新表-》再次打開表查看結果。
使用T-SQL腳本添加DEFAULT約束
當表結構已存在時
首先判斷表中是否存在預設約束,如果存在則先刪除預設約束再添加,如果不存在則直接添加。
語法:
use 資料庫
go
--判斷預設約束是否存在,如果存在則先刪除,如果不存在則直接添加
if exists(select * from sysobjects where name=約束名)
alter table 表名 drop constraint 約束名;
go
--給指定列添加預設約束
alter table 表名 add constraint 約束名 default(約束值) for 列名;
go
示例:
use [testss]
go
--判斷預設約束是否存在,如果存在則先刪除,如果不存在則直接添加
if exists(select * from sysobjects where name='defalut_height')
alter table [testss].[dbo].[test1] drop constraint defalut_height;
go
--給指定列添加預設約束
alter table [testss].[dbo].[test1] add constraint defalut_height default(160) for height;
go
創建表時添加預設約束
首先判斷表是否選在,如果存在則先刪除表再添加,如果不存在則直接添加。
語法:
--創建新表時添加預設約束
--資料庫聲明
use 資料庫名
go
--如果表已存在則先刪除表再創建,如果表不存在則直接創建
if exists(select * from sysobjects where name=表名 and type ='U')
drop table 表名;
go
--建表語法聲明
create table 表名
(
--欄位聲明
列名 列類型 identity(1,1) not null,
列名 列類型) null,
列名 列類型 null,
列名 列類型 null,
列名 列類型,
列名 列類型 constraint 約束名 default 預設值,
primary key clustered(列名 asc) with(ignore_dup_key=off) on [primary] --主鍵索引聲明
)on [primary]
--欄位註釋聲明
exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列說明' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';
exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列說明' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';
exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列說明' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';
exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列說明' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';
exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列說明' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';
go
示例:
--創建新表時添加預設約束
--資料庫聲明
use testss
go
--如果表已存在則先刪除表再創建,如果表不存在則直接創建
if exists(select * from sysobjects where name='test1' and type ='U')
drop table test1;
go
--建表語法聲明
create table test1
(
--欄位聲明
id int identity(1,1) not null,
name nvarchar(50) null,
sex nvarchar(50) null,
age nvarchar(50) null,
classid int,
height int constraint default_he default 166,
primary key clustered(id asc) with(ignore_dup_key=off) on [primary] --主鍵索引聲明
)on [primary]
--欄位註釋聲明
exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'id主鍵' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'id';
exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'姓名' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'name';
exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'性別' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'sex';
exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'年齡' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'age';
exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'班級id' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'classid';
go
DEFAULT約束優缺點
優點:
1、使用預設值可以減少代碼量,新增數據時可以不用寫新增預設值列,執行新增操作時時預設填充。
2、較有利於進行統計和分析,以及方便程式邏輯操作。
缺點:
1、使用不為NULL的預設值,占用了更多的存儲空間。