`
ufopw
  • 浏览: 163041 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

sqlite的字段类型选择

阅读更多

char、varchar、text和nchar、nvarchar、ntext的区别

1、CHAR。CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充。

2、VARCHAR。存储变长数据,但存储效率没有CHAR高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度。从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。

3、TEXT。text存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。

4、NCHAR、NVARCHAR、NTEXT。这三种从名字上看比前面三种多了个“N”。它表示存储的是Unicode数据类型的字符。我们知道字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、nvarchar的长度是在1到4000之间。和char、varchar比较起来,nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。  

    所以一般来说,如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar。

 

      SQLite最大的特点在于其数据类型为无数据类型(typelessness)。这意味着可以保存任何类型的数据到所想要保存的任何表的任何列中,无论这列声明的数据类型是什么。虽然在生成表结构的时候,要声明每个域的数据类型,但SQLite并不做任何检查。开发人员要靠自己的程序来控制输入与读出数据的类型。这里有一个例外,就是当主键为整型值时,如果要插入一个非整型值时会产生异常。

虽然,SQLite允许忽略数据类型,但是,仍然建议在Create Table语句中指定数据类型,因为数据类型有利于增强程序的可读性。另外,虽然在插入或读出数据的时候是不区分类型的,但在比较的时候,不同数据类型是有区别的

分享到:
评论

相关推荐

    Sqlite3时间存储格式问题?

    SQLite3 是一个轻量级的关系型数据库管理系统,它在处理日期和时间数据时与其他数据库系统有所不同。SQLite3 不提供特定的日期和...在实际应用中,合理选择存储类型并利用内置函数,可以有效地管理和操作日期时间数据。

    C++插入SQLite数据库的BLOB字段

    本示例中,我们将探讨如何在Visual Studio 2010环境下,将一个jpg图片文件作为BLOB(Binary Large Object)类型的数据插入到SQLite数据库中。这涉及到文件I/O操作、SQLite API的使用以及C++编程技巧。 首先,我们...

    如何在SQLITE中使用时间字段作索引

    在这个表结构中,`time` 是一个datetime类型的时间字段,它是主键;`id` 是一个整数字段,可能用于关联其他信息;`name` 是一个文本字段,用于存储与时间相关的名字或其他信息。 接着,我们可以向表中插入记录。...

    Sqlite大对象字段读写及数据流的解压缩

    在SQLite中,BLOB类型字段非常适合存储这类数据。创建包含BLOB字段的表可以通过SQL语句实现,例如: ```sql CREATE TABLE Images ( ID INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT, ImageData BLOB ); ``` ...

    Sqlite3数据库支持库

    10. 性能优化:通过合理的索引设计、适当的数据类型选择、使用EXPLAIN计划分析查询性能,可以显著提升SQLite3的运行效率。 在“Sqlite3数据库支持库210版静态版sqlite3fne”这个文件中,"210版"可能表示版本号,而...

    SQLite3中的数据类型

    在SQLite3中,数据类型的设计与许多其他数据库系统有所不同,它具有灵活性且易于理解。下面将详细介绍SQLite3中的数据类型及其特点。 1. NULL类型 SQLite3允许字段值为NULL,这意味着没有任何值。NULL并不是一种...

    VS、VC++实现对象序列化保存到sqlite表blob类型字段中,包含blob字段的读取和保存,

    本文将详细讲解如何在VS(Visual Studio)和VC++环境中实现对象序列化,并将其保存到SQLite数据库的blob(Binary Large Object)类型字段中。同时,我们也会探讨如何从blob字段中读取并恢复这些对象。 首先,对象...

    php sqlbuddy133 for sqlite3 在线管理 支持表单增加字段

    在管理界面,你可以选择需要修改的表,然后点击“添加字段”按钮,输入新字段的相关信息(如字段名、数据类型、是否为主键等),提交后系统会自动更新SQLite3数据库的结构。 3. **在线数据库操作** 除了增加字段,...

    使用SQLite存储带有照片的联系人管理信息

    本示例关注的是如何利用SQLite来存储带有照片的联系人管理信息,这涉及到对BINARY类型字段的理解和操作。 首先,我们需要理解SQLite的数据类型。SQLite支持多种数据类型,包括NULL、INTEGER、REAL、TEXT和BLOB。在...

    KETTLE数据库转换类型例子

    以下将详细介绍两个Kettle数据转换类型的例子。 示例1:数据库间的数据提取和加载 在这个示例中,我们假设有一个数据源数据库(数据库A),我们需要从中提取数据,并将这些数据更新到另一个目标数据库(数据库B)。...

    sqlite html5的Database

    "sqlite的字段类型选择 .txt"可能包含有关如何根据实际需求选择合适字段类型的信息,这对于数据库设计和性能优化是关键。例如,如果你知道数据将主要包含整数,选择INTEGER类型可能会更高效。 至于"How to modify ...

    Sqlite的C#通用类和Sqlite工具

    2. 设计和修改表结构,包括字段类型、主键设置、索引等。 3. 直接运行SQL语句,查看执行结果。 4. 数据浏览和编辑,支持添加、修改和删除记录。 5. 导入和导出数据,支持多种格式如CSV、XML等。 结合这两个文件,...

    asp连接SQLite代码

    在ASP中连接SQLite数据库,主要涉及到ODBC(Open Database Connectivity)驱动的使用,因为ASP默认支持ODBC接口来连接多种类型的数据库。 首先,我们需要确保服务器上已经安装了适用于SQLite的ODBC驱动。这通常通过...

    SQLite存储对象类型的数据

    如果需要存储二进制数据,如`profileImage`,可以直接存入SQLite的BLOB字段。 为了将`User`对象写入数据库,我们需要一个`UserDatabaseHelper`类,它扩展了`SQLiteOpenHelper`。在这个类中,我们可以定义一个`...

    sqlite3 for delphi 解决中文乱码问题

    1. 明确指定数据库连接字符串中的编码类型,如`?encoding=utf8`,确保数据以UTF-8编码存入SQLite3数据库。 2. 对于输入和输出的数据,进行适当的编码转换,如在插入数据前将Delphi中的字符串转为UTF-8,读取数据后将...

    csv导入sqlite工具

    - 数据类型不匹配:SQLite的字段类型与CSV的数据类型需对应,如数值、日期等需要正确转换。 - 特殊字符处理:CSV中的逗号、引号等特殊字符可能需要转义,确保正确解析。 5. 使用SQLiteAdmin工具: - SQLiteAdmin...

    数据库转sqlite数据库

    1、可以转换access表中的主键、自增长字段、字段类型、字段长度、索引等 2、因sqlite不支持表属性(表描述)、字段描述, 程序会把这些信息存入access_table,access_column表中以供参考 3、如果access库中 自增长的...

    力控与sqlite数据库交换数据配置.doc

    需要注意的是,数据交换过程中要确保力控中的数据类型与SQLite数据库中对应字段的数据类型一致,否则可能导致数据转换错误或写入失败。同时,考虑到实时性和性能,合理规划数据交换频率和批量操作也是优化系统性能的...

    sqlite学习笔记.doc

    * 在创建表时,可以指定表的结构,包括字段名称和字段类型等。 插入数据 * 使用 INSERT INTO 语句可以将数据插入到表中。 * 例如,使用以下命令可以将一行数据插入到 userinfo 表中:INSERT INTO userinfo...

    c++获取sqlite3数据库表中所有字段的方法小结

    根据项目需求和实际情况,可以选择最适合的方法来获取SQLite3数据库表中的字段。在实际应用中,考虑到效率和可靠性,通常推荐方法2,因为它不受表是否有记录的影响,而且解析SQL语句是一种通用且成熟的解决方案。

Global site tag (gtag.js) - Google Analytics