📅  最后修改于: 2020-12-13 05:39:24             🧑  作者: Mango
“独特”一词定义了一种不同于其他事物的事物。 DBMS中的唯一键是能够唯一标识表的所有记录的键。
在本节中,我们将通过一些示例来了解唯一键及其作用,并了解唯一键的工作方式。
DBMS中的唯一键用于唯一标识表中的元组,并用于防止表中的值重复。
唯一键用于删除表中值的重复。但是,主键的用法相同,但是两个键之间存在差异。主键不能采用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的图如下所示:
同样,从这两点我们可以理解,主键和唯一键是互不相同的。
我们可以举另一个例子,在一个表中可以有多个唯一键:
考虑一个示例,我们有一个Candidate_Detail表,该表具有以下属性:
Candidate_no:保存候选人的注册号的属性。
名称:保存候选人姓名的属性。
Aadhar_no:该属性保存候选人的12位Aadhar号码。
Other_Id:保存另一个ID号的值的属性。
下图显示了Candidate_Detail的表创建:
从上表中可以得出结论,我们可以将Aadhar_no以及Other_Id设置为唯一键,因为这两个列都将为NULL或带有唯一的标识号。因此,我们只能将两列设置为一个表中的唯一键。