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 姓名 年龄 地址 薪水
1 拉梅什 32 艾哈迈达巴德 2000.00
2 基兰 25 德里 1500.00

将“DEFAULT”作为值传递

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

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

得到的表格如下所示 -

ID 姓名 年龄 地址 薪水
1 拉梅什 32 艾哈迈达巴德 2000.00
2 基兰 25 德里 1500.00
3 考希克 32 艾哈迈达巴德 2000.00
4 柴塔利 32 艾哈迈达巴德 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 姓名 年龄 地址 薪水
01 拉胡尔 27 德里 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 整数 优先原则 无效的
姓名 varchar(20) 拉梅什
年龄 整数 32
地址 字符(25) 是的 无效的
薪水 小数(18,2) 是的 2000.00