1. Giới thiệu
SQL DEFAULT Constraint là một ràng buộc được sử dụng để gán giá trị mặc định cho một cột nếu không có giá trị nào được cung cấp trong quá trình chèn dữ liệu. Nếu bạn không chỉ định giá trị cho cột đó khi thêm bản ghi, giá trị mặc định sẽ được chèn vào cột thay vì giá trị NULL.
Sử dụng DEFAULT giúp đảm bảo rằng dữ liệu trong bảng luôn có giá trị hợp lệ và tránh việc phải nhập thủ công các giá trị lặp lại nhiều lần.
2. Chức năng của SQL DEFAULT Constraint
- Giá trị mặc định được áp dụng tự động nếu cột không có giá trị cụ thể khi chèn dữ liệu.
- Đảm bảo tính đồng nhất và giúp giảm bớt công việc lặp lại khi bạn cần giá trị mặc định giống nhau cho nhiều bản ghi.
- Giá trị mặc định có thể là một hằng số hoặc một giá trị được tính toán, chẳng hạn như ngày hiện tại với hàm
CURRENT_DATE.
3. Cú pháp của SQL DEFAULT Constraint
Khi tạo bảng, bạn có thể gán giá trị mặc định cho một cột bằng cách sử dụng cú pháp:
CREATE TABLE table_name (
column_name datatype DEFAULT default_value
);Bạn cũng có thể thêm DEFAULT vào bảng đã tồn tại bằng cách sử dụng câu lệnh ALTER TABLE.
ALTER TABLE table_name
MODIFY column_name datatype DEFAULT default_value;4. Ví dụ về SQL DEFAULT Constraint
a. Ví dụ 1: Tạo bảng với giá trị mặc định
Trong ví dụ này, chúng ta sẽ tạo bảng employees với cột hire_date có giá trị mặc định là ngày hiện tại (sử dụng hàm CURRENT_DATE) nếu không có giá trị cụ thể được chèn vào.
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
hire_date DATE DEFAULT CURRENT_DATE
);- Cột
hire_datesẽ tự động nhận giá trị là ngày hiện tại nếu không có giá trị nào được cung cấp khi chèn bản ghi mới.
Chèn dữ liệu mà không cung cấp giá trị cho cột hire_date:
INSERT INTO employees (employee_id, first_name, last_name)
VALUES (1, 'John', 'Doe');- Kết quả:
hire_datesẽ tự động nhận giá trị là ngày hiện tại (ngày mà bạn thực thi câu lệnh).
b. Ví dụ 2: Giá trị mặc định cho cột kiểu số
Bạn có thể áp dụng ràng buộc DEFAULT cho các cột số để đảm bảo rằng giá trị mặc định sẽ được áp dụng nếu không có giá trị nào được cung cấp.
CREATE TABLE products (
product_id INT PRIMARY KEY,
product_name VARCHAR(100),
quantity INT DEFAULT 10
);- Cột
quantitysẽ mặc định có giá trị là 10 nếu không có giá trị nào được cung cấp.
Chèn dữ liệu mà không cung cấp giá trị cho cột quantity:
INSERT INTO products (product_id, product_name)
VALUES (1, 'Laptop');- Kết quả:
quantitysẽ tự động nhận giá trị là 10.
c. Ví dụ 3: Thêm giá trị mặc định vào bảng đã tồn tại
Nếu bạn có một bảng đã tồn tại và muốn thêm ràng buộc DEFAULT cho một cột, bạn có thể sử dụng câu lệnh ALTER TABLE.
ALTER TABLE employees
MODIFY salary DECIMAL(10, 2) DEFAULT 50000.00;- Cột
salarysẽ nhận giá trị mặc định là 50,000.00 nếu không có giá trị nào được cung cấp khi thêm bản ghi mới.
d. Ví dụ 4: Xóa ràng buộc DEFAULT
Nếu bạn muốn xóa giá trị mặc định khỏi một cột, bạn có thể làm như sau:
ALTER TABLE employees
ALTER salary DROP DEFAULT;- Sau câu lệnh này, cột
salarysẽ không còn giá trị mặc định.
5. Một số lưu ý khi sử dụng SQL DEFAULT Constraint
a. Giá trị mặc định không thể là giá trị phức tạp
Trong MySQL, giá trị mặc định chỉ có thể là hằng số hoặc hàm như CURRENT_DATE hoặc CURRENT_TIMESTAMP. Bạn không thể sử dụng các biểu thức hoặc truy vấn phức tạp làm giá trị mặc định.
b. DEFAULT với cột AUTO_INCREMENT
Không thể áp dụng ràng buộc DEFAULT cho cột có thuộc tính AUTO_INCREMENT. Cột AUTO_INCREMENT tự động tạo ra giá trị tăng dần mà không cần giá trị mặc định.
c. Sử dụng DEFAULT với các loại dữ liệu khác nhau
- Chuỗi: Bạn có thể gán một chuỗi ký tự mặc định.
- Số: Bạn có thể gán một số cụ thể.
- Ngày tháng: Bạn có thể sử dụng
CURRENT_DATEhoặcCURRENT_TIMESTAMPđể gán giá trị ngày giờ hiện tại.
Kết luận
Ràng buộc DEFAULT trong SQL giúp bạn dễ dàng gán giá trị mặc định cho các cột trong bảng, đảm bảo tính nhất quán và giảm thiểu lỗi trong quá trình nhập liệu. Nhờ vào DEFAULT, bạn có thể tự động hóa việc điền các giá trị chung mà không cần phải nhập thủ công mỗi lần.
Việc hiểu và sử dụng DEFAULT Constraint một cách hiệu quả sẽ giúp bạn xây dựng các bảng dữ liệu tốt hơn, đơn giản hóa các thao tác chèn dữ liệu và tránh các giá trị NULL không mong muốn. Hãy thử áp dụng ràng buộc DEFAULT trong các dự án thực tế của bạn trên CodeTutHub để hiểu rõ hơn về cách hoạt động của nó trong MySQL!








