前言 昨天规划一个项目,需要建个数据库。过程中遇到个小需求:想把某些数据格设为“空白”。一开始觉得,直接传个空字符串进去不就行了?但转念一想,这真的能算“空白”吗? 我最初尝试了更“偷懒”的办法——直接不传值(现在回头看,这思路确实有点问题)。结果,PHPMyAdmin立刻弹出了提示:“这行需要三个
昨天规划一个项目,需要建个数据库。过程中遇到个小需求:想把某些数据格设为“空白”。一开始觉得,直接传个空字符串进去不就行了?但转念一想,这真的能算“空白”吗?
我最初尝试了更“偷懒”的办法——直接不传值(现在回头看,这思路确实有点问题)。结果,PHPMyAdmin立刻弹出了提示:“这行需要三个值,你只给了两个”。
长期稳定更新的攒劲资源: >>>点此立即查看<<<
这是什么意思呢?举个例子,假如你的表有三列。你给第一列和第二列都插入了5条数据,但第三列只给了2条。那么,第3、4、5行的第三列就“缺了一块”,数据库不知道这里该放什么,于是就会报出这个错误。
如果想让某个格子显示为空白,正确的做法是为该字段设置一个默认值。记住,不能不传值,否则会报错。
具体操作时,在你希望留空的位置,直接写入关键字 DEFAULT 即可。
或者,更直接一点,往格子里插入一个空字符串 '' 也行。
这里有个细节需要注意:是空字符串,引号中间不要加空格。没错,一开始我也疑惑,传个空字符串进去,格子就算“空”了吗?但实践表明,这确实是标准做法。
设置默认值为空字符串的公式如下:
[字段名] [字段类型] DEFAULT '',
来看一个具体的例子:
INSERT INTO test1(id, name, password) VALUES (1, "张五", "王五"), (2, "张三", DEFAULT), (3, "王二麻子", DEFAULT), (4, "李四", DEFAULT), (5, DEFAULT, DEFAULT); // 注意:如果name字段的默认值是NULL,那么最后一行两个DEFAULT的结果会不同。

将字段设置为 NULL,这和插入空字符串有本质区别。NULL 在数据库里代表“未知”或“无值”,它在MySQL中会占用特定的空间。
这种方法通常通过设置字段的默认值为 NULL 来实现。比如,你只给表的前两列插入了数据,完全没管第三列,那么这些空缺的第三列格子就会自动填充为 NULL。
修改表结构,设置默认值为NULL的公式:
ALTER TABLE [数据表名称] MODIFY [字段名] [字段类型] DEFAULT NULL;
举例说明:
-- 先将字段默认值改为NULL
ALTER TABLE index_na v MODIFY imgs VARCHAR(255) DEFAULT NULL;
-- 然后插入数据时,可以跳过该字段
INSERT INTO index_na v (url, texts) VALUES
("./blogs.php","博客"),
("./columns","专栏"),
("./download.php","下载"),
("./qa.php","问答");

简单来说,想让数据库格子“留白”,主要有两种思路:一是设置默认值为空字符串 '',二是设置默认值为 NULL。前者是插入一个确切的“空”值,后者则表示值“未知”或“不存在”。根据业务逻辑选择合适的方式,就能轻松避开那些令人头疼的报错信息了。希望这些经验能对大家有所帮助。
您可能感兴趣的文章:
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述