SQL การใช้งาน PRIMARY KEY Constraint

ใน SQL PRIMARY KEY คือข้อบังคับ (constraint) ที่ใช้เพื่อบังคับให้คอลัมน์หรือชุดของคอลัมน์ในตารางมีค่าไม่ซ้ำกันและไม่เป็นค่า NULL โดยค่าในคอลัมน์นี้จะต้องมีความเป็นเอกลักษณ์ (unique) สำหรับแต่ละแถวในตาราง

การใช้งาน PRIMARY KEY Constraint

  1. Primary Key แบบคอลัมน์เดียว
    การกำหนด PRIMARY KEY ให้กับคอลัมน์เดียว ทำให้ค่าของคอลัมน์นี้ไม่ซ้ำกันและไม่สามารถเป็น NULL ได้
  2. Primary Key แบบหลายคอลัมน์ (Composite Primary Key)
    การกำหนด PRIMARY KEY ให้กับหลายคอลัมน์หรือ “คอมโพสิต” จะทำให้คู่ของค่าระหว่างคอลัมน์ที่อยู่ใน PRIMARY KEY ต้องไม่ซ้ำกัน

ตัวอย่างการใช้งาน

Primary Key แบบคอลัมน์เดียว

สร้างตาราง Customers โดยใช้ PRIMARY KEY ในคอลัมน์ CustomerID

SQL
CREATE TABLE Customers (
    CustomerID INT PRIMARY KEY,
    FirstName VARCHAR(50),
    LastName VARCHAR(50),
    Email VARCHAR(100)
);

ในตัวอย่างนี้คอลัมน์ CustomerID เป็น PRIMARY KEY ซึ่งหมายความว่าค่าของคอลัมน์นี้จะไม่ซ้ำกันและไม่สามารถเป็น NULL ได้

โครงสร้างของตารางจะเป็นดังนี้

แทรกข้อมูลตัวอย่างด้วยคำสั่งดังนี้

SQL
INSERT INTO Customers (CustomerID, FirstName, LastName, Email) 
VALUES 
(1, 'John', 'Doe', '[email protected]'),
(2, 'Jane', 'Smith', '[email protected]');

ข้อมูลในตารางจะเป็นดังนี้

Primary Key แบบหลายคอลัมน์ (Composite Primary Key)

ในตัวอย่างนี้เราจะสร้างตาราง Orders ที่ใช้ OrderID และ ProductID เป็น PRIMARY KEY ร่วมกัน หมายความว่า ค่าของคู่คอลัมน์ระหว่าง OrderID และ ProductID จะต้องไม่ซ้ำกันในตาราง

SQL
CREATE TABLE Orders (
    OrderID INT,
    ProductID INT,
    Quantity INT,
    PRIMARY KEY (OrderID, ProductID)
);

ในตัวอย่างนี้ PRIMARY KEY ถูกกำหนดโดยคอลัมน์ OrderID และ ProductID ร่วมกัน ซึ่งจะทำให้ไม่มีแถวใดในตารางที่มีค่าของคอลัมน์ OrderID และ ProductID ซ้ำกัน

โครงสร้างของตารางที่ได้

แทรกข้อมูลเข้าไปในตารางด้วยคำสั่งดังนี้

SQL
INSERT INTO Orders (OrderID, ProductID, Quantity)
VALUES 
(1001, 1, 10),
(1001, 2, 5),
(1002, 1, 15);

ในตารางนี้ ไม่มีแถวใดที่มีคู่ของ OrderID และ ProductID ซ้ำกัน เพราะถูกบังคับโดย PRIMARY KEY

อธิบายโค้ดตัวอย่าง

  • ในตาราง Customers เรากำหนด PRIMARY KEY ให้กับ CustomerID ทำให้ CustomerID เป็นตัวกำหนดเอกลักษณ์ของข้อมูลลูกค้าแต่ละคน ข้อมูลในคอลัมน์นี้จะไม่ซ้ำกันและต้องไม่เป็นค่า NULL
  • ในตาราง Orders เราใช้ PRIMARY KEY แบบหลายคอลัมน์หรือ Composite Primary Key โดยรวมคอลัมน์ OrderID และ ProductID เข้าด้วยกัน ซึ่งหมายความว่าเราสามารถมี OrderID ที่ซ้ำกันได้ แต่คู่ของ OrderID และ ProductID ต้องไม่ซ้ำกัน
แชร์เรื่องนี้