CREATE TABLE `test03192` (
`test` int(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8依次插入值:mysql> INSERT INTO `test03192` VALUES(); // NULL
mysql> INSERT INTO `test03192` VALUES(''); // 0
mysql> INSERT INTO `test03192` VALUES('2'); // 2
mysql> INSERT INTO `test03192` VALUES(NULL); // NULL
mysql> INSERT INTO `test03192` VALUES('dsd'); // 0+------+
| test |
+------+
| NULL |
| 0 |
| 2 |
| NULL |
| 0 |
+------+两点不明:
INT类型为何会允许NULL,而不是转换为0 ?
最后一个插入语句插入的不是合法INT型,按理该按默认值存为NULL,而怎么会是0官方手册上没讲这种问题,弄的很迷糊
'2'
'asd'首先这些都不是INT型,是字符串, 不象C中一但数据类型不匹配就报错。MYSQL中首先会做一个数据类型转换。'' 转换成了 0, '2'转换为2, 而 'asd' 同样被MYSQL转换成0. 这个没有为什么,纯属开发MYSQL者自己想怎么就怎么。