Các kiểu dữ liệu trong SQLite
Kiểu dữ liệu trong SQLite
là một thuộc tính chỉ định loại dữ liệu của bất kỳ đối tượng nào. Mỗi cột, biến và biểu thức có kiểu dữ liệu liên quan trong SQLite
.
Bạn sẽ sử dụng các kiểu dữ liệu này trong khi tạo các bảng của mình. SQLite
sử dụng hệ thống kiểu động. Trong SQLite
, kiểu dữ liệu của một giá trị được liên kết với chính giá trị đó, chứ không phải với vùng chứa (Container) của nó.
1. Lớp lưu trữ (Storage Classes) trong SQLite
Mỗi giá trị được lưu trữ trong cơ sở dữ liệu SQLite
có một trong các lớp lưu trữ sau:
Lớp lưu trữ | Mô tả |
NULL | Giá trị là giá trị NULL. |
INTEGER | Giá trị là một số nguyên có dấu, được lưu trữ trong 1, 2, 3, 4, 6 hoặc 8 byte tùy thuộc vào độ lớn của giá trị. |
REAL | Giá trị này là một giá trị dấu phẩy động, được lưu dưới dạng số dấu phẩy động 8 byte của IEEE. |
TEXT | Giá trị là một chuỗi văn bản, được lưu trữ bằng cách sử dụng mã hóa cơ sở dữ liệu (UTF-8, UTF-16BE hoặc UTF-16LE) |
BLOB | Giá trị là một blob của dữ liệu, được lưu trữ chính xác như đầu vào. |
Lớp lưu trữ SQLite
khá chung chung hơn một kiểu dữ liệu. Ví dụ, lớp lưu trữ INTEGER
bao gồm 6 kiểu dữ liệu số nguyên khác nhau có độ dài khác nhau.
Bài viết này được đăng tại [free tuts .net]
2. Affinity Type trong SQLite
SQLite
hỗ trợ khái niệm affinity type
trên các cột. Bất kỳ cột nào vẫn có thể lưu trữ bất kỳ loại dữ liệu nào nhưng lớp lưu trữ ưa tiên cho một cột được gọi là affinity
của nó. Mỗi cột trong cơ sở dữ liệu SQLite3
được gán một trong các affinitie type
sau:
Affinity | Mô tả |
TEXT | Cột này lưu trữ tất cả dữ liệu bằng cách sử dụng các lớp lưu trữ NULL, TEXT hoặc BLOB. |
NUMERIC | Cột này có thể chứa các giá trị sử dụng tất cả 5 lớp lưu trữ. |
INTEGER | Hành vi giống như một cột với NUMERIC affinity, với một ngoại lệ trong biểu thức CAST. |
REAL | Hành vi giống như một cột với NUMERIC affinity ngoại trừ việc nó buộc các giá trị nguyên thành biểu diễn dấu phẩy động. |
NONE | Một cột với NONE affinity không ưu tiên một lớp lưu trữ nào với lớp một lớp lưu trữ khác và không cố gắng ép dữ liệu từ một lớp lưu trữ này sang dạng một lớp lưu trữ khác |
3. Tên kiểu dữ liệu và affinity trong SQLite
Kiểu dữ liệu | Affinity |
|
INTEGER |
|
TEXT |
|
NONE |
|
REAL |
|
NUMERIC |
4. Kiểu dữ liệu Boolean trong SQLite
SQLite
không có lớp lưu trữ Boolean
riêng. Thay vào đó, các giá trị Boolean
được lưu dưới dạng số nguyên 0 (false) và 1 (true).
5. Kiểu dữ liệu date and time trong SQLite
SQLite
không có một lớp lưu trữ riêng biệt để lưu trữ ngày hoặc thời gian, nhưng SQLite
có khả năng lưu trữ ngày và thời gian dưới dạng các giá trị TEXT
, REAL
hoặc INTEGER
.
Lớp lưu trữ | Định dạng thời gian |
TEXT | Một ngày ở định dạng như "YYYY-MM-DD HH: MM: SS.SSS" |
REAL | Số ngày từ Greenwich November 24, 4714 B.C. |
INTEGER | Số giây kể từ 1970-01-01 00:00:00 UTC |
Bạn có thể chọn lưu trữ ngày và giờ ở bất kỳ định dạng nào và tự do chuyển đổi giữa các định dạng bằng các hàm ngày và giờ tích hợp.