📅  最后修改于: 2020-12-13 05:34:06             🧑  作者: Mango
DBMS中有某些键可用于不同目的,其中最广为人知的是主键。
这里,在本节中,我们将研究主键-它是什么,主键的用途是什么,并且我们还将实现一些示例以了解主键的工作原理。
主键是表的最小属性集,具有唯一标识行的任务,或者我们可以说给定特定表的元组。
如上所述,主键用于唯一地标识表的行。因此,需要唯一标识的行,键约束设置为该特定字段的主键。主键永远不能具有NULL值,因为主键的用途是唯一地标识一个值,但是如果那里没有值,它将如何维持下去。因此,具有主键约束的字段集不能为NULL。此外,用户可以添加或删除密钥(如果已应用)完全取决于用户。
注意:在一个表中只有一个或多个列的情况下,一个表只能有一个主键。
让我们发现一些示例,通过这些示例我们可以了解主键的角色和使用。通常,在数据库中,我们将主键应用于需要唯一标识其他数据库字段的元组或列。
例如:当我们将学生的注册详细信息存储在数据库中时,我们会找到唯一的注册号字段,并将主键分配给该字段。同样,对于一个雇员表,我们在表的雇员ID上设置主键。
让我们实际了解它:
下表是名为STUDENT_DETAILS的表,其中Roll_no,Name和Marks是其指定的属性。
我们知道,从这三个属性中,Roll_no属性是可以唯一标识表的其他两个属性的属性,因为每个学生在每个组织中都具有唯一的编号。因此,我们可以在Roll_no列上设置主键约束。
如果我们将Name设置为主键怎么办?
如果我们在Name属性上设置主键,则该键将无效,因为两个或多个学生可以具有相同的名称。因此,如果我们在“名称”上设置主键并尝试为两个学生输入相同的名称,则会显示错误。这就是为什么我们不能将Name属性设置为主键的原因。
如果将标记设置为主键怎么办?
如果我们在Marks属性上设置主键,那么这将是不合适的方法,因为两个或更多学生可以在一个科目中获得相似的分数。因此,如果将Marks属性设置为主键,则将无法为其他实体输入相同的分数。这就是为什么我们不能为Marks属性设置主键的原因。
我们可以看下面的表格来理解它:
考虑另一个示例,其中我们有一个名为PRODUCT_DETAILS的表,该表具有以下属性:
COMP_Id:可以从其购买不同产品的公司ID。
Prod_Name:它摄取我们购买的产品。
Prod_Id:每个产品都有一个标识号。
注意事项:
通过查看下表,我们可以更好地理解它:
让我们讨论如何在STUDENT_DETAILS表属性上设置主键:
以下是在STUDENT_DETAILS表的Roll_no属性上创建主键的语法:
CREATE TABLE STUDENT_DETAIL (
Roll_no int NOT NULL PRIMARY KEY,
Name varchar (200) NOT NULL,
Marks int NOT NULL
} ;
它是SQL和Oracle服务器中使用的基本语法。
也可以使用ALTER和DROP命令从属性中删除设置的主键。
ALTER TABLE STUDENT_DETAIL DROP PRIMARY KEY ;
为了在创建表后设置主键,请使用ALTER命令并添加主键约束。语法如下所示:
ALTER TABLE STUDENT_DETAIL
ADD CONSTRAINT PK_STUDENT_DETAIL PRIMARY KEY (Roll_no, Name);
我们采用Name属性只是为了理解语法。
因此,通过这种方式,我们可以在表上使用和设置主键。但是,用于定义主键的语法对于不同类型的数据库可能有所不同。