Sql 简明教程

SQL - Default Constraint

The SQL DEFAULT Constraint

SQL DEFAULT Constraint 用于指定表中的列的默认值。我们通常在创建表时设置默认值。

如果没有在插入数据时提供值,则默认值将被视为列值,从而确保始终为该列提供一个值。我们可以在 SQL 表中为多个列指定默认值。

Syntax

下面是 SQL DEFAULT 约束的语法 −

CREATE TABLE table_name (
   column1 datatype DEFAULT default_value,
   column2 datatype DEFAULT default_value,
   column3 datatype,
   .....
   columnN datatype
);

Example

在下面的查询中,我们使用 CREATE TABLE 语句来创建 CUSTOMERS 表。此处,我们正在向 NAME、AGE、ADDRESS 和 SALARY 列添加默认约束 −

CREATE TABLE CUSTOMERS (
   ID INT NOT NULL,
   NAME VARCHAR (20) NOT NULL DEFAULT 'Ramesh',
   AGE INT NOT NULL DEFAULT '32',
   ADDRESS CHAR (25) DEFAULT 'Ahmedabad',
   SALARY DECIMAL (18, 2) DEFAULT '2000',
   PRIMARY KEY (ID)
);

以下查询使用 INSERT 语句将值插入此表:

INSERT INTO CUSTOMERS (ID) VALUES (1);
INSERT INTO CUSTOMERS VALUES (2, 'Khilan', 25, 'Delhi', 1500.00 );

该表使用 NAME、AGE、ADDRESS 和 SALARY 列中的默认值创建,第一行如下所示 −

ID

NAME

AGE

ADDRESS

SALARY

1

Ramesh

32

Ahmedabad

2000.00

2

Khilan

25

Delhi

1500.00

Passing "DEFAULT" as Value

在将数据插入表时,如果列名未包含在 INSERT 查询中,为了将默认值插入记录中,我们需要传递“DEFAULT”作为值,如下所示 −

INSERT INTO CUSTOMERS VALUES
(3, 'Kaushik', DEFAULT, DEFAULT, 2000.00),
(4, 'Chaitali', DEFAULT, DEFAULT, DEFAULT);

获得的表如下所示:

ID

NAME

AGE

ADDRESS

SALARY

1

Ramesh

32

Ahmedabad

2000.00

2

Khilan

25

Delhi

1500.00

3

Kaushik

32

Ahmedabad

2000.00

4

Chaitali

32

Ahmedabad

2000.00

Adding Default Constraint to an Existing Column

我们还可以使用 ALTER TABLE 语句将默认约束添加到表的现有列。这允许我们通过指定默认值来修改现有表的结构,确保数据库中的数据一致性。

Syntax

以下是向现有表中列添加 default constraint 的语法 −

ALTER TABLE table_name
ALTER COLUMN column_name SET DEFAULT 'default_value';

Example

假设我们使用 CREATE TABLE 语句创建了另一个名为 BUYERS 的表,如下所示 −

CREATE TABLE BUYERS (
   ID INT NOT NULL,
   NAME VARCHAR (20) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

以下查询向 BUYERS 表的 ADDRESS 列添加了默认约束。

ALTER TABLE BUYERS ALTER ADDRESS SET DEFAULT 'Delhi';

以下 INSERT 语句通过向除了 ADDRESS 以外的所有列提供值,将记录插入 BUYERS 表。

INSERT INTO BUYERS (ID, NAME, AGE, SALARY) VALUES
(01, 'Rahul', 27, 50000);

Verification

在插入记录后,如果您将其取回,则可以在地址列中观察到默认值(“德里的”) −

SELECT * FROM BUYERS WHERE ID = 01;

Output

获得的表如下 −

ID

NAME

AGE

ADDRESS

SALARY

01

Rahul

27

Delhi

50000.00

Dropping Default Constraint

我们可以使用 ALTER TABLE…​ DROP 语句从表中删除默认约束。

Syntax

以下是从表中删除默认约束的语法 −

ALTER TABLE table_name
ALTER COLUMN column_name DROP DEFAULT;

Example

在此处,我们正在从 CUSTOMERS 表的 ADDRESS 列中删除默认约束 −

ALTER TABLE CUSTOMERS ALTER ADDRESS DROP DEFAULT;

Verification

我们可以验证表详细信息(结构)并检查是否存在默认约束,可以使用以下查询 −

DESC CUSTOMERS;

获得的表如下所示:

Field

Type

Null

Key

Default

Extra

ID

int

NO

PRI

NULL

NAME

varchar(20)

NO

Ramesh

AGE

int

NO

32

ADDRESS

char(25)

YES

NULL

SALARY

decimal(18,2)

YES

2000.00