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 列名;
示例:
use [testss]
if exists(select * from sysobjects where name='defalut_height')
alter table [testss].[dbo].[test1] drop constraint defalut_height;
alter table [testss].[dbo].[test1] add constraint defalut_height default(160) for height;
建立表時添加預設限制
首先判斷表是否選在,如果存在則先删除表再添加,如果不存在則直接添加。
--建立新表時添加預設限制
--資料庫聲明
use 資料庫名
--如果表已存在則先删除表再建立,如果表不存在則直接建立
if exists(select * from sysobjects where name=表名 and type ='U')
drop table 表名;
--建表文法聲明
create table 表名
(
--字段聲明
列名 列類型 identity(1,1) not 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'列名';
use testss
if exists(select * from sysobjects where name='test1' and type ='U')
drop table test1;
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] --主鍵索引聲明
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';
DEFAULT限制優缺點
優點:
1、使用預設值可以減少代碼量,新增資料時可以不用寫新增預設值列,執行新增操作時時預設填充。
2、較有利于進行統計和分析,以及友善程式邏輯操作。
缺點:
1、使用不為NULL的預設值,占用了更多的存儲空間。