SQL Server添加字段设置默认值,Null和非Null字段的区别

时间:2022-06-01 21:11:59

SQL Server添加设置默认值的字段:

ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
[WITH VALUES]

对于旧的数据,NULL和非NULL字段的区别是:

  • NULL:如果添加的字段可以为NULL,那么对于旧的f数据,新字段的值为NULL
  • 非NULL:如果添加的字段为非NULL,那么对于旧的数据,新字段的值为设置的默认值。

示例

创建了demo表,并且插入一条记录,id=1.

create table demo (id int not null);
insert into demo values (1);

添加null字段f1,设置默认值为"f1"

alter table demo add f1 nchar(10) null default 'f1';

查询demo表

select * from demo;

结果为:
SQL Server添加字段设置默认值,Null和非Null字段的区别

新增可以为NULL的字段f1的值为NULL,不是默认值"f1"。

插入新的记录id=2,并查询

insert into demo(id) values (2);
select * from demo;

结果为:
SQL Server添加字段设置默认值,Null和非Null字段的区别

新插入的字段,f1没有设置值,值为默认值"f1"。

新增非NULL字段f2,设置默认值为"f2"。

alter table demo add f2 nchar(10) not null default 'f2';
select * from demo;

查询demo表结果为:
SQL Server添加字段设置默认值,Null和非Null字段的区别

之前插入的两条数据,新增字段f2的值为默认值"f2"。