如何使用 SQL 中的 DEFAULT

2024 年 8 月 29 日 | 4 分钟阅读

在本篇 SQL 文章中,您将学习如何在结构化查询语言(SQL)的表中为列使用 DEFAULT。

什么是 DEFAULT 约束?

DEFAULT 是 SQL 中的一种约束,它允许用户用默认值或固定值填充列。

如果在插入数据时未为该列指定值,则默认值将自动添加到该列。

以下语法在创建表时为列添加 DEFAULT 约束

在 SQL DEFAULT 语法中,我们必须使用 DEFAULT 约束定义值。数据库用户可以轻松地在单个 SQL 表的一个或多个列中指定 DEFAULT 约束。

以下语法在表已存在时为列添加 DEFAULT 约束

如果您想在创建表时使用 DEFAULT 约束,则必须遵循以下步骤:

  1. 创建新数据库
  2. 创建新表并添加 DEFAULT
  3. 插入记录
  4. 查看表数据

步骤 1:创建简单的数据库

首先,您必须在结构化查询语言 (SQL) 中创建一个新数据库。

以下查询在 SQL Server 中创建新的 Industry 数据库

步骤 2:创建新表并添加 DEFAULT

以下查询在 Industry 数据库中创建 Client_Info 表,并向表的 Client_Age 列添加 CHECK 约束。

步骤 3:插入值

以下 INSERT 查询将客户端的记录插入到 Client_Info 表中。

步骤 4:查看表数据

以下查询显示 Client_Info 表的数据。


Client_IDClient_NameClient_GenderClient_AgeClient_Address
1001Arush男性 (Male)18阿格拉
1002Bulbul女性 (Female)18勒克瑙
1004Saurabh男性 (Male)20勒克瑙
1005Shivani女性 (Female)18阿格拉
1006Avinash男性 (Male)22德里
1007Shyam男性 (Male)18Banglore

在多个列上添加 DEFAULT 约束

以下 CREATE TABLE 查询在 Doctor_Info 表的多个列上指定了 DEFAULT 约束。

以下查询在 Doctor_Info 表中插入了多个医生记录。

以下查询显示了 Doctor_Info 表的详细信息。


Doctor_IDDoctor_NameDoctor_DiseaseDoctor_GenderDoctor_Country
1035Jones心脏男性 (Male)U. K.
1015Moris心脏男性 (Male)俄罗斯
1003Harry发烧男性 (Male)U. K.
1044Bella心脏女性 (Female)U. K.
1025Moria心脏男性 (Male)俄罗斯

从表中删除 DEFAULT 约束

ALTER TABLE 语句中的 ALTER COLUMN 关键字允许数据库用户从表列中删除 DEFAULT 约束。

以下 ALTER 语法用于从 SQL 表中删除 DEFAULT 约束:

以下查询将 Doctor_Country 列的默认值 Russia 从 Doctor_Info 表中删除。

要检查上述 ALTER 查询的结果,您需要输入以下 DESC 命令,该命令描述了 Doctor_Info 表的结构。

输出

字段类型NULL默认额外
Doctor_IDINT-NULL-
Doctor_NameINT-NULL-
Doctor_SpecialistVarchar(20)-心脏-
Doctor_GenderVarchar(20)-男性 (Male)-
Doctor_CountryINT是的-NULL-

正如我们在上面的 Doctor_Info 表中看到的,Doctor_Country 字段的 DEFAULT 列值为 NULL,这表明 DEFAULT 值已成功从 Doctor_Country 列中删除。

向现有表添加 DEFAULT 约束

数据库用户可以使用 SQL ALTER TABLE 语句中的 ADD 关键字轻松地向现有表的列添加 DEFAULT 值。

以下语法在 SQL 中用于向现有表添加 DEFAULT 约束:

以下查询将 Doctor_Info 表的 Doctor_Country 列的默认值设置为 INDIA。

要检查上述 ALTER 查询的结果,您需要输入以下 DESC 命令,该命令描述了 Doctor_Info 表的结构。

输出

字段类型NULL默认额外
Doctor_IDINT-NULL-
Doctor_NameINT-NULL-
Doctor_SpecialistVarchar(20)-心脏-
Doctor_GenderVarchar(20)-男性 (Male)-
Doctor_CountryINTN0-INDIA-