新架構資料庫.db檢視方式(原創) 及Linux sqlite3基本命令(轉載)
檢視新架構.db檔案有有兩種形式:
1.可以使用客戶端檢視.db資料庫檔案,總共用過的有以下三個(個人軟體中有)
先telnet進裝置,下載ZKDB.db資料庫檔案,再使用下面這三個資料庫檢視sqliteadmin
SQLiteSpy
SQLite Expert Professional 3
它們的不同點:
1.SQLiteSpy :比較簡潔,方便檢視,不能編輯
2.SQLite Expert Professional 3 :能夠進行的操作較多,可以進行編輯。
3.sqliteadmin沒用過,不評價
二、直接telnet進裝置,在後臺檢視db檔案
>telnet 裝置IP地址login:root
Password:solokey
#cd /mnt/mtdblock/data
#ls
#./sqlite3_mips ZKDB.db
#select * from OP_LOGS; 可選擇要檢視的表,這裡直接選OP_LOGS(裝置操作日誌)做演示
PS:通過下面可以看到第二位是4,這個是OpType操作對應的引數,可通過引數對應說明看出4是什麼操作。
97|4|0|2017-12-01T17:21:30|0|0|0|0|2017-12-01T17:21:30||1
#.exit; (退出sqlite資料庫,記住exit前面有點)
以下轉載於:http://blog.csdn.net/cnbloger/article/details/11596569
系統平臺:ubuntu10.04
簡介sqlite3一款主要用於嵌入式的輕量級資料庫,本文旨在為熟悉sqlite3基本命令提供技術文件。
備註:本文所有操作均在root使用者下進行。
1、安裝sqlite3
ubuntu下安裝sqlite3直接在終端執行命令:
#apt-get install sqlite3
檢視版本資訊:
#sqlite3 -version
2 、sqlite3常用命令
當前目錄下建立或開啟test.db資料庫檔案,並進入sqlite命令終端,以sqlite>字首標識:
#sqlite3 test.db
檢視資料庫檔案資訊命令(注意命令前帶字元'.'):
sqlite>.database
檢視所有表的建立語句:
sqlite>.schema
檢視指定表的建立語句:
sqlite>.schema table_name
以sql語句的形式列出表內容:
sqlite>.dump table_name
設定顯示資訊的分隔符:
sqlite>.separator symble
Example:設定顯示資訊以‘:’分隔
sqlite>.separator :
設定顯示模式:
sqlite>.mode mode_name
Example:預設為list,設定為column,其他模式可通過.help檢視mode相關內容
sqlite>.mode column
輸出幫助資訊:
sqlite>.help
設定每一列的顯示寬度:
sqlite>.width width_value
Example:設定寬度為2
sqlite>.width 2
列出當前顯示格式的配置:
sqlite>.show
退出sqlite終端命令:
sqlite>.quit
或
sqlite>.exit
3、sqlite3指令
sql的指令格式:所有sql指令都是以分號(;)結尾,兩個減號(--)則表示註釋。
如:
sqlite>create studen_table(Stu_no interger PRIMARY KEY, Name text NOT NULL, Id interger UNIQUE, Age interger CHECK(Age>6), School text DEFAULT 'xx小學);
該語句建立一個記錄學生資訊的資料表。
3.1 sqlite3儲存資料的型別
NULL:標識一個NULL值
INTERGER:整數型別
REAL:浮點數
TEXT:字串
BLOB:二進位制數
3.2 sqlite3儲存資料的約束條件
Sqlite常用約束條件如下:
PRIMARY KEY - 主鍵:
1)主鍵的值必須唯一,用於標識每一條記錄,如學生的學號
2)主鍵同時也是一個索引,通過主鍵查詢記錄速度較快
3)主鍵如果是整數型別,該列的值可以自動增長
NOT NULL - 非空:
約束列記錄不能為空,否則報錯
UNIQUE - 唯一:
除主鍵外,約束其他列的資料的值唯一
CHECK - 條件檢查:
約束該列的值必須符合條件才可存入
DEFAULT - 預設值:
列資料中的值基本都是一樣的,這樣的欄位列可設為預設值
3.3 sqlite3常用指令
1)建立資料表
create table table_name(field1 type1, field2 type1, ...);
table_name是要建立資料表名稱,fieldx是資料表內欄位名稱,typex則是欄位型別。
例,建立一個簡單的學生資訊表,它包含學號與姓名等學生資訊:
create table student_info(stu_no interger primary key, name text);
2)新增資料記錄
insert into table_name(field1, field2, ...) values(val1, val2, ...);
valx為需要存入欄位的值。
例,往學生資訊表新增資料:
Insert into student_info(stu_no, name) values(0001, alex);
3)修改資料記錄
update table_name set field1=val1, field2=val2 where expression;
where是sql語句中用於條件判斷的命令,expression為判斷表示式
例,修改學生資訊表學號為0001的資料記錄:
update student_info set stu_no=0001, name=hence where stu_no=0001;
4)刪除資料記錄
delete from table_name [where expression];
不加判斷條件則清空表所有資料記錄。
例,刪除學生資訊表學號為0001的資料記錄:
delete from student_info where stu_no=0001;
5)查詢資料記錄
select指令基本格式:
select columns from table_name [where expression];
a查詢輸出所有資料記錄
select * from table_name;
b限制輸出資料記錄數量
select * from table_name limit val;
c升序輸出資料記錄
select * from table_name order by field asc;
d降序輸出資料記錄
select * from table_name order by field desc;
e條件查詢
select * from table_name where expression;
select * from table_name where field in ('val1', 'val2', 'val3');
select * from table_name where field between val1 and val2;
f查詢記錄數目
select count (*) from table_name;
g區分列資料
select distinct field from table_name;
有一些欄位的值可能會重複出現,distinct去掉重複項,將列中各欄位值單個列出。
6)建立索引
當說資料表存在大量記錄,索引有助於加快查詢資料錶速度。
create index index_name on table_name(field);
例,針對學生表stu_no欄位,建立一個索引:
create index student_index on student_table(stu_no);
建立完成後,sqlite3在對該欄位查詢時,會自動使用該索引。
7)刪除資料表或索引
drop table table_name;
drop index index_name;
Android簡單的 將sqlite中兩個表進行關聯
(2012-07-24 15:16:10)轉載▼標籤:
欄位指令年份索引 |
SQLiteDatabase db1 =tracks.getWritableDatabase();
ContentValues tracksvalues = newContentValues();
tracksvalues.put(COL1,'1');
tracksvalues.put(COL2,'2');
Long insertid=db1.insertOrThrow(TABLE_NAME1,null, tracksvalues);
if (insertid!=-1){
SQLiteDatabase db2 =waypoints.getWritableDatabase();
ContentValues waypointvalues = newContentValues();
waypointvalues.put(LONGITUDE,loc.getLongitude());
waypointvalues.put(LATITUDE,loc.getLatitude());
waypointvalues.put(TIME,System.currentTimeMillis());
waypointvalues.put(TRACK_ID_FK,insertid);
db2.insertOrThrow(TABLE_NAME2, null,waypointvalues);
}
將TABLE_NAME1中插入tracksvalues,並返回一個vid Long insertid
然後將這個id放入另一個表中儲存
下面是sqlite3的一些用法:
假設我們要建一個名叫film的資料表,只要鍵入以下指令就可以了:
create table film(title,length, year, starring);
這樣我們就建立了一個名叫film的資料表,裡面有name、length、year、starring四個欄位。
這個createtable指令的語法為:
create tabletable_name(field1, field2, field3, ...);
table_name是資料表的名稱,fieldx則是欄位的名字。sqlite3與許多SQL資料庫軟體不同的是,它不在乎欄位屬於哪一種資料型態:sqlite3的欄位可以儲存任何東西:文字、數字、大量文字(blub),它會在適時自動轉換。
建立索引
如果資料表有相當多的資料,我們便會建立索引來加快速度。好比說:
create index film_title_index onfilm(title);
意思是針對film資料表的name欄位,建立一個名叫film_name_index的索引。這個指令的語法為
create index index_name ontable_name(field_to_be_indexed);
一旦建立了索引,sqlite3會在針對該欄位作查詢時,自動使用該索引。這一切的操作都是在幕後自動發生的,無須使用者特別指令。
加入一筆資料
接下來我們要加入資料了,加入的方法為使用insertinto指令,語法為:
insert into table_name values(data1, data2, data3,...);
例如我們可以加入
insert into film values ('Silence of the Lambs, The', 118, 1991,'Jodie Foster');insert into film values ('Contact', 153, 1997,'Jodie Foster');insert into
film values ('Crouching Tiger, HiddenDragon', 120, 2000, 'Yun-Fat Chow');insert into film values('Hours, The', 114, 2002, 'NicoleKidman');
如果該欄位沒有資料,我們可以填NULL。
查詢資料
講到這裡,我們終於要開始介紹SQL最強大的select指令了。我們首先簡單介紹select的基本句型:
select columns fromtable_name where expression;
最常見的用法,當然是倒出所有資料庫的內容:
select * fromfilm;
如果資料太多了,我們或許會想限制筆數:
select * from film limit10;
或是照著電影年份來排列:
select * from film order byyear limit 10;
或是年份比較近的電影先列出來:
select * from film order byyear desc limit 10;
或是我們只想看電影名稱跟年份:
select title, year from filmorder by year desc limit 10;
查所有茱蒂佛斯特演過的電影:
select * from film wherestarring='Jodie Foster';
查所有演員名字開頭叫茱蒂的電影('%' 符號便是 SQL的萬用字元):
select * from film wherestarring like 'Jodie%';
查所有演員名字以茱蒂開頭、年份晚於1985年、年份晚的優先列出、最多十筆,只列出電影名稱和年份:
select title, year from filmwhere starring like 'Jodie%' and year >= 1985 orderby year desc limit 10;
有時候我們只想知道資料庫一共有多少筆資料:
select count(*) fromfilm;
有時候我們只想知道1985年以後的電影有幾部:
select count(*) from filmwhere year >= 1985;
(進一步的各種組合,要去看SQL專書,不過你大概已經知道SQL為什麼這麼流行了:這種語言允許你將各種查詢條件組合在一起──而我們還沒提到「跨資料庫的聯合查詢」呢!)
如何更改或刪除資料
瞭解select的用法非常重要,因為要在sqlite更改或刪除一筆資料,也是靠同樣的語法。
例如有一筆資料的名字打錯了:
update film set starring='Jodie Foster' where starring='JodeeFoster';
就會把主角欄位裡,被打成'Jodee Foster'的那筆(或多筆)資料,改回成JodieFoster。
delete from film where year <1970;
就會刪除所有年代早於1970年(不含)的電影了。
sqlite可以在shell底下直接執行命令:
sqlite3 film.db "select * fromfilm;"
輸出 HTML 表格:
sqlite3 -html film.db "select * fromfilm;"
將資料庫「倒出來」:
sqlite3 film.db ".dump" >output.sql
利用輸出的資料,建立一個一模一樣的資料庫(加上以上指令,就是標準的SQL資料庫備份了):
sqlite3 film.db <output.sql
在大量插入資料時,你可能會需要先打這個指令:
begin;
插入完資料後要記得打這個指令,資料才會寫進資料庫中:
commit;