sql 中 default 约束用法_sql 中 default 约束设置默认值指南

default约束用于在插入记录时自动填充未指定值的字段,适合创建时间、状态、数值型字段等固定取值场景。例如created_at设为当前时间、status默认“active”、库存默认0。建表时可在字段后加default值,如status varchar(20) default ‘active’,不同数据库函数支持不同,如mysql用current_timestamp,postgresql用now()。已有表可用alter table修改默认值,mysql和postgresql语法均为alter table … alter column … set default,但需注意细节差异。default可与not NULL共用,确保字段非空且自动填充,如int not null default 1,防止误传null。合理使用default能提升效率和数据完整性,但应避免滥用,如文本字段设长默认值可能增加维护难度。

sql 中 default 约束用法_sql 中 default 约束设置默认值指南

在 SQL 中,DEFAULT 约束的作用是为表中的某个字段设置默认值。当插入新记录时,如果没有为该字段指定值,系统就会自动使用这个默认值填充。这种方式可以有效避免字段为空的问题,也减少了手动输入的负担。

sql 中 default 约束用法_sql 中 default 约束设置默认值指南


什么时候适合用 DEFAULT 设置默认值?

DEFAULT 约束适用于那些在大多数情况下有固定取值的字段。比如:

  • 创建时间字段(如 created_at)通常设为当前时间
  • 用户状态字段(如 status)默认设为“启用”或“正常”
  • 数值型字段(如库存数量)默认为 0

这类场景下,如果每次都手动插入相同的值,效率低还容易出错。使用 DEFAULT 可以让数据库自动处理这些重复操作。

sql 中 default 约束用法_sql 中 default 约束设置默认值指南


怎么在建表时设置 DEFAULT 默认值?

在创建表的时候,可以直接在字段定义后加上 DEFAULT 值 来设置默认值。语法如下:

CREATE TABLE users (     id INT PRIMARY KEY,     name VARCHAR(100),     status VARCHAR(20) DEFAULT 'active',     created_at DATETIME DEFAULT CURRENT_TIMESTAMP );

上面的例子中:

sql 中 default 约束用法_sql 中 default 约束设置默认值指南

  • status 字段没有传值时,默认填入 ‘active’
  • created_at 使用了系统函数 CURRENT_TIMESTAMP,表示插入时间戳

注意:不同数据库对函数支持略有差异,比如 MySQL 支持 CURRENT_TIMESTAMP,而 PostgreSQL 用的是 NOW(),具体要查文档。


已有表怎么修改 DEFAULT 默认值?

如果你已经创建好了表,也可以通过 ALTER TABLE 修改字段的默认值。语法大致如下(以 MySQL 为例):

ALTER TABLE users  ALTER COLUMN status SET DEFAULT 'inactive';

如果是 PostgreSQL,则写法稍有不同:

ALTER TABLE users  ALTER COLUMN status SET DEFAULT 'inactive';

虽然语法看起来差不多,但注意关键字和分号等细节。不同的数据库系统可能会有不同的语法规则,建议操作前先备份数据。


DEFAULT 和 NOT NULL 能一起用吗?

当然可以。很多情况下我们既希望字段不能为空,又不想每次都要手动填值,这时候就可以把 DEFAULT 和 NOT NULL 一起用上:

CREATE TABLE orders (     order_id INT PRIMARY KEY,     quantity INT NOT NULL DEFAULT 1 );

这样设置之后:

  • 如果插入时不传 quantity,就默认为 1
  • 如果强制传了个 NULL,数据库会报错,因为 NOT NULL 不允许为空

这种组合特别适合用于防止误操作导致的数据异常。


基本上就这些。DEFAULT 约束是个实用的小功能,合理使用能提升开发效率和数据完整性。不过也要注意别滥用,比如给文本字段设置过长的默认值,或者在不合适的字段上加默认值,反而可能带来维护麻烦。

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享