SQLite与其他常见的DBMS的最大不同是它对数据类型的支持。其他常见的DBMS通常支持强类型的数据,也就是每一列的类型都必须预先 指定,但是SQLite采用的是弱类型的字段。实际上,其内部仅有下列五种存储类型:
NULL: 表示一个NULL值
INTEGER: 用来存储一个整数,根据大小可以使用1,2,3,4,6,8位来存储.
REAL: IEEE 浮点数
TEXT: 按照字符串来存储
BLOB: 按照二进制值存储,不做任何改变.
要注意,这些类型是值本身的属性,而不是列的属性.
但是为了和其他DBMS(以及SQL标准)兼容,在其create table语句中可以指定列的类型,为此,SQLite有个列相似性的概念(Column Affinity). 列相似性是列的属性,SQLite有以下几种列相似性:
TEXT: TEXT列使用NULL,TEXT或者BLOB存储任何插入到此列的数据,如果数据是数字,则转换为TEXT.
NUMERIC: NUMERIC列可以使用任何存储类型,它首先试图将插入的数据转换为REAL或INTEGER型的,如果成功则存储为REAL和INTEGER型,否则 不加改变的存入.
INTEGER:和NUMERIC类似,只是它将可以转换为INTEGER值都转换为 INTEGER,如果是REAL型,且没有小数部分,也转为INTEGER
REAL: 和NUMERIC类型 只是它将可以转换为REAL和INTEGER值都转换为REAL.
NONE:不做任何改变的尝试.
SQLite根据create table语句来决定每个列的列相似性.规则如下(大小写均忽略):
1. 如果数据类型中包括INT,则是INTEGER
2. 如果数据类型中包括CHAR,CLOB,TEXT则是TEXT
3. 如果数据类型中包括BLOB,或者没有指定数据类型,则是NONE
4. 如果数据类型中包括REAL,FLOA或者DOUB,则是REAL
5. 其余的情况都是NUMERIC
由上可知,对于sqlite来说 char,varchar,nchar,nvarchar等都是等价的,且后面最大长度也是没有意义的。但是对于其他DBMS却不是相同的。另外,列相似 性仅仅是向Sqlite提出了一个存储数据的建议,即使实际存储的数据类型和列相似性不一致,SQLite还是可以成功插入的,下面给出一个例子来说明下 以上论述,注意,这个例子需要在SQLite的命令行下运行,如果在SQLite Expert工具下执行,SQLite会进行一些额外的处理。
分享到:
相关推荐
本示例将探讨如何在SQLite中存储对象类型的数据,特别是针对Android环境。 首先,我们需要创建一个数据模型类,这个类通常会对应SQLite中的一个表。例如,假设我们有一个`User`类,包含`name`(字符串)、`age`...
总的来说,通过SQLite存储带有照片的联系人管理信息是一种实用且高效的方法,它允许我们在本地或远程设备上轻松地管理和检索包含多媒体数据的联系人信息。通过熟练掌握BLOB类型和相关的数据库操作技巧,开发者可以...
SQLite3 是一个轻量级的关系型数据库管理系统,它在处理日期和时间数据时与其他数据库系统有所不同。SQLite3 不提供特定的日期和...在实际应用中,合理选择存储类型并利用内置函数,可以有效地管理和操作日期时间数据。
2. 创建SQLite表:创建一个包含图片数据字段的表,通常使用BLOB(Binary Large Object)类型存储二进制数据。例如: ```sql CREATE TABLE Images ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT, ImageData ...
6. NUMERIC:这是一个动态类型,SQLite会根据值的类型自动选择INTEGER或REAL存储。 7. ANY:在某些特殊情况下,SQLite允许使用ANY作为数据类型,表示可以接受任何类型。 在SQLite中,数据类型的转换非常灵活。例如...
在 Android 手机 App 程序中,SQLite 数据库可以用来存储各种类型的数据,如用户信息、游戏数据、聊天记录等。使用 SQLite 数据库可以提高 App 程序的运行速度和稳定性,减少数据的丢失和损坏风险。 本文将从 ...
首先,SQLite3只有五种基本的存储类型:NULL、INTEGER、REAL、TEXT和BLOB。NULL表示空值,INTEGER用于存储整数,分为1至8字节不等的几种形式;REAL是浮点数,以8字节的IEEE浮点数存储;TEXT用于存储文本,可以是UTF-...
在"Sqlite存储图片"的实践中,我们通常会遇到以下几个关键知识点: 1. **二进制数据存储**:Sqlite支持BLOB(Binary Large Object)类型,可以用来存储图片、音频或视频等二进制数据。图片会被转换为字节流并存储在...
在Android开发中,SQLite是一个非常重要的组成部分,它是一个轻量级的、开源的、嵌入式的SQL数据库引擎,被广泛用于处理应用程序中的数据存储。"实验十 使用SQLite数据库存储数据"是一个旨在帮助开发者掌握如何在...
SQLite是Android平台上广泛使用的轻量级数据库,它允许应用程序存储、管理和检索结构化数据。作为一个关系型数据库管理系统(RDBMS),SQLite支持SQL语言,使得数据操作变得简单易行。在Android开发中,SQLite通常...
以下是关于SQLiteStudio及其相关知识点的详细介绍: 1. 数据库可视化:SQLiteStudio作为一款数据库可视化工具,它通过图形化的用户界面(GUI)使用户可以轻松地浏览和编辑SQLite数据库。这包括创建、修改和删除表,...
在 Android 的 SQLite 中,数据是弱类型存储的,因此需要使用 String 类型来取出日期类型数据,然后使用 SimpleDateFormat 将其转换成 java.util.Date 类型。下面是一个示例代码: ```java String str; ...
SQLite支持多种数据类型,这些数据类型对于理解和有效地使用SQLite数据库至关重要。下面将详细介绍SQLite3支持的数据类型及其特性。 1. NULL(空值) SQLite中的NULL类型代表一个未知或未定义的值。它不同于其他...
在Android开发中,SQLite是一个广泛使用的轻量级数据库,它为应用程序提供了本地数据存储功能。在常规操作中,我们通常使用SQL语句来存取数据,但有时为了更方便地管理和操作复杂的数据结构,比如对象,我们会采取...
在SQLite3中,数据类型的设计与许多其他数据库系统有所不同,它具有灵活性且易于理解。下面将详细介绍SQLite3中的数据类型及其特点。 1. NULL类型 SQLite3允许字段值为NULL,这意味着没有任何值。NULL并不是一种...
Python的SQLite数据库存储是指利用Python语言对SQLite数据库进行操作,包括建立连接、数据存储和查询等。 在本文中,首先介绍了SQLite数据库存储原理及过程,重点在于使用Python语言作为工具对SQLite数据库进行操作...
这可能是作者个人对SQLite的深入理解和研究,可能包含了SQLite的架构解析、存储机制、查询优化、事务处理、索引构建等核心知识点。文档可能会详细阐述SQLite如何在内存和磁盘之间管理数据,包括页缓存机制、B-Tree...
类型近似是指 SQLite 中列数据的推荐存储类型,但并非强制性规定。例如,VARCHAR(255) 这样的定义在 SQLite 中并不起作用,因为 SQLite 不限制字符串、BLOB 或数值的长度(除非受到全局限制 SQLITE_MAX_LENGTH 的...