自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Android SQLite3命令詳解教程

移動(dòng)開(kāi)發(fā) Android
SQLite是輕型的關(guān)系型數(shù)據(jù)庫(kù),SQLite3作為SQLite的第三個(gè)版本,支持iOS和Android應(yīng)用開(kāi)發(fā)。本文為Android SQLite3命令詳解教程,希望大家喜歡。

SQLite3可以讓我們手動(dòng)的對(duì)SQLite數(shù)據(jù)庫(kù)進(jìn)行管理。一共有2個(gè)sqlite3,一個(gè)在電腦上,它位于 android-sdk-windows\tools\sqlite3.exe,用于電腦上SQLite數(shù)據(jù)庫(kù)進(jìn)行管理;還有一個(gè)位于Android系統(tǒng)上(手機(jī)上),它用于位于Android系統(tǒng)上的SQLite數(shù)據(jù)庫(kù)進(jìn)行管理,對(duì)于后者你需要通過(guò)adb shell進(jìn)入shell。有時(shí)我們不想直接在Android系統(tǒng)上對(duì)SQLite數(shù)據(jù)庫(kù)進(jìn)行操作,這時(shí)可以把它拷貝到電腦上進(jìn)行操作。

但是需要注意前者是Windows系統(tǒng),后者是Linux系統(tǒng),他們表示路徑的方式不一樣。

在SQLite3命令后可跟一個(gè)參數(shù)指定要打開(kāi)或創(chuàng)建的數(shù)據(jù)庫(kù)文件。如果指定的數(shù)據(jù)庫(kù)文件還不存在,就會(huì)新建一個(gè)數(shù)據(jù)庫(kù),且以該參數(shù)作為文件名。對(duì)于Android系統(tǒng)上的SQLite3,必須通過(guò)其shell來(lái)運(yùn)行,如果新建數(shù)據(jù)庫(kù)的話,需要root權(quán)限,可以在shell中鍵入"su"來(lái)獲得root權(quán)限。

如果是Android系統(tǒng)的sqlite3程序(通過(guò)shell運(yùn)行),你可以Ctrl鍵+D ,然后回車退出該程序回到shell,也可以Ctrl鍵+C直接退出Shell,如果是電腦上的SQLite3,可以Ctrl鍵+C直接退出SQLite3程序。

下面就是一個(gè)創(chuàng)建包含一個(gè)名叫"tbl1"的表的名叫"ex1"的SQLite數(shù)據(jù)庫(kù)的示例。

示例1:

java代碼:

  1. $ sqlite3 ex1 
  2. SQLite version 3.3.10 
  3. Enter ".help" for instructions 
  4. sqlite> create table tbl1(one varchar(10), two smallint); 
  5. sqlite> insert into tbl1 values('hello!',10); 
  6. sqlite> insert into tbl1 values('goodbye', 20); 
  7. sqlite> select * from tbl1; 
  8. hello!|10 
  9. goodbye|20 
  10. sqlite> 

SQLite3支持兩種命令,一種是SQL命令,一種是非SQL命令,非SQL命令以"."作為前綴,比如".tables"命令。

可以通過(guò)".help"命令來(lái)查看它所有的非SQL命令.所有不以"."為前綴的語(yǔ)句,都將做SQL進(jìn)行解釋,當(dāng)時(shí)對(duì)于SQL語(yǔ)句你需要在末尾加上分號(hào)";"以表示SQL語(yǔ)句輸入完成,這時(shí)你輸入的命令才開(kāi)始按照SQL語(yǔ)言進(jìn)行執(zhí)行。

示例2:

java代碼:

  1. sqlite> CREATE TABLE tbl2 ( 
  2. ...> f1 varchar(30) primary key
  3. ...> f2 text, 
  4. ...> f3 real 
  5. ...> ); 
  6. sqlite> 

 

關(guān)于數(shù)據(jù)庫(kù)的schema是存放在一個(gè)叫sqlite_master的表中,你雖然不能對(duì)它進(jìn)行DROP TABLE, UPDATE, INSERT or DELETE操作,但是可以像普通的表一樣對(duì)它進(jìn)行查詢。

示例3:

