5.4 DEFAULT约束

在实际操作的过程中,有时希望数据库系统能为某些没有确定值的字段赋予一个默认值,而不是设为NULL,这就需要为字段创建一个DEFAULT约束,DEFAULT约束也被称为默认值约束。注意,一个字段只有在不可为空的时候才能设置DEFAULT约束。

5.4.1 创建表时创建DEFAULT约束

数据表的DEFAULT约束可以在创建表时创建,一般添加DEFAULT约束的字段有两种情况,一种是该字段不能为空,另一种是该字段添加的值总是某一个固定值。

1. 使用CREATE语句创建

定义DEFAULT约束的语法格式如下。

主要参数介绍如下。

  • DEFAULT:默认值约束的关键字,它通常放在字段的数据类型之后。
  • constant_expression:常量表达式,该表达式可以直接是一个具体的值,也可以是通过表达式得到的一个值,但是,这个值必须与该字段的数据类型相匹配。

提示:除了可以为表中的一个字段设置DEFAULT约束,还可以为表中的多个字段同时设置DEFAULT约束,不过,每一个字段只能设置一个DEFAULT约束。

实例8:在数据库test中,创建一个账号信息表,为账号级别字段添加一个默认值“普通”,在“查询编辑器”窗口中输入以下语句。

单击“执行”按钮,即可完成创建DEFAULT约束的操作,如图5-41所示。打开账号表的设计界面,选择添加默认值的列,即可在“列属性”列表中查看添加的DEFAULT约束信息,如图5-42所示。

图5-41 添加DEFAULT约束

图5-42 “列属性”列表界面

2. 以图形向导方式创建DEFAULT约束

下面以创建水果信息表并创建DEFAULT约束为例,来介绍以图形向导方式添加DEFAULT约束的方法,具体创建过程可分为如下几步。

(1)登录到SQL Server 2017数据库,在“对象资源管理器”窗口中打开要创建数据表的数据库节点,选择表节点,右击,在弹出的快捷菜单中选择“新建”→“表”命令,进入新建表工作界面,如图5-43所示。

(2)录入水果信息表的字段信息,如图5-44所示。

(3)单击“保存”按钮,打开“选择名称”对话框,在其中输入表名“水果信息表”,单击“确定”按钮,即可保存创建的数据表,如图5-45所示。

图5-43 新建表设计界面

图5-44 录入水果信息表字段内容

图5-45 “选择名称”对话框

(4)选择需要添加DEFAULT约束的列,这里选择“水果产地”列,展开列属性界面,如图5-46所示。

(5)选择“默认值或绑定”选项,在右侧的文本框中输入DEFAULT约束的值,这里输入“海南”,如图5-47所示。

(6)单击“保存”按钮,即可完成添加数据表时添加DEFAULT约束的操作,如图5-48所示。

图5-46 展开列属性界面

图5-47 输入默认值约束的值

图5-48 添加默认值约束

提示:在“对象资源管理器”中,给表中的列设置默认值时,可以对字符串类型的数据省略单引号,如果省略了单引号,系统会在保存表信息时自动为其加上单引号的。

5.4.2 修改表时创建DEFAULT约束

如果创建数据表时没有添加DEFAULT约束,我们可以使用ALTER语句或在SQL Server Management Studio中对现有表添加默认值约束。

1. 使用ALTER语句添加DEFAULT约束

修改表时添加DEFAULT约束可以通过ALTER TABLE语句来完成,具体的语法格式如下。

      ALTER TABLE table_name
      ADD. CONSTRAINT default_name DEFAULT constant_expression FOR col_name;

主要参数介绍如下。

  • table_name:表名,它是要添加DEFAULT约束列所在的表名。
  • default_name:DEFAULT约束的名字,该名字可以省略,省略后系统将会为该DEFAULT约束自动生成一个名字,系统自动生成的DEFAULT约束名字是通过df_表名_列名_随机数这种格式。
  • DEFAULT:DEFAULT约束的关键字,如果省略DEFAULT约束的名字,那么DEFAULT关键字直接放到ADD后面,同时去掉CONSTRAINT。
  • constant_expression:常量表达式,该表达式可以直接是一个具体的值,也可以是通过表达式得到的一个值,但是,这个值必须与该字段的数据类型相匹配。
  • col_name:设置DEFAULT约束的列名。

实例9:水果信息表创建完成后,下面给水果的备注说明列添加DEFAULT约束,将其默认值设置为“保质期为2天,请注意冷藏!”。

在“查询编辑器”窗口中输入如下语句。

      ALTER TABLE 水果信息表
      ADD CONSTRAINT df_备注说明 DEFAULT '保质期为2天,请注意冷藏!' FOR 备注信息;

单击“执行”按钮,即可完成在DEFAULT约束的添加操作,如图5-49所示。打开水果信息表的设计界面,选择添加默认值的列,即可在“列属性”列表中查看添加的DEFAULT约束信息,如图5-50所示。

图5-49 添加默认值约束

图5-50 查看添加的默认值约束

2. 以图形向导方式添加默认值约束

在SQL Server Management Studio中,用户可以以图形向导方式添加默认值约束,添加过程可以分为如下几步。

(1)选择需要添加默认值约束的表,这里选择账号表,右击,在弹出的快捷菜单中选择“设计”命令,进入表的设计工作界面,如图5-51所示。

(2)选择要添加默认值约束的列,这里选择用户密码列,打开列属性界面,在“默认值或绑定”选项后,输入默认值约束的值,这里输入“123456”,表示账号用户密码默认为“123456”,单击“保存”按钮,即可完成添加默认值约束的操作,如图5-52所示。

图5-51 水果信息表设计界面

图5-52 输入默认值约束的值

5.4.3 删除表中的DEFAULT约束

当表中的某个字段不再需要默认值时,可以将默认值约束删除掉,这个操作非常简单。

1. 使用DROP语句删除

使用DROP语句删除默认值约束的语法格式如下。

      ALTER TABLE table_name
      DROP CONSTRAINT default_name;

主要参数介绍如下。

  • table_name:表名,它是要删除默认值约束列所在的表名。
  • default_name:默认值约束的名字。

实例10:将水果信息表中添加的名称为“df_备注说明”默认值约束删除,在“查询编辑器”窗口中输入如下语句。

      ALTER TABLE 水果信息表
      DROP CONSTRAINT df_备注说明;

单击“执行”按钮,即可完成删除默认值约束的操作,如图5-53所示。打开水果信息表的设计界面,选择删除默认值的列,即可在“列属性”列表中看到该列的默认值约束信息已经被删除,如图5-54所示。

图5-53 删除默认值约束

图5-54 列属性工作界面

2. 以图形向导方式删除默认值约束

在SQL Server Management Studio工作界面中,删除默认值约束与添加默认值约束很相像,只需要将默认值或绑定右侧的值清空即可。

(1)选择需要删除默认值约束的工作表,这里选择账号表,右击,在弹出的快捷菜单中选择“设计”命令,进入表的设计工作界面,选择需要删除默认值约束的列,这里选择“账号级别”列,打开列属性界面,如图5-55所示。

(2)选择“默认值或绑定”列,然后删除其右侧的值,最后单击“确定”按钮,即可保存删除默认值约束后的数据表,如图5-56所示。

图5-55 账号级别列属性界面

图5-56 删除列的默认值约束

微视频