SQL唯一约束
什么是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主键,同时可以将多个唯一约束应用于表的各个列。