SQLite 使用的是一个更加普通的动态类型系统。在 SQLite 中,数据类型的值是与值的本身有关联,而不是它的容器。SQLite 的动态类型系统对于更多其它数据库引擎常见的静态类型系统是向后兼容的,在这个意义上,工作在静态类型数据库上的 SQL 语句同样也能工作在 SQLite 中。然而,SQLite 中的动态类型允许它做一些在传统严格类型数据库中不能做的事情。
因为SQLite是动态类型系统,所以可以指定任意的存储类型,这样意味着它有着良好的兼容性,你的
Oracle语句几乎可以一丝不改的在SQLite上执行(不包括序列等),同时你也会发现它比静态类型数据库要慢的多。动态类型系统是SQLite的优点,也是它的缺点。
大多数 SQL 数据库引擎(据我们所知的、SQLite 以外的所有 SQL 数据库引擎)使用静态的、严格的类型。对于静态类型,数据类型的值由它的容器(存储值的特定列)来决定。
存储在 SQLite 数据库中的每个值(或者由数据库引擎操纵的值)都是以下的存储类之一:
NULL 该值是一个 NULL 值
INTEGER 该值是一个有符号的整数,根据值的大小,存储 1、2、3、4、5、6 或 8 字节内容
REAL 该值是一个浮点值,存储一个 8 字节的 IEEE 浮点数
TEXT 该值是一个文本字符串,使用数据库编码(UTF-8、 UTF-16BE 或 UTF-16LE)进行存储
BLOB 该值是一个数据块,按照它的输入直接存储
注意,一个存储类要略普遍于一个数据类型。INTEGER 存储类,例如,包含不同长度的 6 个不同的整数类型。这在磁盘上是不同的。但是一旦 INTEGER 值从磁盘读取到内存进行处理,它们都将被转换为最普通的数据类型(8 字节有符号的整数)。因此大部分“存储类”是无异于“数据类型”的,并且有 2 个条款能被互换地使用。
在一个 SQLite 版本 3 数据库中的任何列,除了 INTEGER PRIMARY KEY 列,都可以被用来存储一个任意存储类的值。
SQL 语句中的所有值,无论它们是嵌入在 SQL 语句文本里的字面量,还是绑定到预编译 SQL 语句的参数,都有一个内在存储类。在以下描述的情况中,数据库引擎会在执行查询过程中,在数字存储类(INTEGER 和 REAL)和 TEXT 之间进行转换。
分享到:
相关推荐
本资料"DatatypesInSQLiteVersion3中文版SQLite3的数据类型.pdf"将详细介绍SQLite3中的数据类型,帮助你深入理解如何在SQLite3数据库中存储和管理各种数据。 SQLite3的数据类型不同于传统的关系型数据库,如MySQL或...
下面将详细介绍SQLite3支持的数据类型及其特性。 1. NULL(空值) SQLite中的NULL类型代表一个未知或未定义的值。它不同于其他类型的零值,如数字0或空字符串。NULL值在比较时与其他任何值都不相等,包括另一个NULL...
本教程将详细介绍如何将sqlite3数据库中的数据导入到mysql数据库中,这对于处理并发访问能力不足或需要更强大功能的数据库场景非常有用。以下是具体的步骤和注意事项。 ### 前言 sqlite3是一个轻量级的数据库系统,...
它不需要单独的服务器进程,可以直接在应用程序中运行,提供事务处理、SQL查询支持以及多种数据类型。标题提到的"sqlite3文件"主要包括三个关键组成部分:`sqlite3.dll`、`sqlite3.h`和`sqlite3.lib`,它们在开发和...
1. **编码转换**:SQLite3使用UTF-8编码存储数据,而Windows系统则通常使用GBK或者Unicode(UTF-16)编码处理文件路径。因此,我们需要在读取或写入路径时进行编码转换。可以使用C++标准库中的`std::wstring_convert...
SQLite3是一种轻量级、开源的嵌入式SQL数据库引擎,广泛应用于移动设备、桌面应用以及服务器环境,尤其适合处理小到中等规模的数据存储需求。它的设计目标是实现零配置、事务支持、完整的SQL语法以及自包含性,使得...
Delphi提供了与SQLite3交互的接口,允许开发者在应用程序中方便地存储和检索数据。然而,由于编码不匹配或者处理方式不当,可能会导致中文字符在存储或读取时出现乱码。 中文乱码的主要原因在于字符编码格式的不...
通过`Sqlite3_key`和`Sqlite3_rekey`函数,开发人员能够更好地管理和保护存储在SQLite3数据库中的数据,确保数据在传输和存储过程中的安全性。在使用此版本之前,应仔细阅读相关文档,并确保正确地集成和使用这些...
4. **事务处理**:SQLite3支持事务处理,确保数据的一致性和完整性。BEGIN、COMMIT和ROLLBACK语句用于控制事务的开始、提交和回滚。 5. **索引**:为了加快查询速度,SQLite3允许创建索引。可以使用CREATE INDEX...
在本主题中,我们关注的是SQLite的核心组件——`sqlite3.h`、`sqlite3.lib`和`sqlite3.dll`,这些是开发过程中用于与SQLite交互的关键文件。 1. **sqlite3.h**: 这是一个头文件,包含了SQLite的所有公共API(应用...
二、SQLite3中的数据类型 SQLite3支持以下数据类型: 1. NULL:空值,表示未赋值。 2. INTEGER:整型,可以存储8、16、32或64位有符号整数,取决于所需空间。 3. REAL:浮点型,用于存储双精度浮点数。 4. TEXT:...
在本主题中,我们关注的是SQLite3与C++的结合,即如何在C++程序中使用SQLite3进行数据存储和检索。 1. **SQLite3的特性** - **轻量级**: SQLite3数据库文件是一个普通的文件,可以在文件系统中直接创建、读取和...
4. **高性能**:尽管轻量级,SQLite3在处理大量数据时表现出良好的性能。 5. **嵌入式**:适合于嵌入式设备和应用程序,无需额外的服务器软件。 综上所述,这个压缩包提供了SQLite3开发和运行所需的基本组件,无论...
本教程将详细讲解如何在Delphi环境中使用ASqlite3控件连接并操作SQLite数据库。ASqlite3是一款专门为Delphi开发者设计的SQLite数据库接口组件,它使得在Delphi程序中与SQLite数据库交互变得简单。 首先,我们需要...
总的来说,理解和掌握这些SQLite大数据处理技术,可以帮助开发者构建更高效、更稳定的数据库应用,特别是在资源有限的环境中。通过实际的代码示例和注释,新手可以快速上手,逐步提升数据库管理技能。
1. 数据库连接:通过在ODBC数据源管理器中配置SQLite3数据源,用户可以创建到SQLite3数据库的连接。这通常涉及提供数据库文件的路径和必要的连接参数。 2. SQL查询:使用ODBC API,开发者可以编写SQL语句,执行查询...
在SQLite中,数据类型的设计与大多数传统SQL数据库引擎不同,它采用了一种更为灵活的动态类型系统。这种设计使得SQLite在处理不同类型的数据时具有更大的灵活性和兼容性。 首先,SQLite支持五种基本的存储类型: 1...
SQLite3是一种轻量级、自包含的数据库引擎,它无需单独的服务器进程,可以直接在客户端进行数据存储和处理。在SVN(Subversion)版本控制系统中,SQLite3常被用作仓库元数据的存储库,这使得SVN可以对文件历史、版本...
本实例将聚焦于如何在iPhone应用中使用SQLite3进行数据持久化操作。 SQLite3是一个嵌入式的SQL数据库引擎,它不需要独立的服务进程,可以直接集成到应用程序中。与Core Data相比,SQLite3提供了更直接的SQL语句操作...