1. 什么是默认约束
默认约束是一种用于确定表列的默认值的约束。当插入数据行时,如果没有为该列提供值,则使用默认值。默认值在列级别上设置,并且只有一个默认值可以为每个列定义。
实际上,当在表中插入新行时,每个列都必须有一个值。如果在INSERT语句中没有为该列提供值,则会使用其默认值。如果在创建表时定义了默认值,则它将填充新行的相应列。
CREATE TABLE my_table (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT DEFAULT 18,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
在上面的示例中,age列的默认值为18,创建时不需要提供该列的值。created_at列的默认值为当前的时间戳,当INSERT语句省略该值时将使用默认值。
2. 默认约束的作用
2.1 保证数据完整性
在插入新数据行时,如果没有为某一列指定值,则默认约束将填充该列的值。这可以确保表中的每一行都具有相同的信息,例如创建日期或状态。
此外,即使用户或应用程序没有提供列的值,也可以通过提供默认值来确保所有列都包含有效的数据。这有助于保持数据的完整性,避免错误或不完整的数据行。
2.2 减少代码量
默认约束可以减少编写INSERT语句的代码量,因为不需要每次都提供默认值。这可以提高编写代码的效率,减少出错的机会,同时也可以使代码更易于阅读和维护。
2.3 简化数据模型
默认约束可以使数据模型更加简单明了。例如,在表中添加一个默认约束,可以忽略不必要的数据字段,从而使数据模型更加简洁。
3. 在创建表时如何将默认约束应用于列
要在创建表时为列定义默认约束,可以使用DEFAULT关键字。下面是一个例子:
CREATE TABLE my_table (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT DEFAULT 18,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
在上面的示例中,age列的默认值为18,created_at列的默认值为当前的时间戳。当在INSERT语句中不提供age或created_at值时,将使用默认值。
3.1 修改默认约束
可以使用ALTER TABLE语句修改现有列的默认约束。下面是一个例子:
ALTER TABLE my_table
ALTER COLUMN age SET DEFAULT 21;
在上面的示例中,age列的默认值由18更改为21。这意味着如果插入新数据行时没有提供age的值,则会自动设置为21。
3.2 删除默认约束
可以使用ALTER TABLE语句删除现有列的默认约束。下面是一个例子:
ALTER TABLE my_table
ALTER COLUMN age DROP DEFAULT;
在上面的示例中,age列的默认约束已被删除。这意味着如果插入新数据行时没有提供age的值,则不会填充列的默认值。
4. 总结
默认约束是一种在创建表时定义列默认值的约束。默认约束不仅有助于提高数据完整性,而且可以减少编写INSERT语句的代码量和简化数据模型。使用ALTER TABLE语句可以修改或删除默认约束。