SQL - 备选键

Table of content


SQL 备选键

数据库表中的SQL备选键是指当前未被选为主键的候选键。它们可以用来唯一标识表中的一元组(或记录)。

表中没有设置备选键的特定查询或语法。它只是一个可以被选为主键的次优候选列。因此,它们也称为次要候选键。

如果数据库表只包含一个候选键,则该键被视为表的主键,则该表中没有备选键。

让我们通过一个例子来理解备选键的概念。假设我们有一个名为 CUSTOMERS 的表,其中包含 ID、NAME、AGE、AADHAAR_ID、MOBILE_NO 和 SALARY 等字段,如下所示。

Alternate

客户的 ID、手机号码和 Aadhaar 号码等详细信息是唯一的,我们可以使用它们各自的字段(ID、AADHAAR_ID 和 MOBILE_NO)唯一地识别 CUSTOMERS 表中的记录。因此,这三个字段可以被视为候选键。

如果其中一个被声明为 CUSTOMERS 表的主键,则其余两个将是备选键。

备选键的特性

以下是备选键的一些重要属性/特性:

  • 备选键不允许重复值。
  • 一个表可以有多个备选键。
  • 备选键可以包含 NULL 值,除非显式设置了 NOT NULL 约束。
  • 所有备选键都可以是候选键,但并非所有候选键都可以是备选键。
  • 主键(也是候选键)不能被视为备选键。

示例

为了更好地理解,让我们创建上面讨论的表,演示各种键的使用,并说明可以被视为备选键的字段。

CREATE TABLE CUSTOMERS(
   ID INT,
   NAME VARCHAR (20),
   AGE INT,
   AADHAAR_ID BIGINT,
   MOBILE_NO BIGINT,
   SALARY DECIMAL (18, 2),
   PRIMARY KEY(ID)      
);

现在,使用 INSERT 语句向 CUSTOMERS 表中插入一些记录,如下所示:

INSERT INTO CUSTOMERS VALUES 
(1, 'Ramesh', 32, 90123498456, 9023456789, 22000.00 ),
(2, 'Khilan', 25, 91123249545, 9032456578, 24500.34 ),
(3, 'Kaushik', 23, 91223242546, 9012436789, 20000.12 );

表将创建为:

ID 姓名 年龄 Aadhaar ID 手机号码 薪水
1 Ramesh 32 90123498456 9023456789 22000.00
2 Khilan 25 91123249545 9032456578 24500.34
3 Kaushik 23 91223242546 9012436789 20000.12

表中的键

作为总结,让我们重新回顾数据库表中的所有键:

候选键

候选键是超键的子集,用于唯一标识表中的记录。它可以是单个字段或多个字段。表中的主键、备选键、外键都是候选键的类型。

主键

主键是用于从表中检索记录的主要键。它是表中单个列或字段,用于唯一标识数据库表中的每个记录。

它可以使用 PRIMARY KEY 关键字在使用 CREATE TABLE 语句创建表时设置。以下是创建表中列的主键约束的基本语法:

CREATE TABLE table_name(
   column1 datatype,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
   PRIMARY KEY(column_name)
);

外键

一个表的主键将成为另一个表中的外键。在向这些表插入值时,主键字段中的值必须与外键字段中的值匹配;否则,外键列将不接受INSERT 查询并抛出错误。

在 SQL Server 中,在表中设置外键字段的语法是:

CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    ...
    CONSTRAINT fk_name 
	FOREIGN KEY (column_name) 
	REFERENCES referenced_table(referenced_column)
);

备选键

备选键是可以作为主键但不是主键的候选键。与主键一样,它也唯一地标识表字段中的记录,以从所述表中检索行元组。表中可以存在一个或多个字段作为备选键。

广告