SQL - 默认约束



SQL DEFAULT 约束

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

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

语法

以下是 SQL DEFAULT 约束的语法:

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

示例

在以下查询中,我们使用 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

传递“DEFAULT”作为值

在将数据插入表时,如果列名未包含在 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

向现有列添加默认约束

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

语法

以下是向现有表中的列添加默认约束的语法:

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

示例

假设我们使用 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);

验证

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

SELECT * FROM BUYERS WHERE ID = 01;

输出

获得的表如下:

ID NAME AGE ADDRESS SALARY
01 Rahul 27 Delhi 50000.00

删除默认约束

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

语法

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

ALTER TABLE table_name
ALTER COLUMN column_name DROP DEFAULT;

示例

在这里,我们从 CUSTOMERS 表的 ADDRESS 列中删除默认约束:

ALTER TABLE CUSTOMERS ALTER ADDRESS DROP DEFAULT;

验证

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

DESC CUSTOMERS;

获得的表如下所示:

字段 类型 默认 额外
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
广告

© . All rights reserved.