`
lizhuang
  • 浏览: 903900 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

[转]Sqlite数据类型详解

 
阅读更多
原帖:http://blog.csdn.net/jin868/article/details/5961263

一般数据采用的固定的静态数据类型,而SQLite采用的是动态数据类型,会根据存入值自动判断。SQLite具有以下五种数据类型:

1.NULL:空值。
2.INTEGER:带符号的整型,具体取决有存入数字的范围大小。
3.REAL:浮点数字,存储为8-byte IEEE浮点数。
4.TEXT:字符串文本。
5.BLOB:二进制对象。


但实际上,sqlite3也接受如下的数据类型:
smallint 16 位元的整数。
interger 32 位元的整数。
decimal(p,s) p 精确值和 s 大小的十进位整数,精确值p是指全部有几个数(digits)大小值,s是指小数点後有几位数。如果没有特别指定,则系统会设为 p=5; s=0 。
float  32位元的实数。
double  64位元的实数。
char(n)  n 长度的字串,n不能超过 254。
varchar(n) 长度不固定且其最大长度为 n 的字串,n不能超过 4000。
graphic(n) 和 char(n) 一样,不过其单位是两个字元 double-bytes, n不能超过127。这个形态是为了支援两个字元长度的字体,例如中文字。
vargraphic(n) 可变长度且其最大长度为 n 的双字元字串,n不能超过 2000
date  包含了 年份、月份、日期。
time  包含了 小时、分钟、秒。
timestamp 包含了 年、月、日、时、分、秒、千分之一秒。

datetime 包含日期时间格式,必须写成'2010-08-05'不能写为'2010-8-5',否则在读取时会产生错误!

Sqlite常用数据类型,

这句话本身就有问题,因为:SQLite是无类型的. 这意味着你可以保存任何类型的数据到你所想要保存的任何表的任何列中, 无论这列声明的数据类型是什么(只有自动递增Integer Primary Key才有用). 对于SQLite来说对字段不指定类型是完全有效的. 如:

Create Table ex3(a, b, c);

即使SQLite允许忽略数据类型, 但是仍然建议在你的Create Table语句中指定数据类型. 因为数据类型对于你和其他的程序员交流, 或者你准备换掉你的数据库引擎是非常有用的. SQLite支持常见的数据类型, 如:

SQL代码
CREATE TABLE ex2(   
a VARCHAR(10),   
b NVARCHAR(15),  
c TEXT,   
d INTEGER,  
e FLOAT,  
f BOOLEAN,   
g CLOB,   
h BLOB,   
i TIMESTAMP,  
j NUMERIC(10,5),   
k VARYING CHARACTER (24),   
l NATIONAL VARYING CHARACTER(16)  
);
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支持的数据类型详解[参考].pdf

    INTEGER数据类型用于存储整数,SQLite非常灵活,可以根据数值大小自动选择合适的存储空间,从1到8字节不等。这意味着,即使你声明的是INTEGER,SQLite也会根据实际存储的数值来优化空间使用。 REAL数据类型用于存储...

    Android数据库SQLite详解

    - **字段**: 表格中的每一列称为字段,每个字段都有特定的数据类型,如整型、字符串、日期等。 - **主键**: 用于唯一标识表中每一行的字段,通常设置为自动增长。 ### 2. Android中的SQLite操作 - **...

    sqlite3使用详解

    21. **`SQLITE_MISMATCH` (20)** - 数据类型不匹配,如将字符串赋值给数字字段。 22. **`SQLITE_MISUSE` (21)** - 数据库使用不当,可能涉及API误用。 23. **`SQLITE_NOLFS` (22)** - 使用了不支持的操作系统特性。 ...

    SQLite3使用详解.rar

    数据类型不匹配 SQLITE_MISUSE = 21; 数据库错误使用 SQLITE_NOLFS = 22; 使用主机操作系统不支持的特性 SQLITE_AUTH = 23; 非法授权 SQLITE_FORMAT = 24; 辅助数据库格式错误 SQLITE_RANGE = 25; 2nd ...

    sqlite 支持的 sql 语法详解

    SQLite 支持多种类型的JOIN,如 INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL OUTER JOIN: ```sql SELECT * FROM students JOIN courses ON students.id = courses.student_id; ``` 六、分组与聚合函数 使用GROUP BY...

    SQlite数据库笔记总结详解

    2. SQLite数据类型: - NULL:表示空值。 - INTEGER:整数,可自动转换为BIGINT、INTEGER、SMALLINT或TINYINT。 - REAL:浮点数,等同于DOUBLE PRECISION或FLOAT。 - TEXT:文本字符串。 - BLOB:二进制大对象...

    Android 中SQLite技术实例详解

    SQLite3 支持 NULL,INTEGER,REAL(浮点数字),TEXT(字符串文本)和 BLOB(二进制对象)数据类型,实际上 SQLite3 也接受 varchar(n),char(n),decimal(p,s) 等数据类型,只不过在运算或保存时会转成对应的五种...

    详解SQLite中的数据类型

    在SQLite中,数据类型的设计与大多数传统SQL数据库引擎不同,它采用了一种更为灵活的动态类型系统。这种设计使得SQLite在处理不同类型的数据时具有更大的灵活性和兼容性。 首先,SQLite支持五种基本的存储类型: 1...

    Linux下使用sqlite3数据库详解

    程序首先包含了必要的头文件,然后在`main`函数中定义了`sqlite3`类型的指针变量`db`来接收数据库对象。 在程序的第16行使用`sqlite3_open()`函数尝试打开一个名为"zieckey.db"的数据库文件,如果文件不存在则创建...

    sqlite详解项目demo

    在这个“sqlite详解项目demo”中,我们将深入探讨如何在Android环境中使用SQLite进行数据库的管理,包括创建数据库、表的增删改查等基本操作。 首先,SQLite在Android中的应用通常涉及到以下几个关键组件: 1. **...

    易语言源码Access转Sqlite.rar

    《易语言源码Access转Sqlite详解》 在IT领域,数据库转换是一项常见的任务,尤其在数据迁移或系统升级过程中。本压缩包“易语言源码Access转Sqlite.rar”提供了一个使用易语言编写的解决方案,帮助用户将Microsoft ...

    IOS数据库操作SQLite3使用详解

    - `sqlite3_column_XXX()`: 从结果集中获取特定类型的数据,如`sqlite3_column_text()`,`sqlite3_column_int()`等。 9. PreparedStatement方式处理SQL请求 这种方式允许绑定参数并在执行时动态填充,类似于ADO.NET...

    sqlite3的使用详解

    例如,`sqlite3_column_text()`用于获取文本类型的数据。 5. **关闭和清理**:使用`sqlite3_finalize()`函数释放预编译的SQL语句,`sqlite3_close()`函数关闭数据库连接,释放资源。 除了这些基本操作,SQLite3还...

    Android中SQLite应用详解

    SQLite支持的基本数据类型包括NULL、INTEGER、REAL、TEXT和BLOB,分别对应空值、整型、浮点型、字符串和二进制对象。 在Android中,可以直接通过SQLiteOpenHelper类和SQLiteDatabase类来操作SQLite数据库。...

    SQLite数据库使用详解-程序.docx

    尽管CSV文件也可以视为一种单一文件格式,但CSV不适用于存储非文本数据(如BLOB类型)且无法存储多张表。 SQLite的跨平台性和可移植性是其另一大亮点。它不仅支持常见的操作系统,如Android、Windows Mobile等...

    SQLite教程(七):数据类型详解

    SQLite 是一个轻量级的嵌入式数据库系统,它的数据类型设计与许多传统的SQL数据库系统有所不同。在SQLite中,数据类型是动态的,这意味着在创建表时,字段的数据类型并不是严格固定的,而是可以根据插入的数据自动...

Global site tag (gtag.js) - Google Analytics