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:\Android\SQLite>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
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扩展,它可以跨所有平台使用。
SQLite 一款轻型的数据库的更多相关文章
- android SQLite使用SQLiteOpenHelper类对数据库进行操作
android SQLite使用SQLiteOpenHelper类对数据库进行操作 原文: http://byandby.iteye.com/blog/835580
- SQLite使用教程4 附加数据库
http://www.runoob.com/sqlite/sqlite-attach-database.html SQLite 附加数据库 假设这样一种情况,当在同一时间有多个数据库可用,您想使用其中 ...
- [Sqlite]-->Java采用jdbc联系Sqlite各种特定的工艺数据库的数据操作
引: 1, Sqlite在Windows.Linux 和 Mac OS X 上的安装过程 2.嵌入式数据库的安装.建库.建表.更新表结构以及数据导入导出等等具体过程记录 3,嵌 ...
- 利用SQLite在android上创建数据库
利用SQLite在android上创建数据库 方法: 1.创建我们的数据库类继承SQLiteOpenHelper类 完成相关函数的重写和数据库对象的初始化 public MySQLiteOpenHel ...
- 几款主流 NoSql 数据库的对比
最近小组准备启动一个 node 开源项目,从前端亲和力.大数据下的IO性能.可扩展性几点入手挑选了 NoSql 数据库,但具体使用哪一款产品还需要做一次选型. 我们最终把选项范围缩窄在 HBase.R ...
- sqlite升级--浅谈Android数据库版本升级及数据的迁移
Android开发涉及到的数据库采用的是轻量级的SQLite3,而在实际开发中,在存储一些简单的数据,使用SharedPreferences就足够了,只有在存储数据结构稍微复杂的时候,才会使用数据库来 ...
- 功能齐全、效率一流的免费开源数据库导入导出工具(c#开发,支持SQL server、SQLite、ACCESS三种数据库),每月借此处理数据5G以上
软件名:DataPie 功能:支持SQL server.SQLite.ACCESS数据库的导入.导出.存储过程调用,支持EXCEL2007.EXCEL2003.ACCESS2007. CSV文件导入数 ...
- SQLite使用教程5 分离数据库
http://www.runoob.com/sqlite/sqlite-detach-database.html SQLite 分离数据库 SQLite的 DETACH DTABASE 语句是用来把命 ...
- SQLite使用教程4 创建数据库
http://www.runoob.com/sqlite/sqlite-create-database.html SQLite 创建数据库 SQLite 的 sqlite3 命令被用来创建新的 SQL ...
随机推荐
- urllib2使用初探
在入门urllib2之前,我想应该先调研一下urllib与urllib2的区别[1].首先我们要明白的是,这两个模块不可以相互替代.两者都是接受URL请求的模块,但是提供了不同的功能,两个显著的区别是 ...
- hive数据倾斜问题
卧槽草草 来源于其它博客: 貌似我只知道group by key带来的倾斜 hive在跑数据时经常会出现数据倾斜的情况,使的作业经常reduce完成在99%后一直卡住,最后的1%花了几个小时都没跑完, ...
- java基础57 css样式、选择器和css定位(网页知识)
本文知识点(目录): 1.CSS样式 2.选择器 3.CSS定位 1.CSS样式 1.html 在一个网页中负责的是一个页面的结构 2.css(层叠样式表)在一个页面中负责了一个页面 ...
- 读书笔记--C陷阱与缺陷(三)
第三章 1. 指针与数组 书中强调C中数组注意的两点: 1) C语言只有一维数组,但是数组元素可以是任何类型对象,是另外一个数组时就产生了二维数组.数组大小是常数(但GCC实现了变长数组..) ...
- $()与document.getElementById
$('#a')是返回一个jquery对象 $('#a')[0]是一个element对象 document.getElementById('a') return 一个element对象
- MySQL学习笔记:repeat、loop循环
一.repeat循环 # ---- repeat ---- DELIMITER $$ CREATE PROCEDURE test_repeat() BEGIN ; REPEAT ; UNTIL a E ...
- USACO 5.1 Starry Night
Starry NightIOI 98 High up in the night sky, the shining stars appear in clusters of various shapes. ...
- 自建YUM源以及相关维护
yum相关概念我这里就不做详细的讲解了,就是一个软件包管理工具.在企业中,很多时候进行编译了自己的RPM包,在搭建YUM的时候,希望将自定义的RPM加入到YUM源中,从而出现了下列方法. 一.配置私有 ...
- Ionic Js十五:对话框
$ionicPopup ionic 对话框服务允许程序创建.显示弹出窗口. $ionicPopup 提供了3个方法:alert(), prompt(),以及 confirm() . 实例 HTML 代 ...
- Java反射机制demo(六)—获得并操作一个类的属性
Java反射机制demo(六)—获得并操作一个类的属性 获得并操作一个类的属性?! 不可思议啊,一个类的属性一般都是私有成员变量啊,private修饰符啊! 但是毫无疑问,这些东西在Java的反射机制 ...