SQL DEFAULT约束

SQL DEFAULT约束

一般情况下,当指定了默认约束的列中未传入值时, 默认约束非常有用。此时,列数据将自动填充为默认值。

SQL DEFAULT约束

允许用户使用固定或默认值填充列的约束被称为默认值。

考虑以下情况-我们创建了一个表,并且没有插入任何值。然后,默认值将接管并添加默认数据。

在SQL表中,我们可以传入多个列的默认值。 我们必须使用默认约束来定义值。

在创建表时为列添加默认约束,需要按照以下步骤进行。

  • 创建一个新的表并添加默认约束。

  • 在表中插入记录

  • 使用SQL查询帮助查看表数据

语法

以下是默认约束的语法-

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

示例

在以下SQL查询中,我们创建了一个名为emp_Info的表。在创建表时,我们向列添加了一个默认约束。

CREATE TABLE emp_Info(
   E_ID INT NOT NULL,
   NAME VARCHAR(20) DEFAULT 'AmanKr', 
   AGE INT DEFAULT 21, 
   COURSE VARCHAR(20) DEFAULT 'CSE'
);

将记录插入到名为emp_Info的创建表中。

INSERT INTO emp_Info(E_ID) VALUES(101);
INSERT INTO emp_Info(E_ID, NAME, AGE, COURSE) VALUES(102, 'SonuKr', 23, 'MECH');

使用以下SQL查询查看表数据

SELECT * FROM emp_Info;

当我们执行上述SQL查询时,我们得到以下表格,在第一行中,默认获取名称、年龄和课程。

+------+--------+------+--------+
| E_ID | NAME   | AGE  | COURSE |
+------+--------+------+--------+
|  101 | AmanKr |   21 | CSE    |
|  102 | SonuKr |   23 | Mech   |
+------+--------+------+--------+

注意 - 如果在插入数据时SQL查询中未包含列名,则我们仍然可以通过在值的位置包含DEFAULT关键字来检索创建表中的默认值。

以下是插入默认值的SQL查询语句:

INSERT INTO emp_Info VALUES(103, DEFAULT, DEFAULT, 'BIO');
INSERT INTO emp_Info VALUES(104, 'VivekKr', DEFAULT, DEFAULT);

使用以下SQL查询语句查看表中的数据

SELECT * FROM emp_Info;

执行以上SQL查询语句后,我们得到以下表格- 在插入两行的值后,这些值要么是默认值,要么是用户手动给定的。

+------+---------+------+--------+
| E_ID | NAME    | AGE  | COURSE |
+------+---------+------+--------+
|  101 | AmanKr  |   21 | CSE    |
|  102 | SonuKr  |   23 | Mech   |
|  103 | AmanKr  |   21 | BIO    |
|  104 | VivekKr |   21 | CSE    |
+------+---------+------+--------+

DEFAULT约束在现有表中的使用

默认约束也可以在数据库中的现有表上添加,不仅限于在创建新表时添加。

语法

以下是将默认约束添加到现有表的SQL查询语句:

ALTER TABLE table_name ADD CONSTRAINT Default_name DEFAULT default_value FOR Column_name;

示例

以下的SQL语句将默认约束添加到现有表中,前提是此表没有任何默认约束。因此,通过使用以下查询,我们添加了一个默认约束。

ALTER TABLE customers ADD CONSTRAINT DF_ADDRESS DEFAULT 'NOIDA' FOR ADDRESS;

以下是将默认约束插入现有表的插入查询。

INSERT INTO customers(ID, NAME, AGE, SALARY) VALUES(05,'AMAN', 23, 500000);

验证

在插入了列的默认值之后,我们使用以下查询语句(SELECT * FROM customers;)来显示插入到表中的行。 −

+----+------+-----+---------+---------+
| ID | NAME | AGE | ADDRESS | SALARY  |
+----+------+-----+---------+---------+
| 5  | AMAN | 23  | NOIDA   |500000.00|
+----+------+-----+---------+---------+

删除DEFAULT约束

要从表的列中删除默认约束,我们必须使用ALTER TABLE... DROP语句。这允许数据库用户从表中删除默认约束。

语法

以下是删除默认约束的语法 –

ALTER TABLE table_name DROP Default_constraint_name;

示例

在下面的示例中,我们将看到如何从表中删除默认约束。

但在删除约束之前,我们必须验证客户表中是否存在默认约束。

在下表中,我们可以看到age列上有一个默认约束。

+-------------------------+---------------------------------+---------------+-----------------+
| constraint_type         | constraint_name                 | delete_action | constraint_keys |
+-------------------------+---------------------------------+---------------+-----------------+
| DEFAULT on column AGE   | DF_AGE                          |   (n/a)       | ((22))          |
| PRIMARY KEY (clustered))| PK__CUSTOMER__3214EC270E48CD10  | (n/a)         |    ID           |
+-------------------------+---------------------------------+---------------+-----------------+

我们正在尝试使用以下SQL查询从客户表的age列中删除默认约束−

ALTER TABLE customers DROP DF_AGE;

验证

在执行上述SQL查询之后,我们正在验证表的详细信息,以查看是否存在默认约束。使用SQL查询(EXEC sp_help ‘dbo.customers’)。

+-------------------------+---------------------------------+---------------+-----------------+
| constraint_type         | constraint_name                 | delete_action | constraint_keys |
+-------------------------+---------------------------------+---------------+-----------------+
| PRIMARY KEY (clustered))| PK__CUSTOMER__3214EC270E48CD10  | (n/a)         |    ID           |
+-------------------------+---------------------------------+---------------+-----------------+

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程