????????在 MySQL 數據庫中,主鍵(Primary Key) 是表結構設計中最重要的約束之一。它不僅是數據唯一性的保障,也是多表關聯、查詢優化的核心工具。本文將從 主鍵的作用 和 主鍵的用法 兩個方面進行講解,并配合代碼示例幫助理解
一、主鍵的作用
1. 唯一標識記錄
主鍵的主要作用是唯一標識表中的每一行數據
主鍵列的值必須 唯一(Unique)
主鍵列的值不能 為空(NOT NULL)
示例
CREATE TABLE users (id INT PRIMARY KEY, -- 主鍵username VARCHAR(50),email VARCHAR(100)
);INSERT INTO users (id, username, email) VALUES
(1, 'Alice', 'alice@example.com'),
(2, 'Bob', 'bob@example.com');
此時 id
作為主鍵,不能重復,也不能為 NULL
如果你執行:
INSERT INTO users (id, username, email) VALUES (1, 'Charlie', 'charlie@example.com');
會報錯:
Duplicate entry '1' for key 'PRIMARY'
2. 保證數據完整性
????????主鍵約束能有效防止重復數據出現,從而保證數據的一致性
示例
CREATE TABLE customers (email VARCHAR(100) PRIMARY KEY,name VARCHAR(50)
);
此時任何兩行都不能有相同的 email
,避免一個郵箱重復注冊。
3. 作為外鍵的目標
????????主鍵是外鍵關聯的基礎。其他表的外鍵字段通常引用某個表的主鍵,從而建立 一對多 或 多對多 關系。
示例
CREATE TABLE orders (order_id INT PRIMARY KEY,user_id INT,FOREIGN KEY (user_id) REFERENCES users(id)
);
????????這樣 orders.user_id
必須是 users.id
中已存在的值,防止出現無效的訂單記錄
4. 提高查詢性能
????????在 InnoDB 存儲引擎中,主鍵會自動創建 聚簇索引(Clustered Index),數據存儲會按主鍵順序組織
查詢時,如果條件中包含主鍵,MySQL 可以直接定位到目標行,而無需全表掃描
示例
SELECT * FROM users WHERE id = 2;
會直接通過主鍵索引定位到目標行,速度非常快。
二、主鍵的使用方法
1. 創建表時定義主鍵
CREATE TABLE products (product_id INT PRIMARY KEY,name VARCHAR(100),price DECIMAL(10,2)
);
2. 創建表后添加主鍵
ALTER TABLE products
ADD PRIMARY KEY (product_id);
3. 復合主鍵(多個列組成主鍵)
當單一字段不足以唯一標識一行數據時,可以使用 復合主鍵。
CREATE TABLE order_items (order_id INT,product_id INT,quantity INT,PRIMARY KEY (order_id, product_id)
);
此時 order_id
和 product_id
的組合必須唯一。
4. 自增主鍵(AUTO_INCREMENT)
讓主鍵自動遞增,避免手動輸入 ID:
CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT,username VARCHAR(50),email VARCHAR(100)
);
5. 刪除主鍵
ALTER TABLE products
DROP PRIMARY KEY;