java代碼:

  1. sqlite3 /data/data/com.android.providers.settings/databases/settings.db 
  2. SQLite version 3.6.22 
  3. Enter ".help" for instructions 
  4. Enter SQL statements terminated with a ";" 
  5. sqlite> .tables 
  6. .tables 
  7. android_metadata bookmarks system 
  8. bluetooth_devices secure 
  9. sqlite> select * from sqlite_master; 
  10. select * from sqlite_master; 
  11. table|android_metadata|android_metadata|3|CREATE TABLE android_metadata (locale TEXT) 
  12. table|system|system|4|CREATE TABLE system (_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT UNIQUE ON CONFLICT REPLACE,value TEXT) 
  13. index|sqlite_autoindex_system_1|system|5| 
  14. table|sqlite_sequence|sqlite_sequence|6|CREATE TABLE sqlite_sequence(name,seq) 
  15. index|systemIndex1|system|7|CREATE INDEX systemIndex1 ON system (name
  16. table|secure|secure|8|CREATE TABLE secure (_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT UNIQUE ON CONFLICT REPLACE,value TEXT) 
  17. index|sqlite_autoindex_secure_1|secure|9| 
  18. index|secureIndex1|secure|10|CREATE INDEX secureIndex1 ON secure (name
  19. table|bluetooth_devices|bluetooth_devices|11|CREATE TABLE bluetooth_devices (_id INTEGER PRIMARY KEY,name TEXT,addr TEXT,channel INTEGER,type INTEGER
  20. table|bookmarks|bookmarks|12|CREATE TABLE bookmarks (_id INTEGER PRIMARY KEY,tit 
  21. le TEXT,folder TEXT,intent TEXT,shortcut INTEGER,ordering INTEGER
  22. index|bookmarksIndex1|bookmarks|13|CREATE INDEX bookmarksIndex1 ON bookmarks (folder) 
  23. index|bookmarksIndex2|bookmarks|14|CREATE INDEX bookmarksIndex2 ON bookmarks (shortcut) 
  24. sqlite> 

#p#

在sqlite3中我們可以通過(guò)".help"命令來(lái)查所有的非SQL命令。

sqlite3 8種不同的方式顯示查詢返回的結(jié)果:"csv", "column", "html", "insert", "line", "list","tabs", "tcl".

你可以通過(guò).mode來(lái)設(shè)置顯示的方式。默認(rèn)的是"list"方式,這時(shí)返回結(jié)果的一條記錄顯示一行,每列的內(nèi)容之間用設(shè)定的分隔符隔開(kāi),

默認(rèn)的分隔符是"|".

示例5:

java代碼:

  1. sqlite> .mode list 
  2. sqlite> select * from tbl1; 
  3. hello|10 
  4. goodbye|20 
  5. sqlite> 

你可以通過(guò)".separator"來(lái)設(shè)置"list"模式下的分隔符。比如我們想把", "作為分隔符,可以這樣:

示例6:

java代碼:

  1. sqlite> .separator ", " 
  2. sqlite> select * from tbl1; 
  3. hello, 10 
  4. goodbye, 20 
  5. sqlite> 

"line"模式下, 每行只顯示數(shù)據(jù)庫(kù)的一行的一列。每行由列名,等號(hào)和列的值組成。每條記錄之間由一個(gè)空行隔開(kāi)。

示例7

java代碼:

  1. sqlite> .mode line 
  2. sqlite> select * from tbl1; 
  3. one = hello 
  4. two = 10 
  5. one = goodbye 
  6. two = 20 
  7. sqlite> 

"column"模式下,每條記錄都在單獨(dú)一行顯示。***行顯示的是列名,第二行只是用于分割列名和記錄的數(shù)據(jù),第三行開(kāi)始才是記錄的內(nèi)容。

示例8:

java代碼:

  1. sqlite> .mode columnsqlite> select * from tbl1; 
  2. one two 
  3. ---------- ---------- 
  4. hello 10 
  5. goodbye 20 
  6. sqlite> 

默認(rèn)情況下,每列的寬度最多只能顯示10個(gè)字符。所以如果數(shù)據(jù)包含的字符如果他太多,可能就顯示不完。

但是我們可以通過(guò)".width"設(shè)置每列的寬度。

示例9:

java代碼:

  1. sqlite> .width 12 6 
  2. sqlite> select * from tbl1; 
  3. one two 
  4. ------------ ------ 
  5. hello 10 
  6. goodbye 20 
  7. sqlite> 

示例9就把第1列和第二列的寬度分別設(shè)置為了12和6個(gè)字符,其他列的寬度并沒(méi)改變。

如果你把列寬設(shè)置為0,那么調(diào)整為以下三個(gè)的***值:10,該列的列名字符數(shù),***行記錄該列的字符數(shù)。這樣列的寬度就可以自動(dòng)調(diào)整。

默認(rèn)的列寬就是0,以便它可以自動(dòng)調(diào)整。

可以通過(guò)".header"命令可以設(shè)置是否顯示頭(頭包括***行,列名,第二行,分隔行)。

示例10:

java代碼:

  1. sqlite> .header off 
  2. sqlite> select * from tbl1; 
  3. hello 10 
  4. goodbye 20 
  5. sqlite> 

"insert"模式下,返回的查詢結(jié)果將以SQL的INSERT語(yǔ)句形式進(jìn)行顯示。

示例11:

java代碼:

  1. sqlite> .mode insert new_table 
  2. sqlite> select * from tbl1; 
  3. INSERT INTO 'new_table' VALUES('hello',10); 
  4. INSERT INTO 'new_table' VALUES('goodbye',20); 
  5. sqlite> 

"html"模式下,查詢返回結(jié)果將以XHTML table的形式進(jìn)行顯示,它并不以<TABLE>作為開(kāi)頭和</TABLE>作為結(jié)尾。 但是每條記錄以<TR>作為開(kāi)始,</TR>作為結(jié)束,記錄的數(shù)據(jù)以<TD>作為開(kāi)始,以</TD>作為結(jié)束

示例12:

java代碼:

  1. sqlite> select * from system; 
  2. select * from system; 
  3. <TR><TD>1</TD> 
  4. <TD>volume_music</TD> 
  5. <TD>7</TD> 
  6. </TR> 
  7. <TR><TD>4</TD> 
  8. <TD>volume_voice</TD> 
  9. <TD>4</TD> 
  10. </TR> 
  11. sqlite> 

".output"命令可以把查詢返回結(jié)果的輸出定向到文件上。該命令的***個(gè)參數(shù)即是要定向的位置。在把輸出定向了文件后,可以通過(guò)".output stdout"把輸出重新定向到標(biāo)準(zhǔn)輸出上。

示例13:

java代碼:

  1. sqlite> .mode list 
  2. sqlite> .separator | 
  3. sqlite> .output test_file_1.txt 
  4. sqlite> select * from tbl1; 
  5. sqlite> .exit 
  6. $ cat test_file_1.txt 
  7. hello|10 
  8. goodbye|20 

#p#

sqlite3提供了多個(gè)命令來(lái)查看數(shù)據(jù)庫(kù)的schema".tables"命令可以查看當(dāng)前數(shù)據(jù)庫(kù)所有的表

示例14:

java代碼:

  1. sqlite> .tables 
  2. tbl1 
  3. tbl2 
  4. sqlite> 

".tables"和在list模式下執(zhí)行下面的語(yǔ)句相似:

 SELECT name FROM sqlite_master WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%' UNION ALL SELECT name FROM sqlite_temp_master WHERE type IN ('table','view') ORDER BY 1

 

實(shí)際上, 如果你查看sqlite3程序的源碼 (found in the source tree in the file src/shell.c), you'll find exactly the above query.

另外,".tables"命令后也可以跟一參數(shù),它是一個(gè)pattern,這樣命令就只列出表名和該參數(shù)匹配的表。

示例14-1:

java代碼:

  1. sqlite> .tables 
  2. .tables 
  3. android_metadata bookmarks system 
  4. bluetooth_devices secure 
  5. sqlite> .tables s% 
  6. .tables s% 
  7. secure sqlite_sequence system 
  8. sqlite> 

".indices"命令列出指定表的所有indices(索引)。***個(gè)參數(shù)為表的名字。

示例15:

java代碼:

  1. sqlite> .schema system 
  2. .schema system 
  3. CREATE TABLE system (_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT UNIQUE ON C 
  4. ONFLICT REPLACE,value TEXT); 
  5. CREATE INDEX systemIndex1 ON system (name); 
  6. sqlite> .tables 
  7. .tables 
  8. android_metadata bookmarks system 
  9. bluetooth_devices secure 
  10. sqlite> .indices system 
  11. .indices system 
  12. sqlite_autoindex_system_1 
  13. systemIndex1 
  14. sqlite> 

".schema"命令,在沒(méi)有參數(shù)的情況,它會(huì)顯示最初用于創(chuàng)建數(shù)據(jù)庫(kù)的CREATE TABLE和CREATE INDEX的SQL語(yǔ)句。比如,示例16

".schema"命令可以包含一個(gè)參數(shù),它是一個(gè)pattern,用于對(duì)表進(jìn)行過(guò)濾,這時(shí)只會(huì)顯示滿足條件的表和所有索引的SQL語(yǔ)句。

比如,示例15和示例17.

示例16:

java代碼:

  1. sqlite> .schema 
  2. .schema 
  3. CREATE TABLE android_metadata (locale TEXT); 
  4. CREATE TABLE bluetooth_devices (_id INTEGER PRIMARY KEY,name TEXT,addr TEXT,chan 
  5. nel INTEGER,type INTEGER); 
  6. CREATE TABLE bookmarks (_id INTEGER PRIMARY KEY,title TEXT,folder TEXT,intent TE 
  7. XT,shortcut INTEGER,ordering INTEGER); 
  8. CREATE TABLE secure (_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT UNIQUE ON C 
  9. ONFLICT REPLACE,value TEXT); 
  10. CREATE TABLE system (_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT UNIQUE ON C 
  11. ONFLICT REPLACE,value TEXT); 
  12. CREATE INDEX bookmarksIndex1 ON bookmarks (folder); 
  13. CREATE INDEX bookmarksIndex2 ON bookmarks (shortcut); 
  14. CREATE INDEX secureIndex1 ON secure (name); 
  15. CREATE INDEX systemIndex1 ON system (name); 
  16. sqlite> 

示例17:

java代碼:

  1. sqlite> .schema s% 
  2. .schema s% 
  3. CREATE TABLE secure (_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT UNIQUE ON C 
  4. ONFLICT REPLACE,value TEXT); 
  5. CREATE TABLE sqlite_sequence(name,seq); 
  6. CREATE TABLE system (_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT UNIQUE ON C 
  7. ONFLICT REPLACE,value TEXT); 
  8. CREATE INDEX secureIndex1 ON secure (name); 
  9. CREATE INDEX systemIndex1 ON system (name); 
  10. sqlite> 

 

責(zé)任編輯:佚名 來(lái)源: eoeandroid
相關(guān)推薦

2021-02-15 15:40:28

SQLite3數(shù)據(jù)庫(kù)

2012-03-06 09:50:24

Android SQLAndroidSQLite3

2012-03-06 12:59:11

iOS SQLite3iOSSQLite3

2011-07-04 17:26:00

Qt SQLite

2013-04-10 14:21:35

2012-03-06 10:17:45

iOS SQLite3iOSSQLite3

2017-10-26 12:37:24

Pythonsqlite3數(shù)據(jù)庫(kù)

2013-05-03 13:42:20

iOS開(kāi)發(fā)SQLite3存儲(chǔ)讀取

2011-08-01 13:32:07

Objective-C Sqlite3 框架

2019-08-12 11:40:48

數(shù)據(jù)庫(kù)SQLite3數(shù)據(jù)類型

2011-07-07 16:42:38

iPhone Sqlite3 數(shù)據(jù)庫(kù)

2011-09-07 15:39:08

iPhoneObjective-CSQLite3

2020-09-24 16:05:44

C語(yǔ)言sqlite3函數(shù)

2012-03-06 09:13:04

Android SQLSQLiteAndroid

2013-04-09 16:47:19

iOS嵌入式數(shù)據(jù)庫(kù)SQLit

2013-01-06 12:23:59

Android開(kāi)發(fā)SQLite數(shù)據(jù)庫(kù)

2020-09-17 09:40:20

數(shù)據(jù)庫(kù)Sqlite3命令

2011-08-15 17:20:25

iPhone應(yīng)用Sqlite3FMDB

2024-02-19 00:00:00

SQLite3數(shù)據(jù)庫(kù)代碼

2012-03-01 20:42:12

iPhone
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)