为什么结果是NULL,应该怎么设置默认值?

为什么在MySQL里面运行结果是NULL,应该怎么去设置默认值?感谢
。。

img

去掉@

创建表的时候,设置,在字段后面加上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;
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/976831
  • 这篇博客也不错, 你可以看下不懂就问:为什么MySQL不建议使用NULL作为列默认值?
  • 你还可以看下mysql参考手册中的 MySQL 语言结构 NULL值
  • 除此之外, 这篇博客: mysql不推荐列默认值设置为null到底是为什么中的 MySQL不建议使用NULL作为列默认值到底为什么 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 通常能听到的答案是使用了NULL值的列将会使索引失效,但是如果实际测试过一下,你就知道IS NULL会使用索引.所以上述说法有漏洞.

    着急的人拉到最下边看结论

  • 您还可以看一下 臧雪园老师的MySQL数据库管理基础篇(一)课程中的 MySQL is Null的操作小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    针对该问题,可以采用以下方案:

    1. 使用IFNULL函数将结果为NULL的字段设置为默认值。 sql SELECT IFNULL(column_name, default_value) FROM table_name; 这里的column_name是要查询的字段名,default_value是该字段的默认值。将该语句替换原来的查询语句即可。

    2. 修改数据库中该字段的属性,将其从not null修改为null。 sql ALTER TABLE table_name MODIFY column_name data_type NULL; 这里的column_name和data_type分别为要修改的字段名和该字段的数据类型。

    3. 在插入数据时,为该字段赋值为null或不插入该字段,让数据库使用默认值。 sql INSERT INTO table_name (column1, column2) VALUES (value1, value2); 这里如果不插入该字段,数据库就会使用该字段的默认值;如果要插入null值,可以将该字段赋值为null。

    4. 在定义表结构时,为该字段设置默认值。 sql CREATE TABLE table_name ( column1 data_type DEFAULT default_value, column2 data_type ); 这里的column1是要设置默认值的字段名,default_value是该字段的默认值。

    综上所述,可以根据具体情况采用不同的方法解决该问题。如果无法确定该字段的默认值或不知道如何修改数据库结构,建议咨询相关专业人士。