视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MySQL表新增字段默认值处理的一处小细节_MySQL
2020-11-09 18:04:54 责编:小采
文档


bitsCN.com

某位同事要求对某张表(InnoDB表,且已有数据)增添一个字段,无默认值要求:
添加之前的表中数据:


01 mysql> select * from t1; 02 +------+ 03 | id | 04 +------+ 05 | 1 | 06 | 2 | 07 | 3 | 08 +------+ 09 3 rows in set (0.02 sec) 10 11 mysql> alter table t1 add col1 char(1); 12 Query OK, 3 rows affected (0.24 sec) 13 Records: 3 Duplicates: 0 Warnings: 0

添加字段之后的表中数据:

1 mysql> select * from t1; 2 +------+------+ 3 | id | col1 | 4 +------+------+ 5 | 1 | NULL | 6 | 2 | NULL | 7 | 3 | NULL | 8 +------+------+ 9 3 rows in set (0.00 sec)

过了一会儿,他要求设置新添字段的默认值为'N':

1 mysql> alter table t1 modify col1 char(1) default 'N'; 2 Query OK, 0 rows affected (0.05 sec) 3 Records: 0 Duplicates: 0 Warnings: 0

查看此时的表中数据:

1 mysql> select * from t1; 2 +------+------+ 3 | id | col1 | 4 +------+------+ 5 | 1 | NULL | 6 | 2 | NULL | 7 | 3 | NULL | 8 +------+------+ 9 3 rows in set (0.00 sec)

操作到这里,可以说同事的这个需求就算告一段落了。不过如果把刚才的时间倒回到这个小需求的开始点,同事如果一次性的提出了完整的需求:添加一个char(1)类型的字段,默认值为‘N’:

01 mysql> alter table t1 add col1 char(1) default 'N'; 02 Query OK, 3 rows affected (0.19 sec) 03 Records: 3 Duplicates: 0 Warnings: 0 04 查看表中数据: 05 mysql> select * from t1; 06 +------+------+ 07 | id | col1 | 08 +------+------+ 09 | 1 | N | 10 | 2 | N | 11 | 3 | N | 12 +------+------+ 13 3 rows in set (0.00 sec)

两次基本上相同的操作,但表中旧数据中的新添字段的结果却是不一样的。

我记录这段操作过程并不是想说明字段类型填充的默认值的原理,因为它不是一个复杂的概念,只是觉得日后需留意一些类似的小细节。

bitsCN.com

下载本文
显示全文
专题