在Oracle数据库里,为字段设置默认值可以让插入数据时若未显式给该列赋值,系统自动填入预设内容。这在保证业务数据完整和减少程序判空逻辑上非常实用。下面介绍建表时设置与后期修改两种方式。

建表时指定默认值
在CREATE TABLE语句中,列定义后直接使用DEFAULT关键字即可。以下示例创建一个用户表,状态默认启用,创建时间默认当前时间:
CREATE TABLE app_user (
id NUMBER(10) PRIMARY KEY,
username VARCHAR2(50) NOT NULL,
status VARCHAR2(10) DEFAULT 'ACTIVE',
create_time DATE DEFAULT SYSDATE
);
使用ALTER TABLE修改默认值
如果表已经存在,可以通过ALTER TABLE ... MODIFY来设置或更改某列的默认值。语法如下:
ALTER TABLE app_user MODIFY (status DEFAULT 'INACTIVE');
不同数据类型的默认值写法
- 字符型:用单引号包裹,如 DEFAULT 'N'
- 数字型:直接写数字,如 DEFAULT 0
- 日期型:可用SYSDATE或TO_DATE,如 DEFAULT TO_DATE('2020-01-01','YYYY-MM-DD')
注意事项
设置默认值不会影响表中已有数据,只针对后续执行的INSERT语句。如果插入时显式写入NULL,则列值就是NULL而非默认值。可通过数据字典user_tab_columns查看列的默认值情况:
SELECT column_name, data_default FROM user_tab_columns WHERE table_name = 'APP_USER';
删除默认值
将列修改为没有DEFAULT子句即可清除默认值:
ALTER TABLE app_user MODIFY (status DEFAULT NULL);
注意以上表名和列名若使用小写创建需加双引号,否则Oracle会转成大写处理。
掌握这些方式后,就能在Oracle中灵活控制字段默认值,提升建表与维护效率。
Oracle默认值ALTER_TABLE修改时间:2026-07-28 18:51:17