1. Ràng buộc NOT NULL

Khi tạo các cột, mặc định rằng cột được tạo sẽ có thể chứa những giá trị rỗng (hay NULL). Trong một số trường hợp ta luôn mong muốn cột được thêm vào luôn có giá trị và để làm được việc này ta sẽ cần sử dụng ràng buộc NOT NULL.

Khi có ràng buộc NOT NULL trong cột thì sẽ không chấp nhận những cột bị bỏ trống rỗng dữ liệu (NULL). Điều này buộc một trường phải luôn chứa giá trị, có nghĩa là bạn không thể chèn bản ghi mới hoặc cập nhật bản ghi mà không thêm giá trị vào trường này.

Cú pháp thêm ràng buộc NOT NULL trong câu lệnh tạo bảng như sau:

CREATE TABLE table_name (
    column1 datatype NOT NULL,
    column2 datatype NOT NULL,
    column3 datatype NOT NULL,
   ....
);

Trong đó:

  • CREATE TABLE là câu lệnh hay từ khóa cần có
  • table_name là tên của bảng cần tạo
  • column1, column2, column3… là tên các cột thuộc trong bảng
  • datatype là kiểu dữ liệu của từng cột
  • NOT NULL là ràng buộc cho cột

Ngoài ra, khi bảng đó đã được tạo sẵn ta cũng có thể bổ xung ràng buộc NOT NULL vào một cột có trong bảng đó như sau:

ALTER TABLE table_name
MODIFY column datatype NOT NULL;

2. Ví dụ NOT NULL

Ví dụ dưới đây, tôi sẽ tạo ra một bảng có tên là ConNguoi bao gồm các cột là ID, Ho, Ten, DiaChi, ThanhPho. Tôi mong muốn rằng khi dữ liệu được thêm vào bảng thì cột ID, Ho, Ten sẽ không được phép rỗng vì thế nên tôi sẽ sử dụng NOT NULL cho 3 cột này như sau:

CREATE TABLE ConNguoi (
    ID int NOT NULL,
    Ho varchar(25) NOT NULL,
    Ten varchar(25) NOT NULL,
    DiaChi nvarchar(255),
    ThanhPho nvarchar(255)
);

Sau khi bảng ConNguoi đã được tạo ra ở trên, tôi cần bổ xung ràng buộc NOT NULL cho cột DiaChi có trong bảng, để làm được điều này tôi sẽ phải sử dụng câu lệnh ALTER TABLE như sau:

ALTER TABLE ConNguoi
MODIFY DiaChi nvarchar(255) NOT NULL;

Như vậy, sau khi thực thi các hành động cập nhật hay thêm các bản ghi dữ liệu vào bảng, các cột ID, Ho, Ten, DiaChi sẽ không được phép bỏ trống, nếu như 1 trong 4 cột có ràng buộc NOT NULL bị bỏ trống thì sẽ không thể thêm hay cập nhật lại được dữ liệu vào trong bảng!