nodejs使用
npm install sqlite3
SQLite 的数据类型系统比较灵活,它基于动态类型系统而不是严格的静态类型系统。SQLite 实际上支持的主要数据类型可以分为以下几种:
1. INTEGER
- 描述: 存储整数值。
- 变体:
INT
,TINYINT
,SMALLINT
,MEDIUMINT
,BIGINT
。 - 存储: 1、2、3、4、6 或 8 字节,取决于整数的大小。
2. REAL
- 描述: 存储浮点数值。
- 变体:
FLOAT
,DOUBLE
,NUMERIC
。 - 存储: 8 字节的浮点数。
3. TEXT
- 描述: 存储文本字符串。
- 变体:
CHAR
,VARCHAR
,TEXT
。 - 存储: 可变长度的文本字符串。
4. BLOB
- 描述: 存储二进制大对象。
- 变体:
BINARY
,VARBINARY
。 - 存储: 可变长度的二进制数据。
5. NULL
- 描述: 存储空值或缺失值。
- 变体:
NULL
。 - 存储: 无数据存储,仅表示缺失值。
数据类型的灵活性
SQLite 支持数据类型的“类型优先”规则。这意味着:
- 存储类型: SQLite 实际上存储数据时不强制执行数据类型,而是根据数据值动态选择最合适的存储格式。
- 类型强制: 虽然你可以定义表时指定列的数据类型,SQLite 实际上并不会强制这些类型约束,而是更关注列的“存储类”而非“数据类型”。
- 类型转换: SQLite 在插入或查询时会尝试自动转换数据类型,以符合目标列的数据类型。例如,如果你插入一个浮点数到一个定义为
INTEGER
类型的列中,SQLite 会将其转换为整数。
类型类
SQLite 将这些数据类型归为以下几种“类型类”:
- NULL: 数据值为
NULL
。 - INTEGER: 整数类型。
- REAL: 浮点数类型。
- TEXT: 文本字符串类型。
- BLOB: 二进制大对象类型。
这些类型类定义了如何存储数据,并且允许 SQLite 根据实际存储需求和数据类型灵活地进行调整。
示例
以下是创建一个包含各种数据类型的 SQLite 表的示例:
sqlCopy Code
CREATE TABLE example ( id INTEGER PRIMARY KEY, -- 整数类型 name TEXT, -- 文本类型 age INTEGER, -- 整数类型 height REAL, -- 浮点数类型 profile_picture BLOB, -- 二进制数据 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP -- 默认时间戳 );
在这个表中:
id
和age
是整数类型。name
是文本类型。height
是浮点数类型。profile_picture
是二进制大对象类型。created_at
是一个时间戳,默认值是当前时间。
SQLite 的类型系统的灵活性使得它非常适合快速开发和需要处理各种数据格式的应用程序。