在MySQL中,为数据库字段设置默认值使用ALTER TABLE语句,例如:ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT 'default_value'; 这就是最简单的设置方法。
创建表时设置默认值
在使用CREATE TABLE创建表时,可以直接在字段定义后添加DEFAULT关键字指定默认值。例如:CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) DEFAULT '未命名', age INT DEFAULT 18 );
修改现有表字段默认值
如果表已经存在,需要使用ALTER TABLE修改字段默认值。语法是:ALTER TABLE 表名 ALTER COLUMN 列名 SET DEFAULT 默认值; 例如:ALTER TABLE users ALTER COLUMN name SET DEFAULT '匿名用户';
删除字段默认值
要删除字段的默认值,使用:ALTER TABLE 表名 ALTER COLUMN 列名 DROP DEFAULT; 例如:ALTER TABLE users ALTER COLUMN age DROP DEFAULT;
注意事项
默认值必须符合字段的数据类型,例如VARCHAR字段的默认值用单引号括起来,INT字段直接写数字。字符串默认值要用引号,日期用'YYYY-MM-DD'格式。另外,NOT NULL字段也可以设置默认值。
实际例子
假设有一个订单表:ALTER TABLE orders ALTER COLUMN status SET DEFAULT '待支付'; 这样新增记录时,如果不指定status,它就会自动是'待支付'。
FAQ
Q: 设置默认值后,现有数据会变吗?
A: 不会,现有数据的字段值不变,只影响后续插入的新数据。
Q: 可以为AUTO_INCREMENT字段设置默认值吗?
A: 不可以,AUTO_INCREMENT字段由MySQL自动管理,不能手动设置默认值。
Q: MySQL 5.7和8.0版本有区别吗?
A: 基本语法相同,但8.0支持更多表达式作为默认值,如函数。