SQL การใช้งาน Constraint

Constraint ใน SQL คือเงื่อนไขที่ใช้กำหนดกฎการทำงานของตารางข้อมูล เช่น การกำหนดให้คอลัมน์มีค่าที่ไม่ซ้ำกัน ห้ามเป็นค่า NULL หรือค่าสูงสุดต่ำสุดที่กำหนดได้ เพื่อความถูกต้องและสมบูรณ์ของข้อมูลในฐานข้อมูล

ประเภทของ Constraint ใน SQL

  1. NOT NULL: กำหนดให้คอลัมน์ต้องมีค่า ไม่สามารถเป็นค่า NULL ได้
  2. UNIQUE: กำหนดให้ค่าของคอลัมน์นั้นไม่ซ้ำกัน
  3. PRIMARY KEY: เป็นการผสมผสานระหว่าง NOT NULL และ UNIQUE โดยกำหนดให้ค่าของคอลัมน์หรือกลุ่มคอลัมน์นั้นเป็นคีย์หลักที่ไม่ซ้ำกัน
  4. FOREIGN KEY: กำหนดให้ค่าของคอลัมน์นั้นอ้างอิงกับค่าของคอลัมน์ในตารางอื่น
  5. CHECK: ใช้สำหรับกำหนดเงื่อนไขที่คอลัมน์ต้องปฏิบัติตาม เช่น ต้องมีค่ามากกว่า 0
  6. DEFAULT: ใช้เพื่อกำหนดค่าเริ่มต้นให้กับคอลัมน์หากไม่มีการระบุค่าตอนแทรกข้อมูล

ตัวอย่างการสร้างตารางพร้อมการใช้งาน Constraint

สมมุติว่าเรามีฐานข้อมูลสำหรับเก็บข้อมูลของพนักงานในบริษัท ซึ่งต้องการตารางชื่อ Employees ที่มีข้อจำกัดดังนี้

  • emp_id: ต้องเป็น Primary Key ซึ่งไม่สามารถซ้ำหรือเป็น NULL ได้
  • first_name และ last_name: ต้องมีค่าและไม่เป็น NULL
  • email: ต้องมีค่าที่ไม่ซ้ำกันในฐานข้อมูล
  • salary: ต้องมีค่าไม่น้อยกว่า 0
  • dept_id: ต้องอ้างอิงกับตาราง Departments (เป็น Foreign Key)

SQL สำหรับสร้างตาราง

SQL
-- สร้างตาราง Departments ก่อน
CREATE TABLE Departments (
    dept_id INT PRIMARY KEY, -- PRIMARY KEY ให้ dept_id เป็นคีย์หลัก
    dept_name VARCHAR(100) NOT NULL -- กำหนดว่า dept_name ห้ามเป็น NULL
);

-- สร้างตาราง Employees โดยมีการใช้ Constraints ต่าง ๆ
CREATE TABLE Employees (
    emp_id INT PRIMARY KEY, -- PRIMARY KEY ให้ emp_id เป็นคีย์หลัก
    first_name VARCHAR(50) NOT NULL, -- NOT NULL ห้าม first_name เป็น NULL
    last_name VARCHAR(50) NOT NULL, -- NOT NULL ห้าม last_name เป็น NULL
    email VARCHAR(100) UNIQUE, -- UNIQUE ให้ email ต้องไม่ซ้ำกัน
    salary DECIMAL(10, 2) CHECK (salary >= 0), -- CHECK ตรวจสอบให้ salary ต้องมากกว่าหรือเท่ากับ 0
    dept_id INT, -- dept_id เป็น Foreign Key
    FOREIGN KEY (dept_id) REFERENCES Departments(dept_id) -- กำหนดให้ dept_id ในตาราง Employees อ้างอิงกับ dept_id ในตาราง Departments
);

ตาราง Departments:

  • คอลัมน์ dept_id เป็น PRIMARY KEY หมายความว่าเป็นคอลัมน์ที่ใช้ระบุแถวข้อมูลในตาราง และไม่สามารถมีค่า NULL หรือซ้ำกันได้
  • คอลัมน์ dept_name ใช้ NOT NULL เพื่อให้แน่ใจว่าต้องมีค่า ไม่สามารถเป็นค่า NULL ได้

ตาราง Employees:

  • คอลัมน์ emp_id เป็น PRIMARY KEY เช่นกัน โดยค่าต้องไม่ซ้ำและไม่สามารถเป็น NULL
  • คอลัมน์ first_name และ last_name กำหนดด้วย NOT NULL เพื่อไม่ให้มีค่าเป็น NULL
  • คอลัมน์ email ใช้ UNIQUE เพื่อป้องกันการแทรกข้อมูลที่ซ้ำกันในคอลัมน์นี้
  • คอลัมน์ salary ใช้ CHECK (salary >= 0) เพื่อกำหนดเงื่อนไขว่าเงินเดือนต้องไม่น้อยกว่า 0
  • คอลัมน์ dept_id กำหนดเป็น FOREIGN KEY โดยอ้างอิงไปยังคอลัมน์ dept_id ของตาราง Departments
แชร์เรื่องนี้