Home  >  Article  >  Database  >  MySQL表新增字段默认值处理的一处小细节_MySQL

MySQL表新增字段默认值处理的一处小细节_MySQL

WBOY
WBOYOriginal
2016-06-01 13:48:14908browse

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
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn