美文网首页程序员数据库爬虫
UNIQUE约束和主键的比较

UNIQUE约束和主键的比较

作者: 叫我老村长 | 来源:发表于2018-08-14 11:20 被阅读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'

相关文章

  • UNIQUE约束和主键的比较

    UNIQUE约束和主键的比较 可以使用 UNIQUE 约束确保在非主键列中不输入重复的值。尽管 UNIQUE 约束...

  • 索引、视图

    索引 主键和UNIQUE约束字段会自动添加索引。 约束字段会自动添加索引。 因此根据主键查询效率较高。尽量根据主键...

  • 初学oracle

    约束: 非空约束:not null 唯一约束:unique 检查约束:check 主键约束:primary ke...

  • Mysql的几种约束

    一、Mysql支持以下约束: ※ 主键约束 :primary key ※ 唯一性约束:unique key ※...

  • 数据库约束

    约束类型 非空约束 not null 唯一性约束 unique 主键约束 primary key 外键约束 for...

  • MySQL约束

    1、NOT NULL 非空约束----字面意思 2、PRIMARY KEY 主键约束 3、UNIQUE KEY 唯...

  • MySQL多表操作

    外键约束 唯一约束和主键约束 唯一约束:列表内容必须唯一,但是可以为空 unique不能作为其它表的外键可以有多...

  • (八)列属性(列约束)

    1. PRIMARY 主键 2. UNIQUE 唯一索引(唯一约束) 3. NULL 约束 4. DEFAULT ...

  • 表的约束

    五大约束 主键约束(primay key(列) )唯一性,非空性。 唯一约束(unique(列) )唯一性,可以...

  • mysql 常用命令

    1. 数据库: 2. 数据表: 表约束 约束条件说明primary key主键not null不能为空unique...

网友评论

    本文标题:UNIQUE约束和主键的比较

    本文链接:https://www.haomeiwen.com/subject/xacmbftx.html