SQL - Default Constraint: A Beginner's Guide

Xin chào các bạn đam mê SQL! Hôm nay, chúng ta sẽ cùng lặn sâu vào thế giới kỳ diệu của SQL Default Constraints. Đừng lo lắng nếu bạn mới bắt đầu học lập trình - tôi sẽ là người bạn thân thiện dẫn đường cho bạn trong hành trình này, giải thích từng bước một. Nào, cầm một tách cà phê, và chúng ta cùng bắt đầu nhé!

SQL - Default Constraint

The SQL DEFAULT Constraint

Hãy tưởng tượng bạn đang điền vào một mẫu đơn, và có một mục là "Country." Nếu đa số người dùng của bạn đến từ Hoa Kỳ, có phải sẽ rất tốt nếu "USA" đã được điền sẵn không? Đó chính xác là điều mà ràng buộc DEFAULT trong SQL làm - nó cung cấp một giá trị mặc định cho một cột khi không có giá trị cụ thể được cung cấp.

How It Works

Khi bạn tạo một bảng hoặc thêm một cột mới, bạn có thể chỉ định một giá trị mặc định. Giá trị này sẽ tự động được chèn vào nếu bạn không cung cấp một giá trị cụ thể khi thêm một bản ghi mới.

Hãy xem một ví dụ:

CREATE TABLE Customers (
CustomerID int NOT NULL,
CustomerName varchar(255) NOT NULL,
ContactName varchar(255),
Country varchar(255) DEFAULT 'USA'
);

Trong ví dụ này, chúng ta đã tạo một bảng "Customers". Cột "Country" có ràng buộc DEFAULT được đặt là 'USA'. Điều này có nghĩa là nếu chúng ta không chỉ định một quốc gia khi thêm một khách hàng mới, nó sẽ tự động được đặt là 'USA'.

Inserting Data with DEFAULT

Bây giờ, hãy thêm một số khách hàng vào bảng của chúng ta:

INSERT INTO Customers (CustomerID, CustomerName, ContactName)
VALUES (1, 'John Doe', 'John');

INSERT INTO Customers (CustomerID, CustomerName, ContactName, Country)
VALUES (2, 'Jane Smith', 'Jane', 'Canada');

Sau khi chạy các lệnh INSERT này, bảng của chúng ta sẽ trông như thế này:

CustomerID CustomerName ContactName Country
1 John Doe John USA
2 Jane Smith Jane Canada

Chú ý rằng quốc gia của John Doe tự động được đặt là 'USA', trong khi quốc gia của Jane Smith được chỉ định là 'Canada'.

Passing "DEFAULT" as Value

Đôi khi, bạn có thể muốn sử dụng giá trị mặc định một cách rõ ràng, ngay cả khi bạn đang chỉ định giá trị cho các cột khác. SQL cho phép bạn làm điều này bằng cách sử dụng từ khóa DEFAULT.

INSERT INTO Customers (CustomerID, CustomerName, ContactName, Country)
VALUES (3, 'Bob Johnson', 'Bob', DEFAULT);

Lệnh này sẽ chèn một bản ghi mới với 'USA' làm Quốc gia, giống như nếu chúng ta đã bỏ qua cột Country hoàn toàn.

Adding Default Constraint to an Existing Column

Nếu bạn đã tạo bảng của mình, nhưng bây giờ bạn muốn thêm một ràng buộc mặc định, không có vấn đề gì! SQL có thể giúp bạn.

Cú pháp chính xác có thể thay đổi tùy thuộc vào hệ thống cơ sở dữ liệu của bạn, nhưng đây là một ví dụ chung:

ALTER TABLE Customers
ALTER COLUMN Country SET DEFAULT 'USA';

Lệnh này sửa đổi bảng "Customers" hiện có, đặt giá trị mặc định cho cột "Country" là 'USA'.

A Word of Caution

Nhớ rằng, thêm ràng buộc mặc định không ảnh hưởng đến dữ liệu hiện có. Nó chỉ áp dụng cho các bản ghi mới hoặc cập nhật. Vậy nên nếu bạn có giá trị trống trong cột Country trước đó, chúng sẽ vẫn trống cho đến khi bạn cập nhật chúng.

Dropping Default Constraint

Tương tự như chúng ta có thể thêm ràng buộc mặc định, chúng ta cũng có thể xóa bỏ chúng. Điều này được gọi là "dropping" ràng buộc.

Lại một lần nữa, cú pháp chính xác có thể thay đổi, nhưng đây là một ví dụ chung:

ALTER TABLE Customers
ALTER COLUMN Country DROP DEFAULT;

Lệnh này xóa bỏ ràng buộc mặc định khỏi cột "Country" trong bảng "Customers".

When to Drop a Default Constraint

Bạn có thể muốn xóa bỏ ràng buộc mặc định nếu:

  1. Giá trị mặc định không còn phù hợp
  2. Bạn muốn bắt buộc nhập thủ công cho cột đó
  3. Bạn dự định xóa bỏ cột hoàn toàn

Practical Uses of DEFAULT Constraints

Ràng buộc DEFAULT rất hữu ích trong nhiều tình huống thực tế. Dưới đây là một vài ví dụ:

  1. Timestamps: Bạn có thể sử dụng DEFAULT để tự động ghi lại thời gian hiện tại khi một bản ghi được chèn vào.
CREATE TABLE Orders (
OrderID int NOT NULL,
ProductName varchar(255) NOT NULL,
OrderDate datetime DEFAULT CURRENT_TIMESTAMP
);
  1. Status Flags: Đối với các cột đại diện cho trạng thái hoặc tình trạng, bạn có thể đặt một trạng thái ban đầu mặc định.
CREATE TABLE Tasks (
TaskID int NOT NULL,
TaskName varchar(255) NOT NULL,
IsCompleted bit DEFAULT 0
);
  1. Configuration Settings: Khi lưu các thiết lập người dùng, bạn có thể đặt các mặc định hợp lý.
CREATE TABLE UserSettings (
UserID int NOT NULL,
Theme varchar(50) DEFAULT 'Light',
NotificationsEnabled bit DEFAULT 1
);

Conclusion

Và đây là tất cả, các bạn! Chúng ta đã cùng nhau hành trình qua vùng đất của SQL DEFAULT constraints. Chúng ta đã thấy cách tạo chúng, sử dụng chúng, thêm chúng vào các cột hiện có, và thậm chí là xóa bỏ chúng khi chúng không còn cần thiết.

Nhớ rằng, ràng buộc DEFAULT giống như những sinh vật nhỏ giúp đỡ trong cơ sở dữ liệu của bạn, điền vào các khoảng trống khi bạn quên hoặc không có thông tin tại tay. Chúng có thể tiết kiệm thời gian cho bạn, giảm thiểu lỗi và làm cho dữ liệu của bạn nhất quán hơn.

Khi bạn tiếp tục hành trình SQL của mình, bạn sẽ tìm thấy nhiều cách sử dụng khác cho ràng buộc DEFAULT. Chúng là một công cụ đơn giản nhưng mạnh mẽ trong bộ công cụ SQL của bạn. Vậy nên hãy tiến lên và sử dụng ràng buộc! Chúc các bạn lập trình vui vẻ!

Credits: Image by storyset