鍍金池/ 教程/ 數(shù)據(jù)庫(kù)/ SQLite 數(shù)據(jù)類型
SQLite Having 子句
SQLite 運(yùn)算符
SQLite 注入
SQLite Delete 語(yǔ)句
SQLite – Python
SQLite 數(shù)據(jù)類型
SQLite 簡(jiǎn)介
SQLite 創(chuàng)建數(shù)據(jù)庫(kù)
SQLite Vacuum
SQLite Group By
SQLite 日期 & 時(shí)間
SQLite AND/OR 運(yùn)算符
SQLite 刪除表
SQLite Distinct
SQLite Alter 命令
SQLite PRAGMA
SQLite 約束
SQLite 創(chuàng)建表
SQLite Like 子句
SQLite Limit 子句
SQLite Autoincrement
SQLite 子查詢
SQLite – C/C++
SQLite – PHP
SQLite 命令
SQLite Order By
SQLite Select 語(yǔ)句
SQLite Unions 子句
SQLite – Perl
SQLite – Java
SQLite 別名
SQLite 常用函數(shù)
SQLite Explain(解釋)
SQLite NULL 值
SQLite Glob 子句
SQLite 表達(dá)式
SQLite 視圖
SQLite Where 子句
SQLite Truncate Table
SQLite 索引
SQLite Insert 語(yǔ)句
SQLite 安裝
SQLite Indexed By
SQLite 分離數(shù)據(jù)庫(kù)
SQLite 觸發(fā)器
SQLite 語(yǔ)法
SQLite Joins
SQLite Update 語(yǔ)句
SQLite 附加數(shù)據(jù)庫(kù)
SQLite 事務(wù)

SQLite 數(shù)據(jù)類型

SQLite 數(shù)據(jù)類型是一個(gè)用來(lái)指定任何對(duì)象的數(shù)據(jù)類型的屬性。SQLite 中的每一列,每個(gè)變量和表達(dá)式都有相關(guān)的數(shù)據(jù)類型。

您可以在創(chuàng)建表的同時(shí)使用這些數(shù)據(jù)類型。SQLite 使用一個(gè)更普遍的動(dòng)態(tài)類型系統(tǒng)。在 SQLite 中,值的數(shù)據(jù)類型與值本身是相關(guān)的,而不是與它的容器相關(guān)。

SQLite 存儲(chǔ)類

每個(gè)存儲(chǔ)在 SQLite 數(shù)據(jù)庫(kù)中的值都具有以下存儲(chǔ)類之一:

存儲(chǔ)類描述
NULL值是一個(gè) NULL 值。
INTEGER值是一個(gè)帶符號(hào)的整數(shù),根據(jù)值的大小存儲(chǔ)在 1、2、3、4、6 或 8 字節(jié)中。
REAL值是一個(gè)浮點(diǎn)值,存儲(chǔ)為 8 字節(jié)的 IEEE 浮點(diǎn)數(shù)字。
TEXT值是一個(gè)文本字符串,使用數(shù)據(jù)庫(kù)編碼(UTF-8、UTF-16BE 或 UTF-16LE)存儲(chǔ)。
BLOB值是一個(gè) blob 數(shù)據(jù),完全根據(jù)它的輸入存儲(chǔ)。

SQLite 的存儲(chǔ)類稍微比數(shù)據(jù)類型更普遍。INTEGER 存儲(chǔ)類,例如,包含 6 種不同的不同長(zhǎng)度的整數(shù)數(shù)據(jù)類型。

SQLite Affinity 類型

SQLite 支持列上的類型 affinity 概念。任何列仍然可以存儲(chǔ)任何類型的數(shù)據(jù),但列的首選存儲(chǔ)類是它的 affinity。在 SQLite3 數(shù)據(jù)庫(kù)中,每個(gè)表的列分配為以下類型的 affinity 之一:

Affinity描述
TEXT該列使用存儲(chǔ)類 NULL、TEXT 或 BLOB 存儲(chǔ)所有數(shù)據(jù)。
NUMERIC該列可以包含使用所有五個(gè)存儲(chǔ)類的值。
INTEGER與帶有 NUMERIC affinity 的列相同,在 CAST 表達(dá)式中帶有異常。
REAL與帶有 NUMERIC affinity 的列相似,不同的是,它會(huì)強(qiáng)制把整數(shù)值轉(zhuǎn)換為浮點(diǎn)表示。
NONE帶有 affinity NONE 的列,不會(huì)優(yōu)先使用哪個(gè)存儲(chǔ)類,也不會(huì)嘗試把數(shù)據(jù)從一個(gè)存儲(chǔ)類強(qiáng)制轉(zhuǎn)換為另一個(gè)存儲(chǔ)類。

SQLite Affinity 及類型名稱

下表列出了當(dāng)創(chuàng)建 SQLite3 表時(shí)可使用的各種數(shù)據(jù)類型名稱,同時(shí)也顯示了相應(yīng)的應(yīng)用 Affinity:

數(shù)據(jù)類型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

  • no datatype specified

NONE
  • REAL

  • DOUBLE

  • DOUBLE PRECISION

  • FLOAT

REAL
  • NUMERIC

  • DECIMAL(10,5)

  • BOOLEAN

  • DATE

  • DATETIME

NUMERIC

Boolean 數(shù)據(jù)類型

SQLite 沒(méi)有單獨(dú)的 Boolean 存儲(chǔ)類。相反,布爾值被存儲(chǔ)為整數(shù) 0(false)和 1(true)。

Date 與 Time 數(shù)據(jù)類型

SQLite 沒(méi)有一個(gè)單獨(dú)的用于存儲(chǔ)日期和/或時(shí)間的存儲(chǔ)類,但 SQLite 能夠把日期和時(shí)間存儲(chǔ)為 TEXT、REAL 或 INTEGER 值。

存儲(chǔ)類日期格式
TEXT格式為 "YYYY-MM-DD HH:MM:SS.SSS" 的日期。
REAL從公元前 4714 年 11 月 24 日格林尼治時(shí)間的正午開(kāi)始算起的天數(shù)。
INTEGER從 1970-01-01 00:00:00 UTC 算起的秒數(shù)。

您可以以任何上述格式來(lái)存儲(chǔ)日期和時(shí)間,并且可以使用內(nèi)置的日期和時(shí)間函數(shù)來(lái)自由轉(zhuǎn)換不同格式。