1. 程式人生 > >新架構資料庫.db檢視方式(原創) 及Linux sqlite3基本命令(轉載)

新架構資料庫.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

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

3sqlite3指令
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;
wheresql語句中用於條件判斷的命令,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的特別用法 

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;