SQL การใช้งาน DEFAULT Constraint

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
);
  1. id INT PRIMARY KEY: คอลัมน์ id ใช้เป็น Primary Key ซึ่งต้องมีค่าที่ไม่ซ้ำกัน
  2. name VARCHAR(100) NOT NULL: คอลัมน์ name กำหนดให้เป็นข้อมูลชนิด VARCHAR ขนาด 100 ตัวอักษร และต้องไม่เป็นค่าว่าง (NOT NULL)
  3. hire_date DATE DEFAULT CURRENT_DATE: คอลัมน์ hire_date กำหนดให้เป็นชนิดข้อมูลวันที่ (DATE) และค่าเริ่มต้นเป็นวันที่ปัจจุบัน (CURRENT_DATE)
  4. department VARCHAR(50) DEFAULT 'Sales': คอลัมน์ department เป็นข้อมูลชนิด VARCHAR ขนาด 50 ตัวอักษร และค่าเริ่มต้นคือ ‘Sales’
  5. 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');
  1. ในการเพิ่มข้อมูลครั้งแรก เราระบุทุกค่า (id, name, hire_date, department, salary) ดังนั้น ไม่มีการใช้ค่า default ใด ๆ
  2. ในการเพิ่มข้อมูลครั้งที่สอง เราไม่ระบุ hire_date และ department ดังนั้นระบบจะใช้ค่า default คือวันที่ปัจจุบันและแผนก ‘Sales’
  3. ในการเพิ่มข้อมูลครั้งที่สาม เราไม่ระบุ salary ซึ่งค่า default ของเงินเดือนจะเป็น 30,000
  4. ในการเพิ่มข้อมูลครั้งที่สี่ เราระบุแค่ id และ name ดังนั้นค่าของ hire_date, department, และ salary จะใช้ค่า default ตามที่กำหนด

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

แชร์เรื่องนี้