`

SQLite支持字段类型及建表

阅读更多
一般数据采用的固定的静态数据类型,而SQLite采用的是动态数据类型,会根据存入值自动判断。
SQLite具有以下五种数据类型:
1.NULL:空值。
2.INTEGER:带符号的整型,具体取决有存入数字的范围大小。
3.REAL:浮点数字,存储为8-byte IEEE浮点数。
4.TEXT:字符串文本。
5.BLOB:二进制对象。


但实际上,sqlite3也接受如下的数据类型:

smallint 16 位元的整数。
integer 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支持常见的数据类型, 如:

    CREATE TABLE IF NOT EXISTS 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 注解获取建表sql

    本篇文章将深入探讨如何通过注解的方式来获取SQLite中的建表SQL,并利用反射来将Cursor对象转换为Java Bean或列表。 首先,让我们了解如何使用注解来定义Java Bean的字段以生成对应的SQL建表语句。在Java中,注解是...

    xe6 sqlite小例子 可实现建表插入更新

    在这个"xe6 sqlite小例子 可实现建表插入更新"的示例中,我们将探讨如何在DelphiXE6环境下使用SQLite进行数据库操作,包括创建表、插入数据以及更新数据。 首先,我们需要了解DelphiXE6。这是Embarcadero公司开发的...

    sqlite3快速建表框架

    "sqlite3快速建表框架"指的是简化SQLite3数据库创建和操作的工具或库。 LitePal是一个基于Android的快速开发框架,它使得在Android应用中使用SQLite3数据库变得更加简便。LitePal的主要功能包括自动建表、自动更新...

    sqlite3 window和liunx通过读取xml自动建内存表和硬盘表

    创建内存表和硬盘表的过程通常涉及解析XML文件,提取表格结构(列名、数据类型等),然后使用SQLite3的SQL命令来创建对应的表。 在`tool_sqlite.cpp`和`tool_sqlite3.cpp`中,可能包含了一些工具函数,用于处理XML...

    springboot+mybatisplus自动建表案例

    例如,假设我们要创建一个`User`表,我们可以创建一个对应的`User`类,并使用MyBatis Plus的注解进行字段映射。 ```java package com.example.entity; import com.baomidou.mybatisplus.annotation.TableField; ...

    数据库建表完整命令

    - `列1、列2、列3...`:是表中的字段或列,每个列都有其特定的数据类型,如`INT`(整型)、`VARCHAR`(可变长度字符串)、`DATE`(日期)等。 - `数据类型`:定义了列可以存储的数据类型。 - `PRIMARY KEY`:标识一...

    JAVA SQLite 自动生成实体类 源码

    当开发者有一个SQLite数据库文件,他们可以使用这个工具解析数据库中的表结构,包括表名、字段名、字段类型等信息。解析完成后,工具会根据这些信息生成相应的Java类,这些类通常包含了数据库表的字段作为类的属性,...

    VS2010使用SQLite数据库的Demo

    在本文中,我们将深入探讨如何在Visual Studio 2010 (VS2010) 中使用SQLite数据库进行基本操作,包括数据库的创建、建表、插入数据以及查询数据。SQLite是一个轻量级的、开源的嵌入式SQL数据库引擎,它无需单独的...

    基于Python(tkinter)+sqlite3的图书信息管理系统(GUI图形界面)_数据库图书信息管理系统

    这是一个基于Python的图书信息管理系统,使用了tkinter库来创建GUI图形界面,同时结合sqlite3数据库来存储和管理图书数据。这个系统对于初学者来说是一个很好的实践项目,它涵盖了多种编程和技术知识点,包括: 1. ...

    对 sqlite 的使用进行简单封装,仅涉及简单的单表 增删改查,基于 FMDB, 操作基于 model

    对 sqlite 的使用进行简单封装,仅涉及简单的单表 增删改查 , 基于 FMDB,操作基于 model ,数据库表字段与 model 属性一一对应,对 model 整体进行操作, 根据 model 对象自动建表,字段类型只支持 NSString , NSIteger ,...

    SQLite在VC下的使用.doc

    - 支持多种数据类型,如NULL、INTEGER、REAL、TEXT和BLOB; - 提供索引、触发器、视图等功能; - 具有良好的跨平台性; - 不需要安装即可使用; - 支持多种编程语言接口。 #### 二、下载SQLite 要使用SQLite...

    SqliteDev 非常不错的Sqlite数据库管理工具

    1. **建表**:SqliteDev允许用户创建新的数据库表,定义字段类型、长度、约束条件等属性,支持自动增长主键、外键关联等数据库设计元素,使得数据库结构设计直观易行。 2. **数据导入导出**:用户可以通过SqliteDev...

    注解获取建表sql的demo

    本篇将重点讲解如何利用注解来获取SQLite数据库的建表SQL语句,以此实现更高效、便捷的数据库设计。 首先,我们需要了解SQLite中的注解。SQLite注解是一种元数据声明方式,它允许我们在Java类或字段上添加特定的...

    iOS数据处理之SQLite数据库

    SQLite支持的字段类型虽然灵活,但推荐为字段指定类型以保持数据一致性。字段类型分为几种近似类型,如INTEGER、TEXT、BLOB、REAL和NUMERIC。例如,如果字段类型字符串包含"INT",那么它将被视为INTEGER类型。 ...

    Qt中用SQLite读写时间和日期.pdf

    首先,SQLite数据库本身并不直接支持特定的日期和时间数据类型,而是将其作为字符串存储。在Qt中,我们通常使用`QDateTime`类来处理日期和时间,该类提供了丰富的功能,包括日期和时间的获取、格式化以及解析。 在...

    利用python编写exe应用,实现excel文件输出建表sql文件

    例如,如果列名为"Name",类型为字符串,那么对应的SQL字段可能是`name VARCHAR(255)`。 4. **构建SQL建表语句**:根据Excel的列信息,生成`CREATE TABLE`语句。可以创建一个模板字符串,用循环遍历DataFrame的列...

    对sqlite的使用进行简单封装,仅涉及简单的单表 增删改查, 基于FMDB,操作基于model,数据库表字段与model属性

    对 sqlite 的使用进行简单封装,仅涉及简单的单表 增删改查 , 基于 FMDB,操作基于 model ,数据库表字段与 model 属性一一对应,对 model 整体进行操作, 根据 model 对象自动建表,字段类型只支持 NSString , NSIteger ,...

    Android数据库hibernate框架.

    自动建表,支持属性来自继承类:可根据注解自动完成建表,并且对于继承类中的注解字段也支持自动建表. 2.自动支持增删改 * ,增改支持对象化操作:增删改是数据库操作的最基本单元,不用重复写这些增删改的代码,并且添加...

    MyDataBase:SQLite数据库操作

    SQLite数据库操作极致简单 一句代码建库建表1、调用层不关心数据库的创建和存放2、调用层不关心表的创建3、调用层不关心sql语句的拼接4、调用层传对象就可以操作数据库5、无需关心数据库版本(程序会自动建表,自动...

Global site tag (gtag.js) - Google Analytics