SQL唯一约束

时间:2020-02-23 14:32:36  来源:igfitidea点击:

什么是UNIQUE约束?

SQL约束是一组规则,适用于架构或者馈入数据库结构的数据。
这样的约束之一就是UNIQUE。
" UNIQUE"这个名称本身就说明了其性质和功能。

SQL UNIQUE约束使列中没有冗余值。
它有助于将输入值限制为唯一。
因此,通过将UNIQUE约束应用于一列或者一组列,我们确保数据中不包含重复项。

让我们通过实时应用程序/示例了解UNIQUE约束的重要性和功能。

考虑一个在线电子学习业务门户。
商业门户的所有者声明,他将在未来一段时间内授予免费访问数据科学程序的权限。
为了访问程序资料,考生必须输入其电子邮件地址和电话号码。

现在,要确保单个候选人一次能收到一个材料包,数据库工程师必须确保数据库中不必接受重复的电子邮件ID和电话号码。

这是SQL UNIQUE约束出现的地方。
使用UNIQUE约束,不允许重复条目。
因此,确保单个候选人不会授予访问多个程序资料包的权限。

了解了SQL UNIQUE约束的工作原理之后,现在让我们了解一下它的语法。

SQL UNIQUE约束的语法

SQL UNIQUE约束适用于数据库的结构和数据。

-- Any data definition language command(CREATE/ALTER/DROP)
column-name UNIQUE;

SQL UNIQUE约束在定义表中的命令时应用于一列或者多列,甚至可以在修改表时应用(例如ALTER命令)

通过将UNIQUE规则应用于列,数据库将仅接受指定列的"唯一"值。

通过示例实现UNIQUE约束

我们将以多种不同方式使用SQL UNIQUE约束。

带有CREATE表命令的SQL UNIQUE CONSTRAINT。

在此示例中,我们使用SQL Create查询创建一个表并定义以下列:

  • id
  • acc_no
  • name
CREATE TABLE INFO(
 ID   INT              NOT NULL,
 ACC_NO  INT           UNIQUE,
NAME VARCHAR (20),   
 PRIMARY KEY (ID)
);

其中" id"列指定为NOT NULL(constraint),这意味着传递到此列的数据值永远不能为空或者null。
此外," ID"列定义为充当主键。
SQL PRIMARY KEY也可以确保传递给表的值是非冗余的。

我们已将" acc_no"列设置为UNIQUE,通过该列,该列的重复条目将被禁止。
如果我们尝试为" acc_no"输入重复值,则会出现重复值错误。

我们可以为表的多个列设置UNIQUE约束,如下所示

CREATE TABLE Sales (
  ID int NOT NULL,
  NAME varchar(255) NOT NULL,
  Age int,
  Salary INT,
  CONSTRAINT Unique_sales UNIQUE (NAME,Age)
);

在上面的示例中,我们将UNIQUE约束设置为两列-" NAME"和" Age",并提供了约束名称为" Unique_sales"。

带有ALTER table命令的SQL UNIQUE CONSTRAINT

有时,如果我们希望在定义后将UNIQUE约束设置为任何数据列,则可以将其与SQL Alter表查询合并。

SQL ALTER表查询以及UNIQUE约束可帮助我们修改列的规则,并为指定的一个或者多个列设置唯一的规则/约束。

其中我们修改了上面创建的表" Sales",并将" Unique"约束设置为" Age"列。

ALTER TABLE Sales
 MODIFY Age INT UNIQUE;

带有SQL DROP命令的SQL UNIQUE CONSTRAINT

我们可以借助SQL DROP命令从列中删除规则/约束,如下所示

ALTER TABLE Sales
DROP CONSTRAINT Unique_sales;

重要说明

如前所述,该主键还可以确保数据库中的条目不重复。

那么,为什么需要使用UNIQUE约束呢?

让我用最简单的术语回答这个问题。

SQL主键具有确保表中非冗余值的相同目的(如唯一性约束)。
但是,一个表可以有一个SINGLE主键,同时可以将多个唯一约束应用于表的各个列。