📜  DBMS中的唯一键

📅  最后修改于: 2020-12-13 05:39:24             🧑  作者: Mango

DBMS中的唯一密钥

“独特”一词定义了一种不同于其他事物的事物。 DBMS中的唯一键是能够唯一标识表的所有记录的键。

在本节中,我们将通过一些示例来了解唯一键及其作用,并了解唯一键的工作方式。

什么是唯一密钥

DBMS中的唯一键用于唯一标识表中的元组,并用于防止表中的值重复。

唯一键的作用

唯一键用于删除表中值的重复。但是,主键的用法相同,但是两个键之间存在差异。主键不能采用NULL值,但是唯一键可以具有一个NULL值作为其值。

唯一键与主键有何不同

存在以下差异点,这些差异点将使我们了解唯一键和主键之间的区别:

  • 主键字段的值永远不能为NULL ,而唯一键字段的值之一可以为NULL
  • 一个表不能具有多个主键,但是一个表可以具有多个唯一键。
  • 关系数据库有不同类型,但是在其中一些数据库中,默认情况下,主键可以生成聚集索引。另一方面,默认情况下,唯一键能够生成非聚集索引。

这些解释了一些差异,这些差异将帮助我们区分这两个键。

注意:SQL标准认为唯一键不能满足或保证那些以NULL作为其值的行的唯一性。但是,其他RDBMS不遵循SQL标准。

实施唯一密钥

在这里,我们将在以下方面实现唯一的键约束:

创建表

下面的语法显示了CREATE Table上唯一键的实现:

CREATE TABLE Student (
    Sid int NOT NULL,
    Sname varchar(100) NOT NULL,
    Course varchar(120),
    Age int,
    UNIQUE (Sid)
);

下面是在表中的多个列上实现唯一键的另一种语法:

CREATE TABLE Student (
    Sid int NOT NULL,
    Sname varchar(100) NOT NULL,
    Course varchar(120),
    Age int,
    CONSTRAINT UC_StudId UNIQUE (Sid, Sname)
);

我们仅在创建一个表的同时在两列上设置了唯一键。

更改键

下面是在ALTER键上使用唯一键的语法:

ALTER TABLE Student
ADD UNIQUE (Sid);

它是用于为表的一列定义唯一键的语法。

下面是可用于在表的多个列上定义唯一键的另一种语法:

ALTER TABLE Student
ADD CONSTRAINT UC_StudId UNIQUE (Sid, Sname);

删除唯一键

我们可以轻松地从表的列/列中删除唯一键。

下面是从表中删除唯一键的语法:

ALTER TABLE Student
DROP INDEX UC_StudId;

唯一键示例

让我们看一个示例,以了解唯一键的工作。

考虑具有以下属性的表STUDENT_DETAIL:

Roll_no:保存提供给学生的卷号的属性。

名称:该属性保存指定卷号上学生的姓名。

地址:保存学生地址的属性。

Personal_id:一个属性,其中包含学生的任何其他personal_id(例如Aadhar卡,护照等)的编号id。

上面的STUDENT_DETAIL的图如下所示:

注意事项:

  • 从这里,我们可以看到学生的Roll_no将用作主键,并且不会包含NULL值,因为每个学生都有其唯一的卷号,因此该值不能为null。
  • 其次,我们可以将Personal_id设置为唯一密钥,因为可能由于某种原因可能会有一个学生没有其他任何个人ID。因此,在这种情况下,可以将值设置为NULL,并且唯一键的值只能为null。因此,我们可以将Personal_id设置为唯一键。

同样,从这两点我们可以理解,主键和唯一键是互不相同的。

范例2:

我们可以举另一个例子,在一个表中可以有多个唯一键:

考虑一个示例,我们有一个Candidate_Detail表,该表具有以下属性:

Candidate_no:保存候选人的注册号的属性。

名称:保存候选人姓名的属性。

Aadhar_no:该属性保存候选人的12位Aadhar号码。

Other_Id:保存另一个ID号的值的属性。

下图显示了Candidate_Detail的表创建:

从上表中可以得出结论,我们可以将Aadhar_no以及Other_Id设置为唯一键,因为这两个列都将为NULL或带有唯一的标识号。因此,我们只能将两列设置为一个表中的唯一键。