Constraint ใน SQL คือเงื่อนไขที่ใช้กำหนดกฎการทำงานของตารางข้อมูล เช่น การกำหนดให้คอลัมน์มีค่าที่ไม่ซ้ำกัน ห้ามเป็นค่า NULL หรือค่าสูงสุดต่ำสุดที่กำหนดได้ เพื่อความถูกต้องและสมบูรณ์ของข้อมูลในฐานข้อมูล
ประเภทของ Constraint ใน SQL
- NOT NULL: กำหนดให้คอลัมน์ต้องมีค่า ไม่สามารถเป็นค่า NULL ได้
- UNIQUE: กำหนดให้ค่าของคอลัมน์นั้นไม่ซ้ำกัน
- PRIMARY KEY: เป็นการผสมผสานระหว่าง
NOT NULLและUNIQUEโดยกำหนดให้ค่าของคอลัมน์หรือกลุ่มคอลัมน์นั้นเป็นคีย์หลักที่ไม่ซ้ำกัน - FOREIGN KEY: กำหนดให้ค่าของคอลัมน์นั้นอ้างอิงกับค่าของคอลัมน์ในตารางอื่น
- CHECK: ใช้สำหรับกำหนดเงื่อนไขที่คอลัมน์ต้องปฏิบัติตาม เช่น ต้องมีค่ามากกว่า 0
- DEFAULT: ใช้เพื่อกำหนดค่าเริ่มต้นให้กับคอลัมน์หากไม่มีการระบุค่าตอนแทรกข้อมูล
ตัวอย่างการสร้างตารางพร้อมการใช้งาน Constraint
สมมุติว่าเรามีฐานข้อมูลสำหรับเก็บข้อมูลของพนักงานในบริษัท ซึ่งต้องการตารางชื่อ Employees ที่มีข้อจำกัดดังนี้
emp_id: ต้องเป็น Primary Key ซึ่งไม่สามารถซ้ำหรือเป็น NULL ได้first_nameและlast_name: ต้องมีค่าและไม่เป็น NULLemail: ต้องมีค่าที่ไม่ซ้ำกันในฐานข้อมูลsalary: ต้องมีค่าไม่น้อยกว่า 0dept_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

