zoukankan      html  css  js  c++  java
  • SQLite 一款轻型的数据库

    SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至2015年已经有15个年头,SQLite也迎来了一个版本 SQLite 3已经发布。 
     
    1. ACID事务[1] 
    2. 零配置 – 无需安装和管理配置
    3.储存在单一磁盘文件中的一个完整的数据库
    4.数据库文件可以在不同字节顺序的机器间自由的共享
    5.支持数据库大小至2TB
    6. 足够小, 大致13万行C代码, 4.43M
    7. 比一些流行的数据库在大部分普通数据库操作要快
    8. 简单, 轻松的API
    9. 包含TCL绑定, 同时通过Wrapper支持其他语言的绑定
    10. 良好注释的源代码, 并且有着90%以上的测试覆盖率
    11. 独立: 没有额外依赖
    12. 源码完全的开源, 你可以用于任何用途, 包括出售它
    13. 支持多种开发语言,C, C++, PHP, Perl, Java, C#,Python, Ruby等
     
    同时它还支持事务处理功能等等。也有人说它象Microsoft的Access,有时候真的觉得有点象,但是事实上它们区别很大。比如SQLite 支持跨平台,操作简单,能够使用很多语言直接创建数据库,而不象Access一样需要Office的支持。如果你是个很小型的应用,或者你想做嵌入式开发,没有合适的数据库系统,那么你可以考虑使用SQLite。到2013年10月17日最新版本是 3.8.1 。能在上面获得源代码和文档。同时因为数据库结构简单,系统源代码也不是很多,也适合想研究数据库系统开发的专业人士.[1] 
     
    SQLite亦可以作为桌面数据库使用,以下为第三方SQLite的GUI软件[1] 。例如:
    SQLiteMan,使用QT开发的一个SQLite客户端,支持多语言、跨平台。
    SQLiteSpy 轻量级的SQLite客户端,免费,单文件,界面设计紧凑,很稳定, 功能相对较少,创建表与添加数据均需sql语句,作为数据浏览和修改工具极佳。
    SQLite Manager, 以火狐浏览器的扩展形式提供的SQLite客户端[1] 。
    SQLite Database Browser, a graphical client to access SQLite databases[1] 
    SqlPro SQL Client, another graphical client to work with SQLite databases。
     
     SQLite数据库简介和基础知识
    在Android平台上,集成了一个嵌入式关系型数据库——SQLite(轻量级数据库)。它是一个非常流行
    的嵌入式数据库,支持SQL语言,并且只利用很少的内存就有很好的性能。由于JDBC不适合手机这种
    内存受限设备,所以Android开发人员需要学习新的API来使用SQLite。此外它还是开源的,任何人
    都可以使用它。许多开源项目(Mozilla, PHP, Python)都使用了SQLite。
    SQLite第一个Alpha版本诞生于2000年5月。它是遵守ACID的关联式数据库管理系统,包含在一个相
    对小的C库中,同时是D.RichardHipp建立的公有领域项目。它基本上符合SQL-92标准,和其他的主
    要SQL数据库没什么区别。它的优点就是高效,Android运行时环境包含了完整的SQLite。
    SQLite和其他数据库最大的不同就是对数据类型的支持。创建一个表时,可以在CREATE TABLE语句
    中指定某列的数据类型,但是你可以把任何数据类型放入任何列中。当某个值插入数据库时,
    SQLite将检查它的类型。如果该类型与关联的列不匹配,则SQLite会尝试将该值转换成该列的类型
    。如果不能转换,则该值将作为其本身具有的类型存储。比如可以把一个字符串(String)放入 
    INTEGER 列。因此SQLite称这为“弱类型”(manifest typing)。
    SQLite3支持NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,
    虽然支持的数据类型只有五种,但实际上SQLite3也接受varchar(n)、char(n)、decimal(p,s)等数
    据类型,只不过在运算或保存时会转换成对应的五种数据类型。
    SQLite最大的特点是可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是
    什么。例如:可以在INTEGER类型的字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字
    符型字段中存放日期型。但有一种情况例外:定义为INTEGER PRIMARY KEY的字段只能存储64位整数
    ,当向这种字段保存除整数以外的数据时,将会产生错误。此外,SQLite在解析CREATE TABLE语句
    时,会忽略CREATE TABLE语句中在字段名后面的数据类型信息,例如下面SQL语句中会忽略name字段
    的类型信息:
    create table person(personid integer primary key autoincrement, name varchar(20), age 
    integer)
    即使指定了字段的数据长度,该字段仍然可以保存超过指定长度的内容。
    SQLite不支持一些标准的SQL功能,特别是外键约束(FOREIGN KEY CONSTRAINTS),嵌套TRANSACTION
    和RIGHT OUTER JOIN和FULL OUTER JOIN, 还有一些ALTER TABLE功能。
    除了上述功能外,SQLite是一个完整的SQL系统。
    SQLite可以解析大部分标准SQL语句,例如:
    查询语句:
        select * from 表名 where 条件子句 group by 分组子句 having 条件子句 order by 排序子
    句;
        select * from person;
        select * from person order by personid desc;
        select age from person group by age having count(*)>3;
    分页语句与MySQL类似,例如通过SQL语句获取5条记录,跳过前面3条记录:
        select * from person limit 3,5;
        或者
        select * from person limit 5 offset 3;
    插入语句:
        insert into 表名(字段列表) values(值列表)。例如:insert into person(name, age) 
    values('网星',3);
    更新语句:
        update 表名 set 字段名=新值 where 条件子句。例如:update person set name='网星软件' 
    where personid=1;
    删除语句:
        delete from 表名 where 条件子句。例如:delete from person where personid=1;
    http://www.sqlite.org下载SQLite 3.7.13版本。将下载的文件解压,会看到一个sqlite3.exe,
    可以将其放入Windows目录下。
    开始输入cmd,进入命令行后,切换到sqlite3.exe的保存目录中进行操作:
    1)创建数据库文件
       F:AndroidSQLite>sqlite3 d:/test.db 回车
       将会在d盘创建一个test.db。
       同时也使sqlite挂载上这个test.db。
    2)用.help可以查看命令帮助
       sqlite>.help 回车即可
    3)输入SQL语句创建表。用;结束,然后回车就可以看到所创建的表。
       sqlite>create table person(personid integer primary key autoincrement, name varchar
    (20), age integer);
    4)查看创建了多少张表
       sqlite>.tables 
    5)查看表结构
       sqlite>.schema 表名
    6)查看目前挂载的数据库
       sqlite>.database
    7)如果要把查询结果输出到文件
       sqlite>.output d:/query.txt【此时查询结果就输出到文件d:/query.txt】
       sqlite> insert into person(name, age) values('zhangsan', 22);
       sqlite> select * from person;
       
       sqlite>.output stdout【此时把查询结果就输出到控制台】
    8)把表结构输出,同时索引也会输出
       sqlite>.dump 表名
    9)退出
       sqlite>.exit 或者.quit
     
     

    SQLite官方网站
    http://www.sqlite.org/
    http://www.sqlite.org/download.html
    SQLite中文社区
    http://www.sqlite.com.cn/
    PC端的SQLite数据库管理工具
    SQLite Database Browser
    http://sourceforge.net/projects/sqlitebrowser/
    http://sourceforge.net/projects/sqlitebrowser/files/sqlitebrowser/2.0%20beta1/
    SQLite Expert
    http://www.sqliteexpert.com/
    SQLite Developer
    http://www.sqlitedeveloper.com/
    SQLiteSpy
    http://www.yunqa.de/delphi/doku.php/products/sqlitespy/index
    此外,还有一个最方便的SQLite客户端是FireFox SQLite Manager扩展,它可以跨所有平台使用。
  • 相关阅读:
    索引查找Java实现
    经典算法之折半查找
    进制转换问题
    排序算法总结之希尔排序
    自己写的栈
    排序问题Java
    画柱状图Java
    一些值得看的性能优化的文章
    理解 BFC
    canvas
  • 原文地址:https://www.cnblogs.com/shangdawei/p/4446521.html
Copyright © 2011-2022 走看看