当前位置:数据库 > SQLite >>

android sqlite3 adb命令学习

创建数据库
在cmd下面调用sqlite3.exe,创建数据命令如下:
sqlite3 db_name.xx;
数据库名称任意,创建后直接进入数据库;如果文件存在,则直接打开;

SQL的指令格式
所有的SQL的指令都是以分号(;)结尾的,为增加可读性,允许一个指令多行编辑,直到遇到分号结束指令;
sqlite3中两个减号(--)代表注释,sqlite会忽略。

创建表
键入以下指令即可创建一个tab_name表:
create table tab_name (field1, field2, field3...);
sqlite3对字段没有严格要求,字段可以存储任何类型数据,它会适时的自动转换,当然,你也可以创建表的时候对数据类型进行定义。

数据类型
NULL
INTEGER
REAL
TEXT
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 包含了 年、月、日、时、分、秒、千分之一秒。


查看
.database 显示数据库信息;
.tables 显示表名称;(好像.table也可以)
.schema 命令可以查看创建数据表时的SQL命令;
.schema table_name 查看创建表table_name时的SQL的命令;

插入记录
insert into table_name values (field1, field2, field3...);

查询
select * from table_name;查看table_name表中所有记录;
select * from table_name where field1='xxxxx'; 查询符合指定条件的记录;

删除
drop table_name;     删除表;
drop index_name;     删除索引;

改变输出格式

.mode list|column|insert|line|tabs|tcl|csv
.separator "X" 更改分界符号为X

更改输出
.output file_name|stdout
输出到文件或者标准输出(默认终端)


.databases               列出数据库文件名
.tables ?PATTERN?        列出?PATTERN?匹配的表名
.import FILE TABLE       将文件中的数据导入的文件中
.dump ?TABLE?            生成形成数据库表的SQL脚本
.output FILENAME         将输出导入到指定的文件中
.output stdout           将输出打印到屏幕
.mode MODE ?TABLE?       设置数据输出模式(csv,html,tcl…
.nullvalue STRING        用指定的串代替输出的NULL串
.read FILENAME           执行指定文件中的SQL语句
.schema ?TABLE?          打印创建数据库表的SQL语句
.separator STRING        用指定的字符串代替字段分隔符
.show                    打印所有SQLite环境变量的设置
.quit                    退出命令行接口


1.存储类别

第二版把所有列的值都存储成ASCII文本格式。第三版则可以把数据存储成整数和实数,还可以存储BLOB数据.

Each value stored in an SQLite数据库中存储的每个值都有一个属性,都属于下面所列类中的一种,(被数据库引擎所控制)

NULL: 这个值为空值
INTEGER: 值被标识为整数,依据值的大小可以依次被存储为1,2,3,4,5,6,7,8.
REAL: 所有值都是浮动的数值,被存储为8字节的IEEE浮动标记序号.
TEXT: 文本. 值为文本字符串,使用数据库编码存储(TUTF-8, UTF-16BE or UTF-16-LE).
BLOB: 值是BLOB数据,如何输入就如何存储,不改变格式.

像SQLite2.0版一样,在3.0版中,除了INTEGER PRIMARY KEY,数据库中的任何列都可以存储任何类型的数据. 这一规则也有例外,在下面的"严格相似

模式"中将描述.

输入SQLite的所有值,不管它是嵌入 SQL语句中的文字还是提前编译好的绑定在SQL语句中的值, 在SQL语句执行前都被存储为一个类.在下面所描述

的情况下,数据库引擎将在执行时检查并把值 在数字存储类(整数和实数)和文本类间转换.

存储的类别最初被分类为如下:

具体的值比如SQL语句部分的带双引号或单引号的文字被定义为文本,如果文字没带引号并没有小数点或指数则被定义为整数,如果文字没带引号但有

小数点或指数则被定义为实数, 如果值是空则被定义为空值.BLOB数据使用符号X'ABCD'来标识.

Values supplied using the 被输入的值使用sqlite3_bind_* APIs的被分类一个存储等级, 这等级是和原来的类基本相一致的. (比如

qlite3_bind_blob()绑定一个BLOB的值).

值的分类是SQL分等级操作的结果,决定于最远的操作表达式.用户定义的功能也许会把值返回任意的类.在编译的时候来确定表达式的存储类基本是

不可能的.

2. 列之间的亲和性

在SQLite3.0版中,值被定义为什么类型只和值自身有关,和列没有关系,和变量也没有关系. (这有时被称作 弱类型.)所有其它的我们所使用的数据

库引擎都受静态类型系统的限制, 其中的所有值的类是由其所属列的属性决定的,而和值无关.

为了最大限度的增加SQLite数据库和其他数据库的兼容性,SQLite支持列的"类型亲和性".
列的亲和性是为该列所存储的数据建议一个类型.我们要注意是建议而不是强迫. 在理论上来讲,任何列依然是可以存储任何类型的数据的. 只是针

对某些列,如果给建议类型的话,数据库将按所建议的类型存储.这个被优先使用的数据类型则被称为"亲和类型".

在SQLite3.0版中,数据库中的每一列都被定义为以下亲和类型中的一种:

TEXT
NUMERIC
INTEGER
REAL
NONE

一个具有类型亲和性的列按照无类型,文本,或BLOB存储所有的数据.如果数字数据被插入一个 具有文本类型亲和性的列,在存储之前数字将被转换成

文本.

一个具有数字类型亲和性的列也许使用所有的五个存储类型存储值.当文本数据被插入一个数字列时, 在存储之前,数据库将尝试着把文本转换成整

数或实数.如果能成功转换的话,值将按证书活实数的类型被存储. 如果不能成功转换的话,值则只能按文本类型存储了,而不会被转换成无类型或

BLOB类型来存储.

一个具有整数亲和力的列在转换方面和具有数字亲和力的列是一样的,但也有些区别 , 比如没有浮动量的实值(文本值转换的值)被插入具有整数亲

和力的列时,它将被转换成整数并按整数类型存储.

一个具有无类型亲和力的列不会优先选择使用哪个类型.在数据被输入前它不会强迫数据转换类型.

2.1 列的亲和性的决定

一个列的亲和类型是由该列所宣称的类型决定的.遵守以下规则:

a. 如果数据类型包括字符串"INT"那么它被定义成具有整数亲和性.
b. 如果列中的数据类型包括以下任何的字符串 "CHAR", "CLOB", or "TEXT" 那么这个列则具有文本亲和性.要注意VARCHAR类型包括字符串"CHAR"

因此也具有文本类型亲和性.
c. 如果一个列的数据类型包括字符串"BLOB"或者如果数据类型被具体化了,
   那么这个列具有无类型亲和性.
d. 否则就具有数字类型亲和性.

如果表格使用If "CREATE TABLE AS SELECT..."语句生成的,那么所有的列则都没有具体的数据类型,则没有类型亲和性.

2.2 列的亲和性的例子

    CREATE TABLE t1(
        t TEXT,
        nu NUMERIC,
        i INTEGER,
        no BLOB
    );

    -- Storage classes for the following row:
    -- TEXT, REAL, INTEGER, TEXT
    INSERT INT

补充:移动开发 , Android ,
Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,