SQL 唯一键UNIQUE
SQL 唯一键
SQL唯一键 (或唯一约束)不允许表中某列中存在重复的值。它防止两条记录在某一列中有相同的值。
唯一键是主键的一种替代方式;因为唯一键和主键约束都确保表中某一列的唯一性。
假设我们有一个名为CUSTOMERS的表,用于存储银行中的客户记录,如果其中一个列名为MOBILE_NO,则可以在该列上创建一个唯一约束,以防止输入具有相同移动电话号码的多条记录。
唯一键的特点
以下是SQL数据库中唯一键的一些关键特点列表−
- 唯一键类似于表中的主键,但它可以接受NULL值,而主键不可以。
-
它只能接受一个NULL值。
-
它不能有重复的值。
-
它也可以作为另一个表中的外键使用。
-
一个表可以有多个唯一列。
创建SQL唯一键
您可以使用SQL中的 UNIQUE 关键字在数据库表上创建唯一键。在创建数据库表时,指定该SQL关键字以及要定义该键的列。
语法
以下是在表的某一列上创建唯一键约束的语法−
示例
使用以下SQL查询,我们正在创建一个名为CUSTOMERS的表,其中包含五个字段ID,NAME,AGE,ADDRESS和SALARY。在这里,我们在ID列上创建了唯一键。
输出
以下是上述SQL语句的输出结果:
验证
由于我们在名为ID的列上创建了唯一约束,所以我们不能在其中插入重复的值。让我们通过将具有重复ID值的以下记录插入CUSTOMERS表来进行验证 –
执行时,显示以下错误,证明ID列确实定义了UNIQUE约束:
多个唯一键
我们可以在SQL表中的一个或多个列上创建一个或多个唯一键。
语法
以下是在表中的多个列上创建唯一键约束的语法:
示例
假设我们使用CREATE TABLE语句在SQL数据库中创建了一个名为CUSTOMERS的表。 使用UNIQUE关键字,我们对ID和NAME列定义了唯一键,如下所示 –
输出
以下是上述SQL语句的输出-
验证
由于我们在名为ID和NAME的列上创建了唯一约束,因此无法在其中插入重复的值。让我们使用以下INSERT语句向BUYERS表中插入重复记录进行验证-
显示以下错误−
如果您尝试使用重复的值为列NAME插入另一条记录,操作会失败。
以下错误信息被生成 –
在现有列上创建唯一键
到目前为止,我们只看到了如何在创建新表时定义列上的唯一键。但是,我们也可以在现有表的列上添加唯一键。这可以使用ALTER TABLE… ADD CONSTRAINT语句来完成。
语法
以下是在现有表的列上创建唯一约束的语法 –
注意 − 这里的UNIQUE_KEY_NAME只是UNIQUE KEY的名称。在表中指定该名称是可选的,并且用于从列中删除约束。
示例
在此示例中,我们在现有的CUSTOMERS表的ADDRESS列上添加了一个唯一键。
输出
以下是上述语句的输出:
删除SQL唯一键
如果您已经在列上创建了唯一键,可以在不需要时删除它。要从表的列中删除唯一键,您需要使用ALTER TABLE语句。
语法
下面是从表的列中删除唯一约束的SQL查询语句:
示例
考虑上面创建的CUSTOMERS表,我们已经在名为ID、NAME和ADDRESS的三列上创建了唯一约束;通过执行以下SQL查询语句,删除列ADDRESS上的唯一约束:
输出
以下是以上语句的输出结果:
验证
现在,让我们插入两个ADDRESS列的重复记录 –
如果您验证表的内容,您会发现两条记录的地址相同,如下所示 –
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Ahmedabad | 1500.00 |