唯一索引的值可以null
1.创建一张user表,name字段指定为唯一索引
create table user( id int primary key auto_increment, name varchar(16), unique unique_name (name(16)) );
2.插入一条name为"Tom"的记录
mysql> insert into user(name) values("Tom"); Query OK, 1 row affected (0.00 sec
3.再次插入一条name为"Tom"的记录,会报错
mysql> insert into user(name) values("Tom"); ERROR 1062 (23000): Duplicate entry 'Tom' for key 'unique_name'
4.插入一条name值为null的记录,不会报错
mysql> insert into user(name) values(null); Query OK, 1 row affected (0.00 sec)
5.再插入一条记录name为null的记录,也不会报错
mysql> insert into user(name) values(null); Query OK, 1 row affected (0.00 sec)
6.查看一下表中的的记录
mysql> select * from user; +----+------+ | id | name | +----+------+ | 2 | NULL | | 3 | NULL | | 1 | Tom | +----+------+ 3 rows in set (0.00 sec)
主键索引和唯一索引的区别,唯一索引的值可以为null,即可以有多条为null的记录存在。