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 |
显示所有命令 |
.modeMODE ?TABLE? |
输出界面模式,共8种模式 csv,column,html,insert,line,list,tabs,tcl |
.output FILENAGE |
输出文件 |
.restore?DB? FILE |
还原数据库文件 |
.tables |
显示数据库中所有的表 |
.schema |
查看表的结构 |
.show |
显示各种设置的当前值 |
注:这些命令都是以“.“开头的。结尾不需要“;”
Sqlite常用的sql语句
创建新表
sqlite>create table <table_name> (n1 type1,n2 type2);
例如:
create table country(id integer primary key, c_name varchar(50));
删除表
sqlite> drop table <table_name>;
例如:
drop table person;
表中添加新记录
sqlite>insert into <table_name> values(value1,value2,value3,……);
例如:
insert into person(name,age,sex,c_type) values('刘备',38,'男',1);
insert into person(name,age,sex,c_type) values('关羽',42,'男',1);]
在表中添加字段
sqlite>alert table<table> add column<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>update person set name='诸葛孔明' where id=10;
按指定条件查询表中记录
sqlite>select*from<table_name>where<expression>;
例如:
在表中搜索名字是A的项所有信息
select*frompersonwherename='A';
在表中搜索年龄>=10并且<=15的项的所有信息
select*frompersonwhere age>=20andage<=30;
在表中搜索名字是C的项,显示其name和age
select name,age from personwhere name='刘备';
显示表中的前2项所有信息
select*frompersonlimit2;
显示以年龄排序表中的信息
select * from personorder 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>.mode tabs
sqlite>select * from person;
这样看起来清晰了许多。
可以将查询出的结果写到文件。
sqlite>.mode csv
sqlite>.output personInfo.csv
输出结果
读取可执行sql语句文件
在C盘根目录
新建文件order_person.sql,里面输入:select * from person order by id desc;
Sqlite命令窗口
sqlite>.mode tabs
sqlite>.read order_person.sql(读取执行sql文件语句)
打开或关闭标题的显示
在sqlite命令窗口中,查询出的结果标题默认是不显示的,我们可以通过执行.headeron/off从而进行对标题显示或关闭。
sqlite>.header on
sqlite>select * from person;
SQLite3导入导出数据库
导出数据库
sqlite>.database(显示数据库信息)
sqlite>.backup main persondb.sql(备份数据库main (注:备份默认数据库.backup .defaultdb.sql))
导出表
sqlite>.output person_table.sql
sqlite>.dump person
还原数据库
sqlite >.restore mydb.db_bak
更新数据
sqlite>update person set name='诸葛孔明' where id=4;
删除数据
删除某调数据
sqlite> delete from person where id=6;
删除表
sqlite>drop table person;
表中添加字段
sqlite>.schema country
sqlite>alter table country add column scope integer;