为什么在MySQL里面运行结果是NULL,应该怎么去设置默认值?感谢
。。
去掉@
创建表的时候,设置,在字段后面加上not null default "test":
CREATE TABLE `default_tb` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',
...
`country` varchar(50) not null DEFAULT '中国',
`col_status` tinyint not null DEFAULT 1 COMMENT '1:代表啥 2:代表啥...',
`col_time` datetime NOT NULL DEFAULT '2020-10-01 00:00:00' COMMENT '什么时间',
`is_deleted` tinyint not null DEFAULT 0 COMMENT '0:未删除 1:删除',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
通常能听到的答案是使用了NULL值的列将会使索引失效
,但是如果实际测试过一下,你就知道IS NULL
会使用索引.所以上述说法有漏洞.
着急的人拉到最下边看结论
针对该问题,可以采用以下方案:
使用IFNULL函数将结果为NULL的字段设置为默认值。 sql SELECT IFNULL(column_name, default_value) FROM table_name;
这里的column_name是要查询的字段名,default_value是该字段的默认值。将该语句替换原来的查询语句即可。
修改数据库中该字段的属性,将其从not null修改为null。 sql ALTER TABLE table_name MODIFY column_name data_type NULL;
这里的column_name和data_type分别为要修改的字段名和该字段的数据类型。
在插入数据时,为该字段赋值为null或不插入该字段,让数据库使用默认值。 sql INSERT INTO table_name (column1, column2) VALUES (value1, value2);
这里如果不插入该字段,数据库就会使用该字段的默认值;如果要插入null值,可以将该字段赋值为null。
在定义表结构时,为该字段设置默认值。 sql CREATE TABLE table_name ( column1 data_type DEFAULT default_value, column2 data_type );
这里的column1是要设置默认值的字段名,default_value是该字段的默认值。
综上所述,可以根据具体情况采用不同的方法解决该问题。如果无法确定该字段的默认值或不知道如何修改数据库结构,建议咨询相关专业人士。