Android学习之旅--sqlite3 数据库命令操作
SQLite简介
Android系统集成了一个轻量级的数据库SQLite,SQLite只是一个嵌入式的数据库引擎,专门适用于支援有限的设备上(如手机、pda等)适量数据存储。
SQLite并不同于Oracle、MySQL那样专业数据库,SQLite数据库只是一个文件,从本质上来看,SQLite的操作方式只是一种更为便捷的文件操作。
当应用程序创建或打开一个SQLite数据库是,其实只是打开一个文件进行读写。
SQLite嵌入到使用它的应用程序中,与应用程序共用相同的进程,而不是单独的一个进程。
SQLite特点概括:
(1) SQLite是一个轻量级数据库
(2) 本质上SQLite是一种更为便捷的文件操作
(3) 移植性好、占用内存低、高效且可靠
(4) 适合于嵌入式设备
(5) SQLite是一种动态数据类型
(6) 储存在单一磁盘文件中的一个完整的数据库
SQLite数据类型
一般数据库中的数据采用的是固定的静态数据类型,而SQLite采用的是动态数据类型,根据存入值自动判断。SQLite具有5种数据类型。
数据类型 | 含义 |
NULL | 空值 |
INTEGER | 带符号的整形,具体取决有存入数字的范围大小 |
REAL | 浮点数字,存储为8-byte IEEE浮点数 |
TEXT | 字符串文本 |
BLOB | 二进制对象 |
SQLite常用命令
命令名 | 含义 |
.backup ?DB? FILE | 备份数据库、数据库文件 |
.database | 显示当前打开的数据库信息 |
.dump table | 数据库表转存储sql文件格式 |
.help | 显示所有命令 |
.mode MODE ?TABLE? | 输出界面模式,共8种模式 csv,column,html,insert,line,list,tabs,tcl |
.output FILENAGE | 输出文件 |
.restore ?DB? FILE | 还原数据库文件 |
.tables | 显示数据库中所有的表 |
.schema | 查看表的结构 |
.show | 显示各种设置的当前值 |
注:这些命令都是以“.“开头的。结尾不需要“;”
Sqlite常用的sql语句
创建新表
sqlite>createtable <table_name> (n1 type1,n2 type2);
例如:
create table country(id integer primary key, c_namevarchar(50));
删除表
sqlite>drop table <table_name>;
例如:
drop table person;
表中添加新记录
sqlite>insertinto <table_name> values(value1,value2,value3,……);
例如:
insertinto person(name,age,sex,c_type) values('刘备',38,'男',1);
insert intoperson(name,age,sex,c_type) values('关羽',42,'男',1);]
在表中添加字段
sqlite>alert table<table> addcolumn<filed>;
例如:
alter table country add column scope integer;
按指定条件删除表中记录
sqlite>delete from <table_name> where<express>;
例如:删除表person中id为4的项
Delete form person where id=4;
更新表中记录
sqlite>update <table_name> set<n1=value1>,<n2=value2>…… where <expression>;
例如:将表中的年龄18改为19
sqlite>updateperson set name='诸葛孔明' where id=10;
按指定条件查询表中记录
sqlite>select * from <table_name> where <expression>;
例如:
在表中搜索名字是A的项所有信息
select * from person where name='A';
在表中搜索年龄>=10并且<=15的项的所有信息
select * from person where age>=20 and age<=30;
在表中搜索名字是C的项,显示其name和age
select name,age fromperson where name='刘备';
显示表中的前2项所有信息
select * from person limit 2;
显示以年龄排序表中的信息
select * from person order by age;
注:每条语句必须以“;”结尾。
针对常用的sqlite命令下面我们具体做些实例分析。
配置环境变量
使用Android自带的SQLite3数据库
(1)配置环境变量
新增变量Android将其变量名指向SQLite3物理位置
在将其Android添加至Path变量中如.;%Android%
输入cmd 打开命令窗窗口输入:sqlite3
如出现以下信息
表示Android工具环境配置成功!
Sqlite3命令语句是以“;”结束的,可以输入.help查看相关文档。
创建数据库
输入cd \ ,进入C盘根目录 输入:sqlite3 mySqliteDB.db,
注:如果在C盘根目录存在则为读取数据库,不存则会新创建数据库。
进入sqlite控制命令窗口后并新建一张表”person”,”country”
create table person ( --设置主键,并自增(sqlite主键如果为integer,会自动默认自增) id integer primary key autoincrement, name varchar(50), age integer, sex varchar(50), c_type integer ); create table country(id integer primary key, c_name varchar(50)); |
查看数据库中有几张表
通过输入sqlite3命令参数“.table”可查看数据库中有几张表
sqlite>.table
如果创建成功,在C盘根目下就可以看得sqlite3数据库文件
SQLite插入数据
在person表中插入几条数据信息
insert into person(name,age,sex,c_type) values('刘备',38,'男',1); insert into person(name,age,sex,c_type) values('关羽',42,'男',1); insert into person(name,age,sex,c_type) values('张飞',40,'男',1); insert into person(name,age,sex,c_type) values('诸葛亮',25,'男',1); insert into person(name,age,sex,c_type) values('曹操',36,'男',2); insert into person(name,age,sex,c_type) values('夏侯惇',36,'男',2); insert into person(name,age,sex,c_type) values('孙权',25,'男',3); insert into person(name,age,sex,c_type) values('周瑜',28,'男',3); insert into person(name,age,sex,c_type) values('大乔',20,'女',3); insert into person(name,age,sex,c_type) values('小乔',18,'女',3); insert into country(id,c_name) values(1,'蜀国'); insert into country(id,c_name) values(2,'魏国'); insert into country(id,c_name) values(3,'吴国'); |
查看表信息
sqlite>select* from person;
修改显示输出模式
可以通过sqlite命令参数“.mode”修改输出格式。
sqlite>.modetabs
sqlite>select* from person;
这样看起来清晰了许多。
可以将查询出的结果写到文件。
sqlite>.modecsv
sqlite>.outputpersonInfo.csv
输出结果
读取可执行sql语句文件
在C盘根目录
新建文件order_person.sql,里面输入:select * from person order by id desc;
Sqlite命令窗口
sqlite>.modetabs
sqlite>.read order_person.sql (读取执行sql文件语句)
打开或关闭标题的显示
在sqlite命令窗口中,查询出的结果标题默认是不显示的,我们可以通过执行.header on/off从而进行对标题显示或关闭。
sqlite>.headeron
sqlite>select* from person;
SQLite3导入导出数据库
导出数据库
sqlite>.database(显示数据库信息)
sqlite>.backupmain persondb.sql(备份数据库main (注:备份默认数据库.backup .defaultdb.sql))
导出表
sqlite>.outputperson_table.sql
sqlite>.dumpperson
还原数据库
sqlite>.restore mydb.db_bak
更新数据
sqlite>updateperson set name='诸葛孔明'where id=4;
删除数据
删除某调数据
sqlite>delete from person where id=6;
删除表
sqlite>drop table person;
表中添加字段
sqlite>.schemacountry
sqlite>altertable country add column scope integer;