DEFAULT Constraint ใช้ในการกำหนดค่าเริ่มต้น (default value) ให้กับคอลัมน์ในตาราง เมื่อมีการเพิ่มข้อมูลใหม่แต่ไม่ได้ระบุค่าของคอลัมน์นั้น ๆ ระบบจะใช้ค่าเริ่มต้นที่กำหนดโดยอัตโนมัติ
ประโยชน์ของ DEFAULT Constraint
- ลดความจำเป็นในการกำหนดค่าทุกครั้งที่เพิ่มข้อมูล
- ช่วยให้ข้อมูลมีความสม่ำเสมอในกรณีที่ไม่มีการระบุค่า
ตัวอย่างการใช้งาน DEFAULT Constraint
ในตัวอย่างนี้ เราจะสร้างตารางชื่อว่า employees ที่ประกอบด้วยคอลัมน์ต่าง ๆ ดังนี้
id: เป็นเลขประจำตัวพนักงาน (Primary Key)name: ชื่อพนักงาน (ไม่มีค่า default)hire_date: วันที่เข้าทำงาน (ถ้าไม่ระบุจะเป็นวันที่ปัจจุบันโดยใช้ค่าDEFAULT CURRENT_DATE)department: แผนกของพนักงาน (ค่าเริ่มต้นคือ “Sales”)salary: เงินเดือนพนักงาน (ค่าเริ่มต้นคือ 30,000)
SQL
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
hire_date DATE DEFAULT CURRENT_DATE,
department VARCHAR(50) DEFAULT 'Sales',
salary DECIMAL(10, 2) DEFAULT 30000.00
);id INT PRIMARY KEY: คอลัมน์idใช้เป็น Primary Key ซึ่งต้องมีค่าที่ไม่ซ้ำกันname VARCHAR(100) NOT NULL: คอลัมน์nameกำหนดให้เป็นข้อมูลชนิดVARCHARขนาด 100 ตัวอักษร และต้องไม่เป็นค่าว่าง (NOT NULL)hire_date DATE DEFAULT CURRENT_DATE: คอลัมน์hire_dateกำหนดให้เป็นชนิดข้อมูลวันที่ (DATE) และค่าเริ่มต้นเป็นวันที่ปัจจุบัน (CURRENT_DATE)department VARCHAR(50) DEFAULT 'Sales': คอลัมน์departmentเป็นข้อมูลชนิดVARCHARขนาด 50 ตัวอักษร และค่าเริ่มต้นคือ ‘Sales’salary DECIMAL(10, 2) DEFAULT 30000.00: คอลัมน์salaryเป็นข้อมูลชนิดจำนวนทศนิยม 10 หลัก (2 หลักทศนิยม) และค่าเริ่มต้นคือ 30,000 บาท
เมื่อเราเพิ่มข้อมูลลงในตารางโดยไม่ระบุค่าในบางคอลัมน์ ค่าที่ถูกกำหนดเป็น DEFAULT จะถูกใช้งานโดยอัตโนมัติ
SQL
-- เพิ่มข้อมูลโดยระบุทุกค่า
INSERT INTO employees (id, name, hire_date, department, salary)
VALUES (1, 'John Doe', '2023-10-01', 'Engineering', 50000);
-- เพิ่มข้อมูลโดยไม่ระบุวันที่เข้าทำงานและแผนก (ใช้ค่า default)
INSERT INTO employees (id, name, salary)
VALUES (2, 'Jane Smith', 40000);
-- เพิ่มข้อมูลโดยไม่ระบุเงินเดือน (ใช้ค่า default)
INSERT INTO employees (id, name, department)
VALUES (3, 'Emily Johnson', 'Marketing');
-- เพิ่มข้อมูลโดยไม่ระบุวันที่เข้าทำงาน, แผนก, และเงินเดือน (ใช้ค่า default)
INSERT INTO employees (id, name)
VALUES (4, 'Robert Brown');- ในการเพิ่มข้อมูลครั้งแรก เราระบุทุกค่า (
id,name,hire_date,department,salary) ดังนั้น ไม่มีการใช้ค่า default ใด ๆ - ในการเพิ่มข้อมูลครั้งที่สอง เราไม่ระบุ
hire_dateและdepartmentดังนั้นระบบจะใช้ค่า default คือวันที่ปัจจุบันและแผนก ‘Sales’ - ในการเพิ่มข้อมูลครั้งที่สาม เราไม่ระบุ
salaryซึ่งค่า default ของเงินเดือนจะเป็น 30,000 - ในการเพิ่มข้อมูลครั้งที่สี่ เราระบุแค่
idและnameดังนั้นค่าของhire_date,department, และsalaryจะใช้ค่า default ตามที่กำหนด

ข้อมูลที่ได้

