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

DEFAULT 约束适用于那些在大多数情况下有固定取值的字段。比如:
created_at)通常设为当前时间status)默认设为“启用”或“正常”这类场景下,如果每次都手动插入相同的值,效率低还容易出错。使用 DEFAULT 可以让数据库自动处理这些重复操作。

在创建表的时候,可以直接在字段定义后加上 DEFAULT 值 来设置默认值。语法如下:
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(100),
status VARCHAR(20) DEFAULT 'active',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);上面的例子中:

status 字段没有传值时,默认填入 'active'
created_at 使用了系统函数 CURRENT_TIMESTAMP,表示插入时间戳注意:不同数据库对函数支持略有差异,比如 MySQL 支持 CURRENT_TIMESTAMP,而 PostgreSQL 用的是 NOW(),具体要查文档。
如果你已经创建好了表,也可以通过 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 一起用上:
CREATE TABLE orders (
order_id INT PRIMARY KEY,
quantity INT NOT NULL DEFAULT 1
);这样设置之后:
quantity,就默认为 1NULL,数据库会报错,因为 NOT NULL 不允许为空这种组合特别适合用于防止误操作导致的数据异常。
基本上就这些。DEFAULT 约束是个实用的小功能,合理使用能提升开发效率和数据完整性。不过也要注意别滥用,比如给文本字段设置过长的默认值,或者在不合适的字段上加默认值,反而可能带来维护麻烦。
以上就是sql 中 default 约束用法_sql 中 default 约束设置默认值指南的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号