SQLite Các kiểu dữ liệu với ví dụ: Int, Text, Numeric, Real, Blob

Các kiểu dữ liệu trong SQLite khác biệt so với các hệ thống quản lý cơ sở dữ liệu khác. TRONG SQLite, bạn có thể khai báo kiểu dữ liệu bình thường nhưng vẫn có thể lưu trữ bất kỳ giá trị nào ở bất kỳ kiểu dữ liệu nào.

SQLite được gõ ít hơn. Không có kiểu dữ liệu, bạn có thể lưu trữ bất kỳ loại dữ liệu nào bạn thích trong bất kỳ cột nào. Đây được gọi là loại động.

Trong các kiểu tĩnh, giống như trong các hệ thống quản lý cơ sở dữ liệu khác, nếu bạn khai báo một cột có kiểu dữ liệu là số nguyên, bạn chỉ có thể chèn các giá trị của kiểu dữ liệu là số nguyên. Tuy nhiên, trong các loại động như trong SQLite, loại cột được xác định bởi giá trị được chèn vào. Và sau đó SQLite lưu trữ giá trị đó tùy thuộc vào loại của nó.

SQLite Các lớp lưu trữ

In SQLite có các phương thức lưu trữ khác nhau tùy thuộc vào loại giá trị, các phương thức lưu trữ khác nhau này được gọi là các lớp lưu trữ trong SQLite.

Sau đây là các lớp lưu trữ có sẵn trong SQLite:

  • NULL – lớp lưu trữ này được sử dụng để lưu trữ bất kỳ giá trị NULL nào.
  • số nguyên – mọi giá trị số đều được lưu dưới dạng giá trị nguyên có dấu (Nó có thể chứa cả giá trị nguyên dương và âm). Các giá trị INTEGER trong SQLite được lưu trữ trong bộ nhớ 1, 2, 3, 4, 6 hoặc 8 byte tùy thuộc vào giá trị của số.
  • CÓ THẬT – lớp lưu trữ này được sử dụng để lưu trữ các giá trị dấu phẩy động và chúng được lưu trữ trong bộ lưu trữ 8 byte.
  • TEXT – lưu trữ chuỗi văn bản. Nó cũng hỗ trợ các mã hóa khác nhau như UTF-8, UTF-16 BE hoặc UTF-26LE.
  • BÃI – được sử dụng để lưu trữ các tệp lớn, như hình ảnh hoặc tệp văn bản. Giá trị được lưu trữ dưới dạng mảng byte giống như giá trị đầu vào.

SQLite Loại mối quan hệ

Mối quan hệ loại là loại dữ liệu được đề xuất được lưu trữ trong một cột. Tuy nhiên, bạn vẫn có thể lưu trữ bất kỳ loại dữ liệu nào theo ý muốn, những loại này được khuyến cáo là không bắt buộc.

Những loại này đã được giới thiệu ở SQLite để tối đa hóa khả năng tương thích giữa SQLite và khác hệ thống quản lý cơ sở dữ liệu.

Bất kỳ cột nào được khai báo trong SQLite cơ sở dữ liệu được gán một kiểu ái lực tùy thuộc vào kiểu dữ liệu được khai báo. Ở đây sự gia tăng các mối quan hệ kiểu trong SQLite:

  • CHỮ.
  • SỐ.
  • INTEGER.
  • THỰC TẾ.
  • BÃI.

Đây là cách SQLite xác định mối quan hệ của cột từ kiểu dữ liệu được khai báo của nó:

  1. Mối quan hệ INTEGER được chỉ định nếu kiểu khai báo chứa chuỗi "INT".
  2. TEXT được gán nếu cột chứa một trong các chuỗi sau trong kiểu dữ liệu của nó “TEXT","XE TĂNG, hoặc là "CLOB“. Ví dụ: loại VARCHAR sẽ được gán mối quan hệ TEXT.
  3. Mối quan hệ BLOB được chỉ định nếu cột không có loại được chỉ định hoặc loại dữ liệu là BLOB.
  4. Mối quan hệ thực sự được chỉ định nếu loại chứa một trong các chuỗi sau “ĐÔI","CÓ THẬT, hoặc là "PHAO NỔI".
  5. Mối quan hệ NUMERIC được chỉ định cho bất kỳ loại dữ liệu nào khác.

