Tóm tắt :trong hướng dẫn này, bạn sẽ học cách tạo bảng mới bằng SQLite CREATE TABLE
tuyên bố sử dụng các tùy chọn khác nhau.
Giới thiệu về SQLite CREATE TABLE
tuyên bố
Để tạo một bảng mới trong SQLite, bạn sử dụng CREATE TABLE
câu lệnh sử dụng cú pháp sau:
CREATE TABLE [IF NOT EXISTS] [schema_name].table_name (
column_1 data_type PRIMARY KEY,
column_2 data_type NOT NULL,
column_3 data_type DEFAULT 0,
table_constraints
) [WITHOUT ROWID];
Code language: SQL (Structured Query Language) (sql)
Trong cú pháp này:
- Đầu tiên, hãy chỉ định tên của bảng mà bạn muốn tạo sau
CREATE TABLE
từ khóa. Tên của bảng không được bắt đầu bằngsqlite_
vì nó được dành riêng cho việc sử dụng nội bộ của SQLite. - Thứ hai, sử dụng
IF NOT EXISTS
tùy chọn để tạo một bảng mới nếu nó không tồn tại. Cố gắng tạo một bảng đã tồn tại mà không sử dụngIF NOT EXISTS
tùy chọn này sẽ dẫn đến lỗi. - Thứ ba, tùy chọn chỉ định
schema_name
mà bảng mới thuộc về. Lược đồ có thể là cơ sở dữ liệu chính,temp
cơ sở dữ liệu hoặc bất kỳ cơ sở dữ liệu đính kèm nào. - Thứ tư, chỉ định danh sách cột của bảng. Mỗi cột có tên, kiểu dữ liệu và ràng buộc cột. SQLite hỗ trợ
PRIMARY KEY
,UNIQUE
,NOT NULL
vàCHECK
ràng buộc cột. - Thứ năm, chỉ định các ràng buộc bảng, chẳng hạn như
PRIMARY KEY
,FOREIGN KEY
,UNIQUE
vàCHECK
ràng buộc. - Cuối cùng, tùy chọn sử dụng
WITHOUT ROWID
lựa chọn. Theo mặc định, một hàng trong bảng có một cột ngầm định, được gọi làrowid
,oid
hoặc_rowid_
cột.rowid
cột lưu trữ khóa số nguyên có dấu 64-bit nhận dạng duy nhất hàng bên trong bảng. Nếu bạn không muốn SQLite tạorowid
, bạn chỉ địnhWITHOUT ROWID
lựa chọn. Một bảng có chứarowid
cột được gọi làrowid
bàn. Lưu ý rằngWITHOUT ROWID
tùy chọn chỉ khả dụng trong SQLite 3.8.2 trở lên.
Lưu ý rằng khóa chính của bảng là một cột hoặc một nhóm cột xác định duy nhất mỗi hàng trong bảng.
SQLite CREATE TABLE
ví dụ
Giả sử bạn phải quản lý các liên hệ bằng SQLite.
Mỗi liên hệ có thông tin sau:
- Tên
- Họ
- Điện thoại
Yêu cầu là email và điện thoại phải là duy nhất. Ngoài ra, mỗi địa chỉ liên hệ thuộc về một hoặc nhiều nhóm và mỗi nhóm có thể có 0 hoặc nhiều địa chỉ liên hệ.
Dựa trên những yêu cầu này, chúng tôi đưa ra ba bảng:
-
contacts
bảng lưu trữ thông tin liên hệ. - Các
groups
bảng lưu trữ thông tin nhóm. -
contact_groups
bảng lưu trữ mối quan hệ giữa các địa chỉ liên hệ và nhóm.
Sơ đồ cơ sở dữ liệu sau minh họa các bảng:contacts
groups
và contact_groups.
Câu lệnh sau tạo contacts
bảng.
CREATE TABLE contacts (
contact_id INTEGER PRIMARY KEY,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
email TEXT NOT NULL UNIQUE,
phone TEXT NOT NULL UNIQUE
);
Code language: SQL (Structured Query Language) (sql)
Hãy thử nó
contact_id
là khóa chính của contacts
bảng.
Vì khóa chính bao gồm một cột, bạn có thể sử dụng ràng buộc cột.
first_name
và last_name
các cột có TEXT
lớp lưu trữ và các cột này NOT NULL
. Có nghĩa là bạn phải cung cấp các giá trị khi bạn chèn hoặc cập nhật các hàng trong contacts
bảng.
Email và điện thoại là duy nhất, do đó chúng tôi sử dụng UNIQUE
ràng buộc cho mỗi cột.
Câu lệnh sau tạo groups
bảng:
CREATE TABLE groups (
group_id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
Code language: SQL (Structured Query Language) (sql)
Hãy thử nó
Các nhóm groups
bảng khá đơn giản với hai cột:group_id
và name
. group_id
là cột khóa chính.
Câu lệnh sau tạo contact_groups
bảng:
CREATE TABLE contact_groups(
contact_id INTEGER,
group_id INTEGER,
PRIMARY KEY (contact_id, group_id),
FOREIGN KEY (contact_id)
REFERENCES contacts (contact_id)
ON DELETE CASCADE
ON UPDATE NO ACTION,
FOREIGN KEY (group_id)
REFERENCES groups (group_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
);
Code language: SQL (Structured Query Language) (sql)
Hãy thử nó
contact_groups
bảng có khóa chính bao gồm hai cột:contact_id
và group_id
.
Để thêm ràng buộc khóa chính của bảng, bạn sử dụng cú pháp sau:
PRIMARY KEY (contact_id, group_id)
Code language: SQL (Structured Query Language) (sql)
Ngoài ra, contact_id
và group_id
là các khóa ngoại. Do đó, bạn sử dụng FOREIGN KEY
ràng buộc để xác định khóa ngoại cho mỗi cột.
FOREIGN KEY (contact_id)
REFERENCES contacts (contact_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
Code language: SQL (Structured Query Language) (sql)
FOREIGN KEY (group_id)
REFERENCES groups (group_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
Code language: SQL (Structured Query Language) (sql)
Lưu ý rằng chúng ta sẽ thảo luận trong FOREIGN KEY
ràng buộc chi tiết trong hướng dẫn tiếp theo.
Trong hướng dẫn này, bạn đã học cách tạo một bảng mới với các tùy chọn khác nhau bằng cách sử dụng SQLite CREATE TABLE
tuyên bố.