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

WBOY
リリース: 2016-06-01 13:48:14
オリジナル
908 人が閲覧しました

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
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート