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.

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
  • INT
  • INTEGER
  • TINYINT
  • SMALLINT
  • MEDIUMINT
  • BIGINT
  • UNSIGNED BIG INT
  • INT2
  • INT8
INTEGER
  • CHARACTER(20)
  • VARCHAR(255)
  • VARYING CHARACTER(255)
  • NCHAR(55)
  • NATIVE CHARACTER(70)
  • NVARCHAR(100)
  • TEXT
  • CLOB
TEXT
  • BLOB 
  • không có kiểu dữ liệu được chỉ định
NONE
  • REAL
  • DOUBLE
  • DOUBLE PRECISION
  • FLOAT
REAL
  • NUMERIC
  • DECIMAL(10,5)
  • BOOLEAN
  • DATE
  • DATETIME
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.

-------------------#####-------------------

Loạt bài SQLite được biên dịch từ TutorialsPoint.

Khóa học nên xem

Nguồn: freetuts.net