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)
);

備選鍵

備選鍵是可以作為主鍵但不是主鍵的候選鍵。與主鍵一樣,它也唯一地標識表字段中的記錄,以從所述表中檢索行元組。表中可以存在一個或多個欄位作為備選鍵。

廣告