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ả
NULLGiá trị là giá trị NULL.
INTEGERGiá 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ị.
REALGiá 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.
TEXTGiá 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)
BLOBGiá 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 [kiso.vn]

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:

AffinityMô tả
TEXTCộ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.
NUMERICCột này có thể chứa các giá trị sử dụng tất cả 5 lớp lưu trữ.
INTEGERHà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.
REALHà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.
NONEMộ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ệuAffinity
  • 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
TEXTMột ngày ở định dạng như “YYYY-MM-DD HH: MM: SS.SSS”
REALSố ngày từ Greenwich November 24, 4714 B.C.
INTEGERSố 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.

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *