標籤:優缺點 sts @Value for 技術分享 var clu sch 分享
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的預設值,佔用了更多的儲存空間。
SQLServer值DEFAULT約束