PRIMARY KEY 主鍵約束

PRIMARY KEY 主鍵用來唯一識別資料表中的每一筆記錄。主鍵欄位的值必須是唯一的,且不能是 NULL。

主鍵的特性:

  • 等同於 UNIQUE + NOT NULL
  • 一個資料表只能有一個主鍵
  • 主鍵可以由單一欄位或多個欄位組成

建立資料表時設定

CREATE TABLE customers (
    id INT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100)
);

也可以寫在資料表定義的最後:

CREATE TABLE customers (
    id INT NOT NULL,
    name VARCHAR(50) NOT NULL,
    PRIMARY KEY (id)
);

命名主鍵約束

CREATE TABLE customers (
    id INT NOT NULL,
    name VARCHAR(50) NOT NULL,
    CONSTRAINT pk_customer PRIMARY KEY (id)
);

組合主鍵 (Composite Key)

當主鍵由多個欄位組成時,稱為組合主鍵:

CREATE TABLE order_items (
    order_id INT,
    product_id INT,
    quantity INT,
    CONSTRAINT pk_order_item PRIMARY KEY (order_id, product_id)
);

這表示 order_idproduct_id 的組合必須唯一。

新增主鍵約束

ALTER TABLE customers ADD PRIMARY KEY (id);

-- 或命名約束
ALTER TABLE customers ADD CONSTRAINT pk_customer PRIMARY KEY (id);

移除主鍵約束

-- MySQL
ALTER TABLE customers DROP PRIMARY KEY;

-- SQL Server / PostgreSQL
ALTER TABLE customers DROP CONSTRAINT pk_customer;

主鍵與 AUTO INCREMENT

主鍵通常會搭配 AUTO INCREMENT 使用,讓資料庫自動產生唯一的編號:

CREATE TABLE customers (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL
);