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 TABLEtừ 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 EXISTStù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 EXISTStùy chọn này sẽ dẫn đến lỗi. - Thứ ba, tùy chọn chỉ định
schema_namemà bảng mới thuộc về. Lược đồ có thể là cơ sở dữ liệu chính,tempcơ 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 NULLvàCHECKrà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,UNIQUEvàCHECKràng buộc. - Cuối cùng, tùy chọn sử dụng
WITHOUT ROWIDlự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,oidhoặc_rowid_cột.rowidcộ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 ROWIDlựa chọn. Một bảng có chứarowidcột được gọi làrowidbàn. Lưu ý rằngWITHOUT ROWIDtù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:
-
contactsbảng lưu trữ thông tin liên hệ. - Các
groupsbảng lưu trữ thông tin nhóm. -
contact_groupsbả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 ACTIONCode language: SQL (Structured Query Language) (sql) FOREIGN KEY (group_id)
REFERENCES groups (group_id)
ON DELETE CASCADE
ON UPDATE NO ACTIONCode 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ố.