MySQL 中的多個主鍵

Preet Sanghavi 2023年1月30日
  1. 在 MySQL 中使用 student_details_table 建立表
  2. 使用 DESCRIBE 語句顯示 MySQL 中表的結構
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_idstu_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_idstu_firstName 被視為主鍵。

可能需要這樣做,因為很多時候,企業需要維護記錄,以便不存在某些列的重複組合。

例如,假設一家以產品為基礎的公司每天需要限制客戶訂單和與客戶相關的產品數量。

在這種情況下,他們可能需要設定兩個主鍵作為客戶 ID 和產品 ID,以匹配資料並執行任何必要的操作,而無需任何重複的組合。

因此,藉助上面的查詢,我們可以高效地為 MySQL 中的一個表設定多個主鍵。

作者: Preet Sanghavi
Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

相關文章 - MySQL Key