CĂN BẢN
NÂNG CAO
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

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ó.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

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.

Cùng chuyên mục:

Các hàm hữu ích trong SQLite

Các hàm hữu ích trong SQLite

SQLite có nhiều hàm dựng sẵn để thực hiện xử lý trên dữ liệu chuỗi…

Date & Time trong SQLite

Date & Time trong SQLite

SQLite hỗ trợ năm hàm ngày và giờ như date(timestring, modifiers...), time(timestring, modifiers...), datetime(timestring, modifiers...),…

VACUUM trong SQLite

VACUUM trong SQLite

Lệnh VACUUM trong SQLite làm sạch cơ sở dữ liệu chính bằng cách sao chép…

EXPLAIN trong SQLite

EXPLAIN trong SQLite

Câu lệnh SQLite có thể được bắt đầu bằng từ khóa "EXPLAIN" hoặc bằng cụm…

SQL Injection trong SQLite

SQL Injection trong SQLite

Nếu bạn nhận user input thông qua một Webpage và chèn nó vào trong một…

Tăng tự động AUTOINCREMENT trong SQLite

Tăng tự động AUTOINCREMENT trong SQLite

AUTOINCREMENT trong SQLite là một từ khóa được sử dụng để tự động tăng giá…

Subquery trong SQLite

Subquery trong SQLite

Subquery hoặc Inner query hoặc Nested query là một truy vấn bên trong một truy…

Transaction trong SQLite

Transaction trong SQLite

Một transaction là một đơn vị công việc được thực hiện đối với một cơ…

Tìm hiểu View trong SQLite

Tìm hiểu View trong SQLite

Một view không có gì khác hơn một câu lệnh SQLite được lưu trữ trong…

Lệnh TRUNCATE TABLE trong SQLite

Lệnh TRUNCATE TABLE trong SQLite

Thật không may, không có lệnh TRUNCATE TABLE trong SQLite nhưng bạn có thể sử…

Lệnh ALTER TABLE trong SQLite

Lệnh ALTER TABLE trong SQLite

Lệnh ALTER TABLE trong SQLite dùng để sửa đổi một bảng hiện có mà không…

Mệnh đề INDEXED BY trong SQLite

Mệnh đề INDEXED BY trong SQLite

Mệnh đề "INDEXED BY index-name" chỉ định rằng index-name phải được sử dụng để tìm…

Index trong SQLite

Index trong SQLite

Index là bảng tra cứu đặc biệt mà database search engine có thể sử dụng…

Tìm hiểu Trigger trong SQLite

Tìm hiểu Trigger trong SQLite

Trigger trong SQLite là các hàm callback, mà tự động được thực hiện/gọi (performed/invoked) khi…

Cú pháp ALIAS trong SQLite

Cú pháp ALIAS trong SQLite

Bạn có thể đổi tên tạm thời một bảng hoặc một cột bằng cách đặt…

Toán tử UNION trong SQLite

Toán tử UNION trong SQLite

Toán tử UNION trong SQLite được sử dụng để kết hợp các kết quả của…

Lệnh JOIN trong SQLite

Lệnh JOIN trong SQLite

Lệnh JOIN trong SQLite được sử dụng để kết hợp các bản ghi từ hai…

Các ràng buộc Constraint trong SQLite

Các ràng buộc Constraint trong SQLite

Các ràng buộc (Constraints) là các quy tắc được thi hành trên một cột dữ…

Lệnh PRAGMA trong SQLite

Lệnh PRAGMA trong SQLite

Lệnh PRAGMA trong SQLite là một lệnh đặc biệt được sử dụng để kiểm soát…

Từ khóa DISTINCT trong SQLite

Từ khóa DISTINCT trong SQLite

Từ khóa DISTINCT trong SQLite được sử dụng cùng với câu lệnh SELECT để loại…

Top