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 đó.
Bài viết này được đăng tại [free tuts .net]
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.