跳到主要内容

SQL DEFAULT约束

提示
  1. 默认值设置DEFAULT 约束用于为 SQL 表中的列设置默认值,当插入空值时会自动使用此默认值。
  2. 设置DEFAULT约束语法:在创建表时,可以通过 CREATE TABLE 语句为列指定默认值,如 CREATE TABLE table_name (column_name data_type DEFAULT default_value)
  3. 更改和移除DEFAULT约束:使用 ALTER TABLE 命令可以为现有的列添加或修改 DEFAULT 约束,也可以使用类似的命令移除已有的 DEFAULT 约束。

在 SQL 中,DEFAULT 约束用于在我们尝试将一个空值插入到列中时设置一个默认值。

示例

CREATE TABLE College (
college_id INT PRIMARY KEY,
college_code VARCHAR(20),
college_country VARCHAR(20) DEFAULT 'US'
);

这里,college_country 列的默认值是 US

如果我们尝试在 college_country 列中存储一个 NULL 值,它的值将默认为 US

DEFAULT 约束语法

SQL DEFAULT 约束的语法是:

CREATE TABLE table_name (
column_name data_type DEFAULT default_value
);

这里,

  • table_name 是要创建的表的名称
  • column_name 是要实施约束的列的名称
  • data_type 是列的数据类型,如 INTVARCHAR
  • default_value 是被插入的空值将被替换的值

示例:SQL DEFAULT 约束

-- 因此默认值 'US' 被插入到该列
INSERT INTO Colleges (college_id, college_code)
VALUES (1, 'ARP76');

-- 向 college_country 列插入 'UAE'
INSERT INTO Colleges (college_id, college_code, college_country)
VALUES (2, 'JWS89', 'UAE');

这里,college_country 列的默认值设置为 US。所以,当我们尝试向 college_country 列插入一个 NULL 值时,它将默认替换为 US

但是当我们将 college_country 设置为 UAE 时,将忽略默认值,列的值设置为 UAE

使用 ALTER TABLE 添加 DEFAULT 约束

我们还可以使用 ALTER TABLE 命令为现有列添加 DEFAULT 约束。例如,

SQL Server

ALTER TABLE College
ADD CONSTRAINT country_default
DEFAULT 'US' FOR college_country;

PostgreSQL

ALTER TABLE College
ALTER COLUMN college_code SET DEFAULT 'US';

MySQL

ALTER TABLE College
ALTER college_country SET DEFAULT 'US';

Oracle

ALTER TABLE College
MODIFY college_country DEFAULT 'US';

这里,如果在插入过程中传递了 NULL,则 college_country 列的默认值被设置为 US

移除 DEFAULT 约束

我们可以使用 DROP 子句从列中移除 DEFAULT 约束。例如,

SQL Server, PostgreSQL, Oracle

ALTER TABLE College
ALTER COLUMN college_country DROP DEFAULT;

MySQL

ALTER TABLE College
ALTER college_country DROP DEFAULT;

这里,SQL 命令从 college_country 列中移除了 DEFAULT 约束。

推荐阅读: SQL 约束