Ngoài ra còn có một bảng trên cùng một trang hiển thị một số ví dụ về việc lập bản đồ giữa SQLite các kiểu dữ liệu và mối quan hệ của chúng được xác định bởi các quy tắc sau:

SQLite Loại mối quan hệ
Ánh xạ giữa SQLite kiểu dữ liệu và mối quan hệ

Ví dụ về việc lưu trữ các kiểu dữ liệu trong SQLite

Lưu trữ số với SQLite số nguyên

Bất kỳ cột kiểu dữ liệu nào chứa từ “INT” sẽ được gán kiểu INTEGER. Nó sẽ được lưu trữ trong lớp lưu trữ INTEGER.

Tất cả các kiểu dữ liệu sau đây được gán dưới dạng mối quan hệ kiểu INTEGER:

  • INT, INTEGER, LỚN.
  • INT2, INT4, INT8.
  • INT TINYINT, NHỎ, INT TRUNG BÌNH.

Kiểu ái lực INTEGER trong SQLite có thể chứa bất kỳ số nguyên nào được chỉ định (dương hoặc âm) từ 1 byte đến tối đa 8 byte.

Lưu trữ số với SQLite CÓ THẬT

Số THỰC là số có độ chính xác gấp đôi số dấu phẩy động. SQLite lưu trữ số thực dưới dạng mảng 8 byte. Sau đây là danh sách các kiểu dữ liệu trong SQLite mà bạn có thể sử dụng để lưu trữ số THỰC:

  • THỰC TẾ.
  • GẤP ĐÔI.
  • ĐỘ CHÍNH XÁC GẤP ĐÔI.
  • TRÔI NỔI.

Lưu trữ dữ liệu lớn với SQLite BÃI

Chỉ có một cách để lưu trữ các tập tin lớn vào một SQLite cơ sở dữ liệu và nó đang sử dụng kiểu dữ liệu BLOB. Kiểu dữ liệu này dùng để lưu trữ các file lớn như hình ảnh, file (từ bất kỳ loại nào), v.v. File được chuyển đổi thành mảng byte và sau đó được lưu trữ với cùng kích thước với file đầu vào.

Lưu trữ SQLite Booleans

SQLite không có lớp lưu trữ BOOLEAN riêng. Tuy nhiên, các giá trị BOOLEAN được lưu trữ dưới dạng INTEGERS với các giá trị 0 (là sai) hoặc 1 (là đúng).

Lưu trữ SQLite ngày và giờ

Bạn có thể khai báo ngày hoặc thời gian trong SQLite sử dụng một trong các kiểu dữ liệu sau:

  • NGÀY
  • NGÀY GIỜ
  • THỜI GIAN
  • THỜI GIAN

Lưu ý rằng không có lớp lưu trữ DATE hoặc DATETIME riêng biệt trong SQLite. Thay vào đó, bất kỳ giá trị nào được khai báo bằng một trong các kiểu dữ liệu trước đó sẽ được lưu trữ trên một lớp lưu trữ tùy thuộc vào định dạng ngày của giá trị được chèn như sau:

  • TEXT – nếu bạn đã chèn giá trị ngày ở định dạng chuỗi ISO8601 (“YYYY-MM-DD HH:MM:SS.SSS”).
  • CÓ THẬT – nếu bạn chèn giá trị ngày vào số ngày Julian, số ngày kể từ buổi trưa ở Greenwich vào ngày 24 tháng 4714 năm XNUMX trước Công nguyên thì giá trị ngày sẽ được lưu dưới dạng THỰC.
  • số nguyên as Unix Thời gian, số giây kể từ 1970-01-01 00:00:00 UTC.

Tổng kết

SQLite hỗ trợ một loạt các loại dữ liệu. Tuy nhiên, đồng thời, nó rất linh hoạt về các loại dữ liệu. Bạn có thể đặt bất kỳ loại giá trị nào vào bất kỳ loại dữ liệu nào. SQLite cũng giới thiệu một số khái niệm mới về kiểu dữ liệu như mối quan hệ kiểu và lớp lưu trữ, không giống như các hệ thống quản lý cơ sở dữ liệu khác.

Tóm tắt bài viết này với: