SQL UNIQUE:约束

1年前 (2024-04-27)
SQL UNIQUE 约束也称“约束”,设置了 UNIQUE 约束的字段,每条记录的值都必须是的,因此 UNIQUE 约束可以防止两条记录在某个字段上出现重复值。例如在 CUSTOMERS 表中,要防止两个或者多个顾客出现相同的姓名。

UNIQUE 可以约束表的一个字段,也可以约束多个字段。此外,设置了 UNIQUE 约束的字段可以出现 NULL 值。

UNIQUE 和 PRIMARY KEY 的区别

  • UNIQUE(约束)和 PRIMARY KEY(主键)非常相似,但是 UNIQUE 允许字段现一次 NULL 值,而 PRIMARY KEY 不允许出现 NULL 值,因为可以认为:

    PRIMARY KEY = UNIQUE +  NOT NULL

  • 一张表可以包含多个 UNIQUE 字段,但是只能有一个主键。

示例

下面的 SQL 语句将创建一个名为 website 的新表,该表包含七个字段,其中 alexa 被设置为 UNIQUE,因此任何网站在全球的排名都必须不同。

CREATE TABLE website (

id INT NOT NULL AUTO_INCREMENT,

name VARCHAR(20) NOT NULL,

url VARCHAR(30),

age TINYINT UNSIGNED NOT NULL,

alexa INT UNSIGNED NOT NULL UNIQUE,

uv FLOAT DEFAULT '0',

country CHAR(3) NOT NULL,

PRIMARY KEY (`id`)

);


如果已经创建了 website 表,则可以通过 ALTER TABLE 语句将 UNIQUE 约束添加到 alexa 字段,代码如下:

ALTER TABLE website

MODIFY alexa INT UNSIGNED NOT NULL UNIQUE;

如果您希望为多个字段添加 UNIQUE 约束,则可使用下面的语法:

ALTER TABLE website

ADD CONSTRAINT myUniqueConstraint UNIQUE(alexa, url);

删除 UNIQUE 约束

可以使用下面的 SQL 语句来删除 UNIQUE 约束:

ALTER TABLE website

DROP CONSTRAINT myUniqueConstraint;

如果您使用的是 MySQL,那么应该修改为如下的语句:

ALTER TABLE website

DROP INDEX myUniqueConstraint;