MySQL 中的多個主鍵
在本教程中,我們的目標是探索 MySQL 中表的多個主鍵的概念。很多時候,企業和組織必須將某些列分配為主鍵。
這個 primary
鍵有多種用途和理由來困擾它的設定。它本質上用於確保分配為主鍵的每個列條目都是唯一的。
如果已將多列指定為主
鍵,則這些值的組合應該是唯一的。請注意,primary
鍵不能在其列中擁有 Null
值。
如果我們在此列中推送或插入 Null
值,我們肯定會收到錯誤。有時,組織有必要擺脫這個鍵來插入多個相似的值或 null
值。
該表可以有多個主
鍵。這些附加鍵稱為複合主鍵
。
準確地說,多個主鍵沒有分配給列,但是可以在宣告 primary
鍵時描述多個列。讓我們瞭解此鍵的工作原理,並將多列分配給 primary
鍵。
在 MySQL 中使用 student_details_table
建立表
在開始之前,我們建立一個虛擬資料集來使用。在這裡,我們建立了一個表 student_details_table
以及幾行。
-- create the table student_details_table
CREATE TABLE student_details_table(
stu_id int,
stu_firstName varchar(255),
stu_lastName varchar(255) DEFAULT NULL,
primary key(stu_id, stu_firstName)
);
-- insert rows to the table student_details_table
INSERT INTO student_details_table(stu_id,stu_firstName,stu_lastName)
VALUES(1,"Preet","Sanghavi"),
(2,"Rich","John"),
(3,"Veron","Brow"),
(4,"Geo","Jos"),
(5,"Hash","Shah"),
(6,"Sachin","Parker"),
(7,"David","Miller");
如我們所見,我們已經將 stu_id
和 stu_firstName
設定為我們的表 student_details
的主鍵。這將確保此列中的值不能重複或 NULL
。
上面的查詢建立了一個包含名字和姓氏的行的表。要檢視資料中的條目,我們使用以下程式碼。
SELECT * FROM student_details;
上面提到的查詢將給出以下輸出。
stu_id stu_firstName stu_lastName
1 Preet Sanghavi
2 Rich John
3 Veron Brow
4 Geo Jos
5 Hash Shah
6 Sachin Parker
7 David Miller
使用 DESCRIBE
語句顯示 MySQL 中表的結構
現在讓我們使用 DESCRIBE
語句,看看我們是否有多個列與主鍵關聯。
DESCRIBE name_of_the_table;
在我們的例子中,我們需要編寫以下查詢來了解表 student_details_table
的詳細資訊。
DESCRIBE student_details_table;
該語句將幫助我們獲取表的複雜詳細資訊,例如與每列關聯的資料型別、不同列及其名稱、與每列關聯的鍵以及與表相關的任何額外資訊。
Field Type Null Key Default Extra
stu_id int NO PRI
stu_firstName varchar(255) NO PRI
stu_lastName varchar(255) YES
上表顯示欄位 stu_id
和 stu_firstName
被視為主鍵。
可能需要這樣做,因為很多時候,企業需要維護記錄,以便不存在某些列的重複組合。
例如,假設一家以產品為基礎的公司每天需要限制客戶訂單和與客戶相關的產品數量。
在這種情況下,他們可能需要設定兩個主鍵作為客戶 ID 和產品 ID,以匹配資料並執行任何必要的操作,而無需任何重複的組合。
因此,藉助上面的查詢,我們可以高效地為 MySQL 中的一個表設定多個主鍵。