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;
R-Tree扩展提高了25%的性能。
在可用时使用编译器内置函数(例如:__builtin_bswap32()或_byteswap_ulong())进行字节交换。
使用sqlite3_blob键/值访问对象而不是SQL从R-Tree节点中拉出内容
其他各种增强功能,如循环展开。
添加SQLITE_DEFAULT_LOOKASIDE编译时选项。
将默认后备大小从512,125增加到1200,100,因为这样可以提供更好的性能,而每个连接只添加56KB的额外内存。对内存敏感的应用程序可以在编译时,启动时或运行时恢复旧的默认值。
使用编译器内置__builtin_sub_overflow(),__builtin_add_overflow()和__builtin_mul_overflow()(如果可用)。(使用SQLITE_DISABLE_INTRINSIC编译时选项可以省略所有编译器内建函数。)
添加了SQLITE_ENABLE_NULL_TRIM编译时选项,这可能会导致某些应用程序的数据库文件大大减小,从而有可能与旧版本的SQLite不兼容。
将SQLITE_DEFAULT_PCACHE_INITSZ从100更改为20,以提高性能。
添加了SQLITE_UINT64_TYPE编译时选项作为SQLITE_INT64_TYPE的模拟。
在单遍而不是两遍中执行一些UPDATE操作。
增强会话扩展以支持WITHOUTROWID表。
修复了具有数十万行的多行VALUES子句创建视图时的性能问题和潜在的堆栈溢出。
添加了sha1.c扩展。
在命令行shell中,增强“.mode”命令,以便它恢复模式“line”,“list”,“column”和“tcl”的默认列和行分隔符。
增强SQLITE_DIRECT_OVERFLOW_READ选项,以便它在WAL模式下工作,只要正在读取的页面不在WAL文件中。
增强LEMON解析器生成器,以便它可以将解析器对象存储为堆栈变量,而不是从堆分配空间,并利用合并中的增强。
其他性能改进。使用大约6.5%的CPU周期。
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;
更新日志
v3.17.0版本R-Tree扩展提高了25%的性能。
在可用时使用编译器内置函数(例如:__builtin_bswap32()或_byteswap_ulong())进行字节交换。
使用sqlite3_blob键/值访问对象而不是SQL从R-Tree节点中拉出内容
其他各种增强功能,如循环展开。
添加SQLITE_DEFAULT_LOOKASIDE编译时选项。
将默认后备大小从512,125增加到1200,100,因为这样可以提供更好的性能,而每个连接只添加56KB的额外内存。对内存敏感的应用程序可以在编译时,启动时或运行时恢复旧的默认值。
使用编译器内置__builtin_sub_overflow(),__builtin_add_overflow()和__builtin_mul_overflow()(如果可用)。(使用SQLITE_DISABLE_INTRINSIC编译时选项可以省略所有编译器内建函数。)
添加了SQLITE_ENABLE_NULL_TRIM编译时选项,这可能会导致某些应用程序的数据库文件大大减小,从而有可能与旧版本的SQLite不兼容。
将SQLITE_DEFAULT_PCACHE_INITSZ从100更改为20,以提高性能。
添加了SQLITE_UINT64_TYPE编译时选项作为SQLITE_INT64_TYPE的模拟。
在单遍而不是两遍中执行一些UPDATE操作。
增强会话扩展以支持WITHOUTROWID表。
修复了具有数十万行的多行VALUES子句创建视图时的性能问题和潜在的堆栈溢出。
添加了sha1.c扩展。
在命令行shell中,增强“.mode”命令,以便它恢复模式“line”,“list”,“column”和“tcl”的默认列和行分隔符。
增强SQLITE_DIRECT_OVERFLOW_READ选项,以便它在WAL模式下工作,只要正在读取的页面不在WAL文件中。
增强LEMON解析器生成器,以便它可以将解析器对象存储为堆栈变量,而不是从堆分配空间,并利用合并中的增强。
其他性能改进。使用大约6.5%的CPU周期。
同类软件
网友评论
共0条评论(您的评论需要经过审核才能显示)
类似软件
-
oracle数据库 v21c官方版 数据库类 / 1.83G
-
sql server 2000个人版 数据库类 / 535.39M
-
PowerDesigner v16.5.0.3982 数据库类 / 475.26M
-
sql server 2014中文版 数据库类 / 2.2G
-
sybase sql anywhere(数据库管理工具) v5.0官方版 数据库类 / 14.03M
精彩发现
换一换精品推荐
-
visual foxpro 7.0 数据库类 / 18.88M
查看 -
Visual FoxPro(数据库开发软件) v6.0 数据库类 / 37.82M
查看 -
exportizer pro中文版 v8.3.8 数据库类 / 6.2M
查看
专题推荐
本类排行
月排行总排行