首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

Oracle 主鍵(Primary Key)完整操作指南

     編輯:Oracle 教學

Oracle 主鍵(Primary Key)完整操作指南

主鍵是關聯式資料庫中唯一識別每筆記錄的核心約束。本文詳細說明 Oracle 中主鍵的建立、啟用、停用與刪除操作,涵蓋單欄位主鍵、複合主鍵及 ALTER TABLE 動態管理的完整語法與實戰範例。

1. 學習目標

透過範例講解如何建立、刪除、停用與啟用主鍵約束,掌握主鍵管理的完整生命週期。

2. 什麼是主鍵?

主鍵能唯一標識資料表中的每一列記錄,可由單一欄位或多欄位組成(複合主鍵)。主鍵欄位不允許空值,且每張表僅能擁有一個主鍵。

注意事項: Oracle 複合主鍵欄位數不超過 32 個。主鍵可在建表時定義,或事後透過 ALTER TABLE 新增。

3. 建表時定義主鍵

單欄位主鍵範例

CREATE TABLE tb_pk_example (
    id NUMBER,
    name VARCHAR2(50),
    description VARCHAR2(300),
    CONSTRAINT tb_pk_example_pk PRIMARY KEY (id)
);

複合主鍵範例

CREATE TABLE tb_supplier_ex (
    supplier_id NUMBER,
    supplier_name VARCHAR2(50),
    supplier_description VARCHAR2(300),
    contact_name VARCHAR2(50),
    CONSTRAINT tb_supplier_ex_pk PRIMARY KEY (supplier_id, supplier_name)
);

4. 使用 ALTER TABLE 新增主鍵

語法結構

ALTER TABLE table_name
ADD CONSTRAINT constraint_name PRIMARY KEY (col1, col2, ...);

實戰範例:先建表再加主鍵

-- 建立員工表與部門表
CREATE TABLE tb_employees (
    employee_id NUMBER,
    employee_name VARCHAR2(50),
    employee_age NUMBER,
    employee_birth DATE,
    department_id NUMBER
);

CREATE TABLE tb_departments (
    department_id NUMBER,
    department_name VARCHAR2(100),
    location VARCHAR2(300)
);

-- 新增單欄位主鍵
ALTER TABLE tb_employees
ADD CONSTRAINT tb_employees_pk PRIMARY KEY (employee_id);

-- 新增複合主鍵
ALTER TABLE tb_departments
ADD CONSTRAINT tb_departments_pk PRIMARY KEY (department_id, department_name);

5. 停用主鍵

語法

ALTER TABLE table_name DISABLE CONSTRAINT constraint_name;

範例

ALTER TABLE tb_employees DISABLE CONSTRAINT tb_employees_pk;

6. 啟用主鍵

語法

ALTER TABLE table_name ENABLE CONSTRAINT constraint_name;

範例

ALTER TABLE tb_employees ENABLE CONSTRAINT tb_employees_pk;

7. 刪除主鍵

語法

ALTER TABLE table_name DROP CONSTRAINT constraint_name;

批次刪除範例

ALTER TABLE tb_employees DROP CONSTRAINT tb_employees_pk;
ALTER TABLE tb_departments DROP CONSTRAINT tb_departments_pk;
ALTER TABLE tb_pk_example DROP CONSTRAINT tb_pk_example_pk;
ALTER TABLE tb_supplier_ex DROP CONSTRAINT tb_supplier_ex_pk;

若有問題或代碼錯誤,歡迎指正。

聯絡信箱:david.louis.tian@outlook.com

版權聲明:轉載請註明出處。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved