安装
$ tar zxvf sqlite-3.3.5.tar.gz
$ cd sqlite-3.3.5
$ ./configure --disable-tcl --prefix=/usr/local/sqlite3/ (后面的路径也可省略,即安装在默认路径下)
$ make
$ make install
创建数据库
在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,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 退出命令行接口
例如,创建一个包含一个表"tb11"名字为"ex1"的SQLite数据库,你可以这样做:
$sqlite3 ex1
SQLite version 3.3.17
Enter ".help" for instructions
sqlite> create table tbl1(one varchar(10),two smallint);
sqlite> insert into tbl1 values('hello!',10);
sqlite> insert into tbl1 values('goodbye',20);
sqlite> select * from tbl1;
hello!|10
goodbye|20
sqlite>
你可以通过敲你所用系统的文件结束符(通常是Ctrl + D)或者中断字符(通常是Ctrl + C)。来终止sqlite3程序。确定你在每个SQL语句结束敲入分号!sqlite3程序通过查找分号来决定一个SQL语句的结束。如果你省略分号,sqlite3将给你一个连续的命令提示符并等你给当前的SQL命令添加更多的文字。这个特点让你输入多行的多个SQL语句,例如:
sqlite> create table tbl2(
...> f1 varchar(30) primary key,
...> f2 text,0)"> ...> f3 real
...> );
题外话:查询SQLITE_MASTER表
SQLite数据库的框架被保存在一个名叫"sqlite_master"的特殊的表中。你可以像查询其它表一样通过执行“SELECT”查询这个特殊的表。例如:
$ sqlite3 ex1
SQlite vresion 3.3.10
sqlite> select * from sqlite_master;
type = table
name = tbl1
tbl_name = tbl1
rootpage = 3
sql = create table tbl1(one varchar(10),two smallint)
但你不能在sqlite_master表中执行诸如DROP TABLE,UPDATE,INSERT 或者DELETE命令。sqlite_master表在你创建、删除和索引数据库时自动更新这个表。你不能手工更改sqlite_master表。
TEMPORARY表的结构没有存储在"sqlite_master"表中,由于TEMPORARY表对应用是不可见的,而不是应用程序创建这个表。TEMPORARY表结构被存储在另外一个名叫"sqlite_temp_master"的特定的表中。"sqlite_temp_master"表是临时表自身。