Các ràng buộc Constraint trong SQLite

Các ràng buộc (Constraints) là các quy tắc được thi hành trên một cột dữ liệu trên bảng. Chúng được sử dụng để giới hạn loại dữ liệu có thể đi vào bảng. Điều này đảm bảo tính chính xác và độ tin cậy của dữ liệu trong cơ sở dữ liệu.

1. Constraint trong SQLite là gì?

Các ràng buộc (Constraints) có thể là cấp cột hoặc cấp bảng. Các ràng buộc mức cột chỉ được áp dụng cho một cột, trong khi các ràng buộc mức bảng được áp dụng cho toàn bộ bảng.

Sau đây là các ràng buộc có sẵn thường được sử dụng trong SQLite.

  • NOT NULL Constraint: Đảm bảo rằng một cột không thể có giá trị NULL.
  • DEFAULT Constraint: Cung cấp một giá trị mặc định cho một cột khi không được chỉ định.
  • UNIQUE Constraint: Đảm bảo rằng tất cả các giá trị trong một cột là khác nhau.
  • PRIMARY Key: Xác định duy nhất mỗi hàng/bản ghi trong bảng cơ sở dữ liệu.
  • CHECK Constraint: Đảm bảo rằng tất cả các giá trị trong một cột thỏa mãn các điều kiện nhất định.

2. Constraint NOT NULL trong SQLite

Theo mặc định, một cột có thể giữ các giá trị NULL. Nếu bạn không muốn một cột có giá trị NULL, thì bạn cần xác định ràng buộc đó trên cột này chỉ định rằng NULL hiện không được phép cho cột đó.

Một NULL không giống như không có dữ liệu, thay vào đó, nó đại diện cho dữ liệu không xác định.

Ví dụ: câu lệnh SQLite sau đây tạo một bảng mới gọi là COMPANY và thêm 5 cột, 3 trong số đó là ID và NAME và AGE, chỉ định không chấp nhận NULL.

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

3. Constraint DEFAULT trong SQLite

Constraint DEFAULT cung cấp một giá trị mặc định cho một cột khi câu lệnh INSERT INTO không cung cấp một giá trị cụ thể.

Ví dụ: câu lệnh SQLite sau đây tạo một bảng mới gọi là COMPANY và thêm 5 cột. Ở đây, cột SALARY được đặt thành 5000.00 theo mặc định, do đó, trong trường hợp câu lệnh INSERT INTO không cung cấp giá trị cho cột này, thì theo mặc định, cột này sẽ được đặt thành 5000.00.

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL    DEFAULT 50000.00
);

4. Constraint UNIQUE trong SQLite

Constraint UNIQUE ngăn hai bản ghi có các giá trị giống hệt nhau trong một cột cụ thể. Ví dụ, trong bảng COMPANY, bạn có thể muốn ngăn hai hoặc nhiều người có cùng độ tuổi.

Ví dụ: câu lệnh SQLite sau đây tạo một bảng mới gọi là COMPANY và thêm năm cột. Tại đây, cột AGE được đặt thành UNIQUE, do đó bạn không thể có hai bản ghi có cùng độ tuổi

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL UNIQUE,
   ADDRESS        CHAR(50),
   SALARY         REAL    DEFAULT 50000.00
);

5. Constraint PRIMARY KEY trong SQLite

Constraint PRIMARY KEY xác định duy nhất mỗi bản ghi trong bảng cơ sở dữ liệu. Có thể có nhiều cột UNIQUE hơn, nhưng chỉ có một khóa chính trong một bảng. Các khóa chính rất quan trọng khi thiết kế các bảng cơ sở dữ liệu. Khóa chính là ID duy nhất.

Chúng ta sử dụng chúng để chỉ các hàng của bảng. Khóa chính trở thành khóa ngoại trong các bảng khác, khi tạo quan hệ giữa các bảng. Do 'longstanding coding oversight', các khóa chính có thể là NULL trong SQLite. Đây không phải là trường hợp với các cơ sở dữ liệu khác.

Khóa chính là một trường trong bảng xác định duy nhất từng hàng / bản ghi trong bảng cơ sở dữ liệu. Khóa chính phải chứa các giá trị duy nhất. Một cột khóa chính không thể có giá trị NULL.

Nếu một bảng có khóa chính được xác định trên bất kỳ trường nào, thì bạn không thể có hai bản ghi có cùng giá trị của trường đó.

Bạn đã thấy các ví dụ khác nhau ở trên, chúng ta đã tạo bảng COMPANY với ID làm khóa chính.

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

6. Constraint CHECK trong SQLite

Constraint CHECK cho phép một điều kiện để kiểm tra giá trị được nhập vào một bản ghi. Nếu điều kiện là sai, bản ghi sẽ vi phạm ràng buộc và không được nhập vào bảng.

Ví dụ: SQLite sau đây tạo một bảng mới gọi là COMPANY và thêm 5 cột. Ở đây, chúng ta thêm một CHECK với cột SALARY, để bạn không thể có bất kỳ giá trị 0 nào trong cột SALARY.

CREATE TABLE COMPANY3(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL    CHECK(SALARY > 0)
);

7. Constraint Dropping trong SQLite

SQLite hỗ trợ một subset giới hạn của ALTER TABLE. Lệnh ALTER TABLE trong SQLite cho phép người dùng đổi tên bảng hoặc thêm cột mới vào bảng hiện có. Không thể đổi tên một cột, xóa một cột hoặc thêm hoặc xóa các ràng buộc khỏi một bảng.

-------------------#####-------------------

Loạt bài SQLite được biên dịch từ TutorialsPoint.

Khóa học nên xem

Nguồn: freetuts.net