×

unique约束

unique约束(UNIQUE约束的字段能不能接受空值)

admin admin 发表于2023-05-20 11:52:46 浏览92 评论0

抢沙发发表评论

本文目录

UNIQUE约束的字段能不能接受空值


UNIQUE约束允许空值(NULL),但UNIQUE是唯一约束,所以每一个UNIQUE约束中最多只能有一个空值的行。

创建方法如下(创建表的同时创建):

create table unique_test  
(id number,  
fname varchar2(20),  
lname varchar2(20),  
address varchar2(100),  
email varchar2(40),  
constraint name_unique unique(fname,lname))

表已存在,然后创建:

alter table unique_test  
add constraint email_unique unique(email);

注意:如果表已存在,并且里面有数据的话再创建,使用unique的列里的内容,必须不能重复。


什么是UNIQUE约束


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

可以对一个表定义多个 UNIQUE 约束,但只能定义一个 PRIMARY KEY 约束。

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

FOREIGN KEY 约束可以引用 UNIQUE 约束。

扩展资料:

UNIQUE和PRIMARY约束的不同点:

(1) 唯一性约束所在的列允许空值,但是主键约束所在的列不允许空值。 

(2) 可以把唯一性约束放在一个或者多个列上,这些列或列的组合必须有唯一的。但是,唯一性约束所在的列并不是表的主键列。 

(3) 唯一性约束强制在指定的列上创建一个唯一性索引。在默认情况下,创建唯一性的非聚簇索引,但是,也可以指定所创建的索引是聚簇索引。

(4)建立主键的目的是让外键来引用。

(5)一个表最多只有一个主键,但可以有很多唯一键。

参考资料来源:百度百科-unique(STL标准模板库的函数)


数据库中的unique约束默认会建立一个索引吗


可以的.
根据数据库的功能,可以在数据库设计器中创建三种索引:唯一索引、主键索引和聚集索引。有关数据库所支持的索引功能的详细信息,请参见数据库文档。

提示:尽管唯一索引有助于定位信息,但为获得最佳性能结果,建议改用主键或唯一约束。
唯一索引 唯一索引是不允许其中任何两行具有相同索引值的索引。 当现有数据中存在重复的键值时,大多数数据库不允许将新创建的唯一索引与表一起保存。数据库还可能防止添加将在表中创建重复键值的新数据。例如,如果在employee表中职员的姓(lname)上创建了唯一索引,则任何两个员工都不能同姓。
主键索引 数据库表经常有一列或列组合,其值唯一标识表中的每一行。该列称为表的主键。 在数据库关系图中为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。该索引要求主键中的每个值都唯一。当在查询中使用主键索引时,它还允许对数据的快速访问。
聚集索引 在聚集索引中,表中行的物理顺序与键值的逻辑(索引)顺序相同。一个表只能包含一个聚集索引。 如果某索引不是聚集索引,则表中行的物理顺序与键值的逻辑顺序不匹配。与非聚集索引相比,聚集索引通常提供更快的数据访问速度。

PRIMARY KEY约束与UNIQUE约束的区别


每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
[知识拓展]
主键:PRIMARY KEY
约束唯一标识数据库表中的每条记录。
主键必须包含唯一的值;主键列不能包含 NULL 值。
每个表都应该有一个主键,并且每个表只能有一个主键。
唯一:UNIQUE
约束唯一标识数据库表中的每条记录。
UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
PRIMARY KEY 约束拥有自动定义的 UNIQUE 约束。