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;