MySQL中有唯一性约束的列能否为空

观《疯狂Java讲义》610页,讲到MySQL的UNIQUE约束,
上介绍唯一性约束时写道“虽然唯一性约束的列不可以出现重复值,但可以出现多个null值。”
例子中添加表时为列建立了唯一性约束,“unique(test_name),constraints test_uk unique(test_pass)”,下面写道“上面建表语句为test_name、test_pass分别建立唯一性约束,这意味着这两列都不能为空。”
这是为什么?到底能不能为空值

MySQL中有唯一性约束的列能为空。

唯一约束保证在一个字段或者一组字段里的数据与表中其它行的数据相比是唯一的,允许为空,但只能出现一个空值。对字段使用了Unique约束,可以当主键在数据库中使用。约束名的命名规则推荐采用“约束类型_约束字段”这样的形式。

扩展资料:

当唯一约束和主键都强制唯一性时,如果满足下列条件,则应将唯一约束而不是主键约束附加到表上:

1、希望在列或列的组合中强制唯一性。可将多个唯一约束附加到表,但是只能将一个主键约束附加到表。

2、希望在允许空值的列中强制唯一性。可将唯一约束附加到允许空值的列,但是只能将主键约束附加到不允许空值的列。当将唯一约束附加到允许空值的列时,请确保在约束的列中最多有 一行包含空值。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-24
唯一键约束是通过参考索引实施的,如果插入的值均为NULL,则根据索引的原理,全NULL值不被记录在索引上,所以插入全NULL值时,可以有重复的,而其他的则不能插入重复值。
你可以自己实验一下是否允许插入重复空值。

参考资料:http://blog.csdn.net/yaoxy/archive/2009/07/16/4353115.aspx

本回答被提问者采纳
第2个回答  2018-03-31

可以的例如:给resource_name和resource_type添加联合唯一约束ALTER TABLE table_name ADD UNIQUE KEY(resource_name, resource_type)。

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。

    MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

    EXAMPLE 存储引擎是一个不做任何事情的存根引擎。它的目的是作为 MySQL 源代码中的一个例子,用来演示如何开始编写一个新存储引擎。同样,它的主要兴趣是对开发者。EXAMPLE 存储引擎不支持编索引。

本回答被网友采纳
第3个回答  2011-03-28
唯一、唯一!就代表只能有一个,一个字段可以有一个为空,但不允许两个为空的值存在。
例如:test_name这个字段中有一个值为空了,那这个字段的其它值就不能为空了!
第4个回答  2020-05-01
NULL 和 空值不一样
相似回答