Sql简介 专题
专题目录
您的位置:database > Sql简介专题 > SQL唯一约束
SQL唯一约束
作者:--    发布时间:2019-11-20

在本教程中,将学习如何使用sql unique约束强制列或一组列中值的唯一性。

1. 什么是sql unique约束

有时,希望确保一列或多列中的值不重复。 例如,employees表中不能接受的重复电子邮件。由于电子邮件列不是主键的一部分,因此防止电子邮件列中重复值的唯一方法是使用unique约束。

根据定义,sql unique约束定义了一个规则,该规则可防止存储在不参与主键的特定列中有重复值。

unique与primary key约束比较

primary key约束最多只能有一个,而表中可以有多个unique约束。 如果表中有多个unique约束,则所有unique约束必须在不同的列集。

primary key约束不同,unique约束允许null值。 这取决于rdbms要考虑null值是否唯一。

例如,mysql将null值视为不同的值,因此,可以在参与unique约束的列中存储多个null值。 但是,microsoft sql server或oracle数据库不是这种情况。

下表说明了unique约束和primary key约束之间的区别:

比较项 primary key约束 unique约束
约束的数量 一个 多个
null值 不允许 允许

2. 创建unique约束

通常,在创建表时创建unique约束。 以下create table语句定义users表,其中username列是唯一的。

create table users (
    user_id int auto_increment primary key,
    username varchar(255) not null unique,
    password varchar(255) not null
);

要为列创建unique约束,需要在列定义中添加unique关键字。 在这个示例中,创建了unique约束作为列约束。

如果插入或更新与username列中已存在的值相同的值,则rdbms将拒绝更改并返回错误。以下语句等效于使用表约束语法创建的unique约束的上述语句。

create table users (
    user_id int auto_increment primary key,
    username varchar(255) not null,
    password varchar(255) not null,
    constraint uc_username unique (username)
);

在这个示例中,将constraint子句放在create table语句的末尾。

3. 将unique约束添加到现有表

如果表已存在,则可以为列添加unique约束,前提条件是参与unique约束的列或列组合必须包含唯一值。

假设创建的users表没有为username列定义unique约束。 要将unique约束添加到username列,请使用alter table语句,如下所示:

alter table users
add constraint uc_username unique(username);

如果要添加新列并为创建unique约束,请使用以下形式的alter table语句。

alter table users
add new_column data_type unique;

例如,以下语句将带有unique约束的email列添加到users表。

alter table users
add email varchar(255) unique;

4. 删除unique约束

要删除unique约束,请使用alter table语句,如下所示:

alter table table_name
drop constraint unique_constraint_name;

例如,要删除users表中的uc_username唯一约束,请使用以下语句。

alter table users
drop constraint uc_username;

在本教程中,我们学习了unique约束以及如何应用它来强制一列或多列中值的唯一性。


网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册