Các kiểu dữ liệu trong SQLite khác với các hệ quản trị cơ sở dữ liệu khác. Trong SQLite, bạn có thể khai báo các kiểu dữ liệu một cách bình thường, nhưng bạn vẫn có thể lưu trữ bất kỳ giá trị nào trong bất kỳ kiểu dữ liệu nào.
Trong hướng dẫn này, bạn sẽ học-
- Các lớp lưu trữ
- Loại sở thích
- Ví dụ về lưu trữ các kiểu dữ liệu trong SQLite
SQLite được gõ ít hơn. Không có loại dữ liệu nào, bạn có thể lưu trữ bất kỳ loại dữ liệu nào bạn thích vào bất kỳ cột nào. Đây được gọi là các kiểu động.
Trong kiểu tĩnh, giống như trong các hệ quản trị 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 kiểu động như trong SQLite, kiểu của 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ó.
Các lớp lưu trữ SQLite
Trong 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.
- INTEGER - bất kỳ giá trị số nào được lưu trữ dưới dạng giá trị số 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ố.
- REAL - 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ộ nhớ 8 byte.
- TEXT - lưu trữ các 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.
- BLOB - đượ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.
Loại sở thích SQLite
Loại sở thích 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 tùy thích, những loại này được khuyến khích không bắt buộc.
Các kiểu này đã được giới thiệu trong SQLite để tối đa hóa khả năng tương thích giữa SQLite và hệ quản trị cơ sở dữ liệu khác.
Bất kỳ cột nào được khai báo trong cơ sở dữ liệu SQLite đều được gán một mối quan hệ kiểu tùy thuộc vào kiểu dữ liệu được khai báo. Đây là sự gia tăng của các mối quan hệ kiểu trong SQLite:
- BẢN VĂN.
- SỐ.
- LIÊN KẾT.
- 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ó:
- Mối quan hệ INTEGER được chỉ định nếu kiểu được khai báo chứa chuỗi " INT ".
- Mối quan hệ TEXT được chỉ định, nếu cột chứa trên kiểu dữ liệu của nó một trong các chuỗi sau " TEXT ", " CHAR hoặc" CLOB ". Ví dụ: loại VARCHAR sẽ được chỉ định mối quan hệ TEXT.
- 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.
- Mối quan hệ REAL được chỉ định nếu loại chứa một trong các chuỗi sau " DOUB ", " REAL hoặc" FLOAT ".
- Mối quan hệ NUMERIC được chỉ định cho bất kỳ loại dữ liệu nào khác.
Cũng có một bảng trên cùng một trang hiển thị một số ví dụ về ánh xạ giữa các kiểu dữ liệu SQLite và các mối quan hệ của chúng được xác định bởi các quy tắc sau:
Ví dụ về lưu trữ kiểu dữ liệu trong SQLite:
Lưu trữ số với số nguyên SQLite:
Bất kỳ cột nào của kiểu dữ liệu có chứa từ "INT", nó sẽ được gán mối quan hệ kiểu INTEGER. Nó sẽ được lưu trữ trong một lớp lưu trữ INTEGER.
Tất cả các kiểu dữ liệu sau đây được chỉ định dưới dạng mối quan hệ kiểu INTEGER:
- INT, INTEGER, BIGINT.
- INT2, INT4, INT8.
- TINYINT, SMALLINT, MEDIUM INT.
Mối quan hệ kiểu INTEGER trong SQLite có thể chứa bất kỳ số nguyên nào được gán (dương hoặc âm) từ 1 byte đến tối đa 8 byte.
Lưu trữ số bằng SQLite REAL:
Số THỰC là số có độ chính xác gấp đôi dấu chấm động. SQLite lưu trữ các số thực dưới dạng mảng 8 byte. Đâ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ữ các số THỰC:
- THỰC TẾ.
- GẤP ĐÔI.
- CHÍNH XÁC ĐÔI.
- PHAO NỔI.
Lưu trữ dữ liệu lớn với SQLite BLOB:
Chỉ có một cách để lưu trữ các tệp lớn vào cơ sở dữ liệu SQLite và đó là sử dụng kiểu dữ liệu BLOB. Kiểu dữ liệu này được sử dụng để lưu trữ các tệp lớn như hình ảnh, tệp (từ bất kỳ loại nào), v.v. Tệp được chuyển đổi thành mảng byte và sau đó được lưu trữ cùng kích thước với tệp đầu vào.
Lưu trữ SQLite Booleans:
SQLite không có lớp lưu trữ BOOLEAN riêng biệt. Tuy nhiên, các giá trị BOOLEAN được lưu trữ dưới dạng INTEGERS với các giá trị 0 (sai) hoặc 1 (đúng).
Lưu trữ ngày và giờ SQLite:
Bạn có thể khai báo ngày tháng hoặc thời gian ngày tháng trong SQLite bằng cách sử dụng một trong các kiểu dữ liệu sau:
- NGÀY
- NGÀY GIỜ
- TIMESTAMP
- 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 với một trong các kiểu dữ liệu trước đó đều đượ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 của chuỗi ISO8601 ("YYYY-MM-DD HH: MM: SS.SSS").
- REAL - nếu bạn chèn giá trị ngày vào số ngày Julian, số ngày kể từ trưa ở Greenwich vào ngày 24 tháng 11 năm 4714 trước Công nguyên thì giá trị ngày sẽ được lưu trữ dưới dạng REAL.
- INTEGER dưới dạng Unix Time, số giây kể từ 1970-01-01 00:00:00 UTC.
Tóm lược:
SQLite hỗ trợ một loạt các kiểu dữ liệu. Tuy nhiên, đồng thời, nó rất linh hoạt về kiểu dữ liệu. Bạn có thể đặt bất kỳ kiểu giá trị nào trong bất kỳ kiểu dữ liệu nào. SQLite cũng giới thiệu một số khái niệm mới trong các kiểu dữ liệu như mối quan hệ kiểu và các lớp lưu trữ, không giống như các hệ quản trị cơ sở dữ liệu khác.