程序员数据库爬虫

UNIQUE约束和主键的比较

2018-08-14  本文已影响54人  叫我老村长
about-BY-gentle.jpg

UNIQUE约束和主键的比较

可以使用 UNIQUE 约束确保在非主键列中不输入重复的值。尽管 UNIQUE 约束和 PRIMARY KEY 约束都强制唯一性,
但想要强制一列或多列组合(不是主键)的唯一性时应使用 UNIQUE 约束而不是 PRIMARY KEY 约束。
原因:可以对一个表定义多个 UNIQUE 约束,但只能定义一个 PRIMARY KEY 约束。

而且,UNIQUE 约束允许 NULL 值,这一点与 PRIMARY KEY 约束不同。不过,当与参与 UNIQUE 约束的任何值一起使用时,每列只允许一个空值。

外键中:
FOREIGN KEY 约束可以引用 UNIQUE 约束

什么时候用UNIQUE约束,而不是主键

创建唯一约束可确保在未参与主键的特定列中不输入重复值。尽管唯一约束和主键都强制唯一性,
但以下情况如下,则应向表附加唯一约束而不是主键约束:

唯一可以多个实例:

*************************** 1. row ***************************
       Table: unique8
Create Table: CREATE TABLE `unique8` (
  `id` int(11) NOT NULL,
  `age` int(11) DEFAULT NULL,
  `num` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `age` (`age`),
  UNIQUE KEY `num` (`num`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

唯一的唯一性验证实列:

mysql> select * from unique8;
+----+------+------+
| id | age  | num  |
+----+------+------+
|  1 | NULL | NULL |
+----+------+------+
1 row in set (0.01 sec)

mysql> insert into unique8 values(1,null,null);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
mysql> insert into unique8 values(1,22,22);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
mysql> insert into unique8 values(2,22,22);
Query OK, 1 row affected (0.06 sec)

mysql> insert into unique8 values(3,22,22);
ERROR 1062 (23000): Duplicate entry '22' for key 'age'
上一篇 下一篇

猜你喜欢

热点阅读