sqlite3数据库
分享到:
开发软件的用户对于数据库都不会陌生,这款sqlite3就是一款小巧切好用的关系型数据库,也是一款能够代替MySql的数据库,目前已经绑定到了PHP5.0上,就像我们的ASP和access结合一样。如果你是一位网页PHP开发人员,那么这个sqlite3就是你必须掌握使用的东西,并且这款软件的设计目标是嵌入式的设计,所以目前已经有很多嵌入式产品在使用这个数据库,而且由于软件的资源占用非常低,所以诸多嵌入设备都开始使用这个数据库来存储数据,让我们的嵌入式设备有更多的资源运行。
sqlite3是目前世界最棒的小型数据库,大名鼎鼎的浏览器Firefox就是使用这个数据库,所以大家可不要小看这个数据库的潜力,而且还能够和众多的程序语言相结合,比如Tcl、PHP、JAVA等等。
sqlite 跟MS的access一样是文件型数据库,就是说,一个数据库就是一个文件,此数据库里可以建立很多的表,可以建立索引、触发器等等,但是,它实际上得到的就是一个文件。备份这个文件就备份了整个数据库。
sqlite 不需要任何数据库引擎,这意味着如果你需要 sqlite 来保存一些用户数据,甚至都不需要安装数据库(如果你做个小软件还要求人家必须装了sqlserver 才能运行,那也太黑心了)。
删除表: drop table 表名;
插入数据: insert into 表名 values(, , ,) ;
创建索引: create [unique] index 索引名on 表名(col….);
删除索引: drop index 索引名(索引是不可更改的,想更改必须删除重新建)
删除数据: delete from 表名;
更新数据: update 表名 set 字段=’修改后的内容’ where 条件;
增加一个列: Alter table 表名 add column 字段 数据类型;
选择查询: select 字段(以”,”隔开) from 表名 where 条件;
日期和时间: Select datetime('now')
日期: select date('now');
时间: select time('now');
总数:select count(*) from table1;
求和:select sum(field1) from table1;
平均:select avg(field1) from table1;
最大:select max(field1) from table1;
最小:select min(field1) from table1;
排序:select 字段 from table1 order by 字段(desc或asc) ;(降序或升序)
分组:select 字段 from table1 group by 字段,字段… ;
限制输出:select 字段 from table1 limit x offset y;
= select 字段 from table1 limit y , x;
(备注:跳过y行,取x行数据)
(操作仍待完善)…
INTEGER 值为带符号的整型,根据类别用1,2,3,4,6,8字节存储
REAL 值为浮点型,8字节存储
TEXT 值为text字符串,使用数据库编码(UTF-8, UTF-16BE or UTF-16-LE)存储
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 包含了 年、月、日、时、分、秒、千分之一秒。
如果将声明表的一列设置为 INTEGER PRIMARY KEY,则具有:
1.每当你在该列上插入一NULL值时, NULL自动被转换为一个比该列中最大值大1的一个整数;
2.如果表是空的, 将会是1;
算术函数
abs(X)返回给定数字表达式的绝对值。
max(X,Y[,...])返回表达式的最大值。
min(X,Y[,...])返回表达式的最小值。
random(*)返回随机数。
round(X[,Y])返回数字表达式并四舍五入为指定的长度或精度。
字符处理函数
length(X)返回给定字符串表达式的字符个数。
lower(X)将大写字符数据转换为小写字符数据后返回字符表达式。
upper(X)返回将小写字符数据转换为大写的字符表达式。
substr(X,Y,Z)返回表达式的一部分。
randstr()
quote(A)
like(A,B)
确定给定的字符串是否与指定的模式匹配。
glob(A,B)
条件判断函数
coalesce(X,Y[,...])
ifnull(X,Y)
nullif(X,Y)
集合函数
avg(X)返回组中值的平均值。
count(X)返回组中项目的数量。
max(X)返回组中值的最大值。
min(X)返回组中值的最小值。
sum(X)返回表达式中所有值的和。
其他函数
typeof(X)返回数据的类型。
last_insert_rowid()返回最后插入的数据的 ID 。
sqlite_version(*)返回 SQLite 的版本。
change_count()返回受上一语句影响的行数。
last_statement_change_count()
二.有关事务的操作
(成批操作的时候,启动事务,比不启动事务快n倍)
开始事物处理
BEGIN TRANSACTION;
…………..
进行对数据库操作
…………..
事物提交
COMMIT;
具体事例如下:
假设有一个 t1 表,其中有 "a", "b", "c" 三列, 如果要删除列 c ,以下过程描述如何做:
BEGIN TRANSACTION;
CREATE TEMPORARY TABLE t1_backup(a,b);
INSERT INTO t1_backup SELECT a,b FROM t1;
DROP TABLE t1;
CREATE TABLE t1(a,b);
INSERT INTO t1 SELECT a,b FROM t1_backup;
DROP TABLE t1_backup;
COMMIT;
sqlite3是目前世界最棒的小型数据库,大名鼎鼎的浏览器Firefox就是使用这个数据库,所以大家可不要小看这个数据库的潜力,而且还能够和众多的程序语言相结合,比如Tcl、PHP、JAVA等等。
sqlite3操作入门
sqlite提供的是一些C函数接口,你可以用这些函数操作数据库。通过使用这些接口,传递一些标准 sql 语句(以 char * 类型)给 sqlite 函数,sqlite 就会为你操作数据库。sqlite 跟MS的access一样是文件型数据库,就是说,一个数据库就是一个文件,此数据库里可以建立很多的表,可以建立索引、触发器等等,但是,它实际上得到的就是一个文件。备份这个文件就备份了整个数据库。
sqlite 不需要任何数据库引擎,这意味着如果你需要 sqlite 来保存一些用户数据,甚至都不需要安装数据库(如果你做个小软件还要求人家必须装了sqlserver 才能运行,那也太黑心了)。
常用SQL语句
创建表: create table 表名(元素名 类型,…);删除表: drop table 表名;
插入数据: insert into 表名 values(, , ,) ;
创建索引: create [unique] index 索引名on 表名(col….);
删除索引: drop index 索引名(索引是不可更改的,想更改必须删除重新建)
删除数据: delete from 表名;
更新数据: update 表名 set 字段=’修改后的内容’ where 条件;
增加一个列: Alter table 表名 add column 字段 数据类型;
选择查询: select 字段(以”,”隔开) from 表名 where 条件;
日期和时间: Select datetime('now')
日期: select date('now');
时间: select time('now');
总数:select count(*) from table1;
求和:select sum(field1) from table1;
平均:select avg(field1) from table1;
最大:select max(field1) from table1;
最小:select min(field1) from table1;
排序:select 字段 from table1 order by 字段(desc或asc) ;(降序或升序)
分组:select 字段 from table1 group by 字段,字段… ;
限制输出:select 字段 from table1 limit x offset y;
= select 字段 from table1 limit y , x;
(备注:跳过y行,取x行数据)
(操作仍待完善)…
支持的数据类型介绍
NULL 值为NULLINTEGER 值为带符号的整型,根据类别用1,2,3,4,6,8字节存储
REAL 值为浮点型,8字节存储
TEXT 值为text字符串,使用数据库编码(UTF-8, UTF-16BE or UTF-16-LE)存储
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 包含了 年、月、日、时、分、秒、千分之一秒。
如果将声明表的一列设置为 INTEGER PRIMARY KEY,则具有:
1.每当你在该列上插入一NULL值时, NULL自动被转换为一个比该列中最大值大1的一个整数;
2.如果表是空的, 将会是1;
算术函数
abs(X)返回给定数字表达式的绝对值。
max(X,Y[,...])返回表达式的最大值。
min(X,Y[,...])返回表达式的最小值。
random(*)返回随机数。
round(X[,Y])返回数字表达式并四舍五入为指定的长度或精度。
字符处理函数
length(X)返回给定字符串表达式的字符个数。
lower(X)将大写字符数据转换为小写字符数据后返回字符表达式。
upper(X)返回将小写字符数据转换为大写的字符表达式。
substr(X,Y,Z)返回表达式的一部分。
randstr()
quote(A)
like(A,B)
确定给定的字符串是否与指定的模式匹配。
glob(A,B)
条件判断函数
coalesce(X,Y[,...])
ifnull(X,Y)
nullif(X,Y)
集合函数
avg(X)返回组中值的平均值。
count(X)返回组中项目的数量。
max(X)返回组中值的最大值。
min(X)返回组中值的最小值。
sum(X)返回表达式中所有值的和。
其他函数
typeof(X)返回数据的类型。
last_insert_rowid()返回最后插入的数据的 ID 。
sqlite_version(*)返回 SQLite 的版本。
change_count()返回受上一语句影响的行数。
last_statement_change_count()
二.有关事务的操作
(成批操作的时候,启动事务,比不启动事务快n倍)
开始事物处理
BEGIN TRANSACTION;
…………..
进行对数据库操作
…………..
事物提交
COMMIT;
具体事例如下:
假设有一个 t1 表,其中有 "a", "b", "c" 三列, 如果要删除列 c ,以下过程描述如何做:
BEGIN TRANSACTION;
CREATE TEMPORARY TABLE t1_backup(a,b);
INSERT INTO t1_backup SELECT a,b FROM t1;
DROP TABLE t1;
CREATE TABLE t1(a,b);
INSERT INTO t1 SELECT a,b FROM t1_backup;
DROP TABLE t1_backup;
COMMIT;
展开更多
sqlite3数据库下载地址
- 需先下载高速下载器:
- 专用下载:
- 其它下载: