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 |
+-------------------------+---------------------------------+---------------+-----------------+