MySQL 版本
- select version();
- +------------+
- | version() |
- +------------+
- | 5.7.21-log |
- +------------+
- 1 row in set (0.00 sec)
非空约束为 null 并在自增列属性前
即使自增列的非空约束定义可以为 null, 但实际自增列为 not null
- create table test_auto_incre(id int null auto_increment,id2 int default null ,key idx_id(id));
- show create table test_auto_incre;
- CREATE TABLE test_auto_incre (
- id int(11) NOT NULL AUTO_INCREMENT,
- id2 int(11) DEFAULT NULL,
- KEY idx_id (id)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8
- insert into test_auto_incre(id2) values(12),(2312);
- select * from test_auto_incre;
- +----+------+
- | id | id2 |
- +----+------+
- | 1 | 12 |
- | 2 | 2312 |
- +----+------+
- 2 rows in set (0.00 sec)
非空约束为 null 并在自增列属性后
自增列定义可以为 null, 实际自增列也可以为 null; 自增列失去作用!
- create table test_auto_incre2(id int auto_increment null,id2 int null,key idx_id(id));
- Query OK, 0 rows affected (0.02 sec)
非空约束在自增列属性后, 不是 MySQL 的标准建表语句, 但建该表没有报错和警告
- show create table test_auto_incre2;
- CREATE TABLE test_auto_incre2 (
- id int(11) AUTO_INCREMENT,
- id2 int(11) DEFAULT NULL,
- KEY idx_id (id)
- ) ENGINE=InnoDB;
插入数据
- insert into test_auto_incre2(id2) values(12),(2312);
- select * from test_auto_incre2;
- +------+------+
- | id | id2 |
- +------+------+
- | NULL | 12 |
- | NULL | 2312 |
- +------+------+
- 2 rows in set (0.00 sec)
非空约束为 not null 并在自增列属性后
- create table test_auto_incre2(id int auto_increment not null,id2 int null,key idx_id(id));
- show create table test_auto_incre2;
- CREATE TABLE test_auto_incre2 (
- id int(11) NOT NULL AUTO_INCREMENT,
- id2 int(11) DEFAULT NULL,
- KEY idx_id (id)
- ) ENGINE=InnoDB A
插入数据
- insert into test_auto_incre2(id2) values(12),(2312);
- select * from test_auto_incre2;
- +----+------+
- | id | id2 |
- +----+------+
- | 1 | 12 |
- | 2 | 2312 |
- +----+------+
MySQL 标准建表语法
来源: http://www.linuxidc.com/Linux/2019-04/158338.htm