首頁 > web前端 > js教程 > 主體

SQL 中的鍵 |主鍵 |外鍵|候選鍵|複合鍵|備用鍵|超級鍵|代理鍵|唯一鑰匙

Linda Hamilton
發布: 2024-10-02 14:19:01
原創
459 人瀏覽過

Keys in SQL | Primary Key | Foreign Key| Candidate Key|Composite Key |Alternate Key|Super Key|Surrogate Key| Unique Key

在 SQL 中,鍵用於唯一標識表中的行、強製表之間的關係並維護資料完整性。鑰匙有不同類型,每種都有特定的用途。以下是各種按鍵的詳細說明和簡單範例:

  1. 主鍵

主鍵唯一標識表中的每筆記錄。不能有NULL值,每個表只能有一個主鍵。

範例:

建立學生表(
StudentID INT PRIMARY KEY, -- 主鍵
名稱 VARCHAR(50),
年齡 INT
);

這裡,StudentID 是主鍵,這表示每個 StudentID 值必須是唯一且非空的。


  1. 外鍵

外鍵是在兩個表之間建立關係的一列(或一組列)。它指向另一個表的主鍵,強制引用完整性。

範例:

建立表格課程(
CourseID INT PRIMARY KEY, -- 主鍵
課程名稱 VARCHAR(50)
);

建立表格註冊 (
EnrollmentID INT 主鍵,
學生 ID INT,
課程 ID INT,
外鍵(CourseID)參考課程(CourseID)--外鍵
);

這裡,Enrollments 表中的 CourseID 是引用 Courses 表中的 CourseID 的外鍵。


  1. 候選密鑰

候選鍵是可以唯一標識表中的行的一列(或一組列)。一張表可以有多個候選鍵,但只能選擇其中一個作為主鍵。

範例:

建立表格員工 (
EmployeeID INT, -- 候選鍵
電子郵件 VARCHAR(100), -- 候選鍵
名稱 VARCHAR(50),
PRIMARY KEY (EmployeeID) -- 選擇為主鍵
);

在此表中,EmployeeID 和 Email 都可以唯一標識一行,因此它們是候選鍵。但是,選擇 EmployeeID 作為主鍵。


  1. 複合鍵

複合鍵是由兩列或多列組成的主鍵,它們共同唯一標識表中的一行。

範例:

建立表格訂單 (
訂單 ID INT,
產品 ID INT,
數量 INT,
主鍵(訂單 ID、產品 ID)-- 複合鍵
);

這裡,OrderID 和 ProductID 一起構成一個複合鍵。任何兩行都不能有相同的 OrderID 和 ProductID 組合。


  1. 備用鍵

備用鍵是任何未選為主鍵的候選鍵。

範例:

建立表車輛 (
VehicleID INT, -- 主鍵
LicensePlate VARCHAR(50), -- 備用密鑰
擁有者名稱 VARCHAR(50),
主鍵(車輛 ID)
);

這裡,LicensePlate 是候選密鑰,但不是主密鑰,因此它是備用密鑰。


  1. 唯一密鑰

唯一鍵可確保一列或一組列中的所有值彼此不同。與主鍵不同,唯一鍵可以具有 NULL 值。

範例:

建立表格使用者(
使用者 ID INT 主鍵,
電子郵件 VARCHAR(100) UNIQUE, -- 唯一鍵
使用者名稱 VARCHAR(50)
);

這裡,Email 是唯一按鍵,確保沒有兩個使用者俱有相同的電子郵件地址,但它可以允許 NULL 值(如果需要)。


  1. 超級鑰匙

超級鍵是一組一個或多個列,可以唯一標識表中的一行。候選鍵是一個最小的超級鍵(即,在不遺失唯一性屬性的情況下不能從中刪除任何列)。

範例:

在員工表中:

(EmployeeID, Email) -- 超級鍵(EmployeeID 和 Email 一起可以唯一識別行)

任何可以唯一標識行的組合,例如單獨的 EmployeeID 或 Email,或兩者一起,都可以被視為超級鍵。


  1. 代理鍵

代理鍵是用作表格的唯一識別碼的人工鍵。它通常是系統產生的值,例如自動遞增整數,沒有實際意義。

範例:

建立表格訂單 (
OrderID INT AUTO_INCRMENT, -- 代理鍵
產品名稱 VARCHAR(50),
數量 INT,
主鍵(訂單 ID)
);

這裡的OrderID是一個代理鍵,一般由資料庫系統生成,沒有任何直接的業務意義。


按鍵摘要:

每個鍵在設計結構良好的資料庫以確保資料完整性和高效查詢方面都起著至關重要的作用。

以上是SQL 中的鍵 |主鍵 |外鍵|候選鍵|複合鍵|備用鍵|超級鍵|代理鍵|唯一鑰匙的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板