SQLite - Ràng buộc
Ràng buộc là các quy tắc được thực thi 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.
Ràng buộc 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 thường được sử dụng có sẵn 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 giá trị mặc định cho một cột khi không có cột nào đượ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 - Nhận dạng duy nhất từng 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.
Ràng buộc KHÔNG ĐẦY ĐỦ
Theo mặc định, một cột có thể chứa 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 như vậy trên cột này, xác định rằng NULL bây giờ không được phép cho cột đó.
NULL không giống như không có dữ liệu, đúng hơn, nó đại diện cho dữ liệu không xác định.
Thí dụ
Ví dụ: câu lệnh SQLite sau đây tạo một bảng mới có tên là COMPANY và thêm năm cột, ba trong số đó, 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
);
Ràng buộc DEFAULT
Ràng buộc DEFAULT cung cấp giá trị mặc định cho một cột khi câu lệnh INSERT INTO không cung cấp giá trị cụ thể.
Thí dụ
Ví dụ: câu lệnh SQLite sau đây tạo một bảng mới có tên là COMPANY và thêm năm cột. Ở đây, cột LƯƠNG đượ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
);
Hạn chế duy nhất
Ràng buộc DUY NHẤT ngăn không cho hai bản ghi có các giá trị giống 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.
Thí dụ
Ví dụ: câu lệnh SQLite sau đây tạo một bảng mới có tên là COMPANY và thêm năm cột. Ở đây, cột TUỔI được đặt thành DUY NHẤT, 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
);
Ràng buộc CHÍNH CHÍNH
Ràng buộc PRIMARY KEY xác định duy nhất từng bản ghi trong bảng cơ sở dữ liệu. Có thể có nhiều cột DUY NHẤT, nhưng chỉ có một khóa chính trong bảng. Khóa chính rất quan trọng khi thiết kế bảng cơ sở dữ liệu. Khóa chính là ID duy nhất.
Chúng tôi sử dụng chúng để chỉ các hàng trong 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 'giám sát mã hóa lâu dài', khóa chính có thể là NULL trong SQLite. Đây không phải là trường hợp của 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 được có giá trị NULL.
Một bảng chỉ có thể có một khóa chính, có thể bao gồm một hoặc nhiều trường. Khi nhiều trường được sử dụng làm khóa chính, chúng được gọi làcomposite key.
Nếu một bảng có khóa chính được xác định trên (các) trường bất kỳ, thì bạn không thể có hai bản ghi có cùng giá trị của (các) trường đó.
Thí dụ
Bạn đã thấy nhiều ví dụ khác nhau ở trên trong đó chúng tôi đã 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
);
Ràng buộc KIỂM TRA
Ràng buộc CHECK cho phép một điều kiện để kiểm tra giá trị đang được nhập vào bản ghi. Nếu điều kiện đánh giá là false, bản ghi vi phạm ràng buộc và không được nhập vào bảng.
Thí dụ
Ví dụ: SQLite sau đây tạo một bảng mới có tên là COMPANY và thêm năm cột. Ở đây, chúng tôi thêm cột KIỂM TRA với LƯƠNG, vì vậy bạn không thể có bất kỳ số không LƯƠNG nào.
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)
);
Ràng buộc bỏ qua
SQLite hỗ trợ một tập hợp con hạn chế 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 cột, xóa cột hoặc thêm hoặc xóa các ràng buộc khỏi bảng.