Android SQLite3命令詳解
SQLite庫包含一個名字叫做sqlite3的命令列,它可以讓使用者手工輸入並執行面向SQLite資料庫的SQL命令。本文件提供一個樣使用sqlite3的簡要說明。
開始
啟動sqlite3程式,僅僅需要敲入帶有SQLite資料庫名字的"sqlite3"命令即可。如果檔案不存在,則建立一個新的(資料庫)檔案。然後 sqlite3程式將提示你輸入SQL。敲入SQL語句(以分號“;”結束),敲回車鍵之後,SQL語句就會執行。
例如,建立一個包含一個表"tb11"名字為"ex1"的SQLite資料庫,你可以這樣做:
$sqlite3 ex1
SQLite version 3.3.17
Enter ".help" for instructions
sqlite> create table tbl1(one varchar(10), two smallint);
sqlite> insert into tbl1 values('hello!', 10);
sqlite> insert into tbl1 values('goodbye', 20);
sqlite> select * from tbl1;
hello!|10
goodbye|20
sqlite>
你可以通過敲你所用系統的檔案結束符(通常是Ctrl + D)或者中斷字元(通常是Ctrl + C)。來終止sqlite3程式。確定你在每個SQL語句結束敲入分號!sqlite3程式通過查詢分號來決定一個SQL語句的結束。如果你省略分號,sqlite3將給你一個連續的命令提示符並等你給當前的SQL命令新增更多的文字。這個特點讓你輸入多行的多個SQL語句,例如:
sqlite> create table tbl2(
...> f1 varchar(30) primary key,
...> f2 text,
...> f3 real
...> );
sqlite>
題外話:查詢SQLITE_MASTER表
SQLite資料庫的框架被儲存在一個名叫"sqlite_master"的特殊的表中。你可以像查詢其它表一樣通過執行“SELECT”查詢這個特殊的表。例如:
$ sqlite3 ex1
SQlite vresion 3.3.10
Enter ".help" for instructions
sqlite> select * from sqlite_master;
type = table
name = tbl1
tbl_name = tbl1
rootpage = 3
sql = create table tbl1(one varchar(10), two smallint)
sqlite>
但你不能在sqlite_master表中執行諸如DROP TABLE, UPDATE, INSERT 或者DELETE命令。sqlite_master表在你建立、刪除和索引資料庫時自動更新這個表。你不能手工更改sqlite_master表。
TEMPORARY表的結構沒有儲存在"sqlite_master"表中,由於TEMPORARY表對應用是不可見的,而不是應用程式建立這個表。 TEMPORARY表結構被儲存在另外一個名叫"sqlite_temp_master"的特定的表中。"sqlite_temp_master"表是臨時表自身。
sqlite3的特殊命令
大多數候,sqlite3讀入輸入行,並把它們傳遞到SQLite庫中去執行。但是如果輸入行以一個點(“.”)開始,那麼這行將被sqlite3程式自己擷取並解釋。這些“點命令”通常被用來改變查詢輸出的格式,或者執行鞭個預封包(預定義prepackaged)的查詢語句。
你可以在任何時候輸入“.help”,列出可用的點命令。例如
sqlite> .help
.bail ON|OFF Stop after hitting an error. Default OFF
.databases List names and files of attached databases
.dump ?TABLE? ... Dump the database in an SQL text format
.echo ON|OFF Turn command echo on or off
.exit Exit this program
.explain ON|OFF Turn output mode suitable for EXPLAIN on or off.
.header(s) ON|OFF Turn display of headers on or off
.help Show this message
.import FILE TABLE Import data from FILE into TABLE
.indices TABLE Show names of all indices on TABLE
.load FILE ?ENTRY? Load an extension library
.mode MODE ?TABLE? Set output mode where MODE is one of:
csv Comma-separated values
column Left-aligned columns. (See .width)
html HTML <table> code
insert SQL insert statements for TABLE
line One value per line
list Values delimited by .separator string
tabs Tab-separated values
tcl TCL list elements
.nullvalue STRING Print STRING in place of NULL values
.output FILENAME Send output to FILENAME
.output stdout Send output to the screen
.prompt MAIN CONTINUE Replace the standard prompts
.quit Exit this program
.read FILENAME Execute SQL in FILENAME
.schema ?TABLE? Show the CREATE statements
.separator STRING Change separator used by output mode and .import
.show Show the current values for various settings
.tables ?PATTERN? List names of tables matching a LIKE pattern
.timeout MS Try opening locked tables for MS milliseconds
.width NUM NUM ... Set column widths for "column" mode
sqlite>
改變輸出格式
sqlite3程式可以以八種不同的格式顯示一個查詢的結果:"csv", "列", "html", "插入", "行", "製表"和"tcl"。你可以用".mode"點命令在這些輸出格式之間切換。
預設的輸出格式是“列表”。在列表模式下,每條查詢結果記錄被寫在一行中並且每列之間以一個字串分割符隔開。預設的分隔符是一個管道符號(“|”)。列表符號在當你輸出查詢結果到另外一個符加處理的程式(如AWK)中去是尤為有用。
sqlite> .mode list
sqlite> select * from tbl1;
hello|10
goodbye|20
sqlite>
你可以用“.separator”點命令來改變分界符。例如,為了把分割符改為一個逗號和一個空格,你可以這樣做:
sqlite> .separator ", "
sqlite> select * from tbl1;
hello, 10
goodbye, 20
sqlite>
在“line"模式下,每一個位於條記錄中的列在它自己那行顯示。每行由列名、一個等號和列資料組成。下一條記錄以一個空行隔開。這是一個行模式輸出的例子:
sqlite> .mode line
sqlite> select * from tbl1;
one = hello
two = 10
one = goodbye
two = 20
sqlite>
在列模式下,每條記錄在一個單獨的行中以資料列對齊的方式顯示。列如:
sqlite> .mode column
sqlite> select * from tbl1;
one two
---------- ----------
hello 10
goodbye 20
sqlite>
在預設的情況下,每列至少10個字元寬。太寬的資料將被擷取。你可以用“.width”命令來調整列寬。如下所示:
sqlite> .width 12 6
sqlite> select * from tbl1;
one two
------------ ------
hello 10
goodbye 20
sqlite>
上面例子中".width"命令設定第一列寬為12第二列寬為6。其它的列寬不變。你可以指定與你查詢結果需要的列數一樣多的“.width”引數。
如果你指定一列寬為0,那麼這個列寬將自動以下面三個數字中的最大值做為列寬:10、表頭寬度和最寬的資料列的寬度。這可以讓列自動調整寬度。每列的預設設定為自動調整的0值。
出現在輸出開頭兩行的列標示可以用".header"點命令關閉。在上面的例子中,列標示是開啟的。可以用下面的方法關閉列標示:
sqlite> .header off
sqlite> select * from tbl1;
hello 10
goodbye 20
sqlite>
另外一個有用的輸出模式是"insert"。在插入模式下,被子格式化為看起來像SQL INSERT語句的樣式。你可以用插入模式來產生檔案(便於)以後用於不同資料庫的輸入。
當指定插入模式時,你必須給定一個特定引數就是要插入的表名。例如:
sqlite> .mode insert new_table
sqlite> select * from tbl1;
INSERT INTO 'new_table' VALUES('hello',10);
INSERT INTO 'new_table' VALUES('goodbye',20);
sqlite>
最新的輸出格式是“html”。在這種模式下,sqlite3把查詢的結果寫做XHTML表。開始的<TABLE>和結束的</TABLE>(標記)沒有寫出,但有<TR>、<TH>和<TD>等分界符。html輸出對 CGI來說是相當有用地。
把結果寫到檔案中
預設情況下,sqlte3把結送到標準輸出。你可以用“.output”命令改變它。只須把輸出檔名做為.output命令的輸出引數然後所有後續查詢結果將被寫到那個檔案中。用“.output stdout”再一次改為標準輸出。例如:
sqlite> .mode list
sqlite> .separator |
sqlite> .output test_file_1.txt
sqlite> select * from tbl1;
sqlite> .exit
$ cat test_file_1.txt
hello|10
goodbye|20
$
查詢資料庫結構
sqlite3程式提供幾個有用的用於查詢資料庫結構的快捷命令。這些不是不可以用別的方式來實現。這些命令僅僅是一個快捷方式而已。
例如,為了檢視資料庫的表列表,你可以敲入“.tables”。
sqlite> .tables
tbl1
tbl2
sqlite>
“.tables”命令相似於設定列表模式然後執行接下來的查詢:
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事實上,你可以檢視sqlite3的原始碼(可以在原始檔樹的src/shell.c中),你可找到上面的具體的查詢。“.indices”命令作用類似的方式是列出特定表的所有的索引。“.indics”命令須一個引數即所要索引表的表名。最後,但不是至少,是“.schema”命令。不帶任何引數,“.schema”命令顯示原始的用於建立當前資料庫的CREATE TABLE和CREATE INDEX語句。如果你給".schema"命令一個表名,它顯示原始的建立該表和它所有索引的CREATE語句。我們可以:sqlite>
.schemacreate table tbl1(one varchar(10), two smallint)CREATE TABLE tbl2 ( f1 varchar(30) primary key, f2 text, f3 real)sqlite> .schema tbl2CREATE TABLE tbl2 ( f1 varchar(30) primary key, f2 text, f3 real)sqlite> ".schema"命令可以用設定列表然後執行以下查詢來實現:
SELECT sql FROM
(SELECT * FROM sqlite_master UNION ALL
SELECT * FROM sqlite_temp_master)
WHERE type!='meta'
ORDER BY tbl_name, type DESC, name
.databases 列出資料庫檔名
.tables ?PATTERN? 列出?PATTERN?匹配的表名
.import FILE TABLE 將檔案中的資料匯入的檔案中
.dump ?TABLE? 生成形成資料庫表的SQL指令碼
.output FILENAME 將輸出匯入到指定的檔案中
.output stdout 將輸出列印到螢幕
.mode MODE ?TABLE? 設定資料輸出模式(csv,html,tcl…
.nullvalue STRING 用指定的串代替輸出的NULL串
.read FILENAME 執行指定檔案中的SQL語句
.schema ?TABLE? 列印建立資料庫表的SQL語句
.separator STRING 用指定的字串代替欄位分隔符
.show 列印所有SQLite環境變數的設定
.quit 退出命令列介面
相關推薦
Android SQLite3命令詳解
SQLite庫包含一個名字叫做sqlite3的命令列,它可以讓使用者手工輸入並執行面向SQLite資料庫的SQL命令。本文件提供一個樣使用sqlite3的簡要說明。 開始 啟動sqlite3程式,僅僅需要敲入帶有SQLite資料庫名字的"sqlite
Android pm 命令詳解
一、pm命令介紹與包名資訊查詢 1.pm命令介紹 pm工具為包管理(package manager)的簡稱 可以使用pm工具來執行應用的安裝和查詢應用的資訊、系統許可權、控制應用 pm工具是Android開發與測試過程中必不可少的工具,shell命令格式如下: pm <
adb命令詳解(二)——手機缺失sqlite3時操作資料庫的多種解決方案
在android應用開發無處不在SQLite資料庫的身影。那麼在開發中怎麼使用adb命令操作資料庫的功能呢?下面我們將完整的介紹與資料庫操作相關的命令集及當手機缺少sqlite3的時候的多種解決方案。1.當手機缺失sqlite3時,如何操作資料庫先來看看手機缺失sqlite3
tar命令詳解
pan 詳解 time border 設備 lin bsp force names 解壓到指定目錄 tar -zxvf flash_player_npapi_linux.x86_64.tar.gz -C mmtar -zxvf flash_player_npapi_linu
Linux下安裝軟件命令詳解
代碼包 相關信息 make bin 一個 軟件包 輸入 -i bin文件 Linux下軟件安裝方法總結:一、rpm包安裝方式步驟:1、找到相應的軟件包,比如soft.version.rpm,下載到本機某個目錄;2、打開一個終端,su -成root用戶;3、cd soft.v
Docker常用命令詳解
nbsp 詳解 .cn 本地 test 並且 www 更多 top docker ps 查看當前正在運行的容器 docker ps -a 查看所有容器的狀態 docker start/stop id/name 啟動/停止某個容器 docker attach id 進
linux下cat命令詳解
forever ron localhost root sta testing 幫助 查看 一點 1、cat 顯示文件連接文件內容的工具; cat 是一個文本文件查看和連接工具。查看一個文件的內容,用cat比較簡單,就是cat 後面直接接文件名。 比如: de>[[
Linux:at命令詳解
計時 osi 執行 inux days pan 必須 man 一個 at命令 at命令為單一工作調度命令。at命令非常簡單,但是在指定時間上卻非常強大 語法 at [選項] time at > 執行的命令 ctrl+d 選項 -m :當指定的任務被
grep命令詳解
命令詳解 顯示 不包含 文件 開頭 文件中查找 時間 匹配 nbsp grep命令 1、grep "li qq" * 在的有文件中查找li qq文件。 2、grep -c "file" a 在a文件中有多少行匹配到file。 3、grep -n "
linux 之awk命令詳解
數學函數 mat loop 多次 finished 數組結構 save pre 新的 awk是一種程序語言,對文檔資料的處理具有很強的功能。awk名稱是由它三個最初設計者的姓氏的第一個字母而命名的: Alfred V. Aho、Peter J. We i n b e rg
【轉】linux之cp/scp命令+scp命令詳解
特殊 是否 用戶登錄 usr 指定 highlight 顯示 檔案 三種 linux之cp/scp命令+scp命令詳解 名稱:cp 使用權限:所有使用者 使用方式: cp [options] source dest cp [options] source
xargs命令詳解
文件名 過程 介紹 pri .sh 例如 接收 替換字符 welcom xargs命令是把接收到的數據重新格式化,再將其作為參數提供給其他命令,下面介紹xargs命令的各種使用技巧 一、將多行輸入轉換成單行輸入: [[email protected]/* */
Linux netstat命令詳解,高級面試必備
bytes tool head osi ngs 進行 pen 通信 詳細信息 簡介 Netstat 命令用於顯示各種網絡相關信息,如網絡連接,路由表,接口狀態 (Interface Statistics),masquerade 連接,多播成員 (Multicast Mem
Linux下的tar壓縮解壓縮命令詳解
命令 .tar.gz 需要 logo 意思 追加 lin 產生 ron tar -c: 建立壓縮檔案-x:解壓-t:查看內容-r:向壓縮歸檔文件末尾追加文件-u:更新原壓縮包中的文件 這五個是獨立的命令,壓縮解壓都要用到其中一個,可以和別的命令連用但只
linux top 命令詳解
ctrl+ 一次 所有 使用方法 ase 隱藏 統計 ini 前臺 top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似於Windows的任務管理器。下面詳細介紹它的使用方法。top - 01:06:48 up 1:22, 1 user
Shell find命令詳解
一個 打印 文件訪問 perm mtime -o 多次 所有者 cut 查找文件find ./ -type f查找目錄find ./ -type d查找名字為test的文件或目錄find ./ -name test查找名字符合正則表達式的文件,註意前面的‘.*’(查找到的文
Find命令詳解整理
find命令詳解整理Findlocate 搜索命令 使用:#yum install -y mlocate 安裝updatedb 生成db數據庫,服務器不建議在工作時間生成,使用計劃任務在淩晨啟動 #find /etc/ -name ‘sshd*‘ 模糊搜索,搜索/etc目錄下name為sshd的
tcpdump命令--詳解
tcpdump命令詳解tcpdump是工作中必用的一道指令,如果熟悉掌握,將會很快的幫你解決問題!文章寫的有點多,但是我認為都很有用!先看看tcpdump的具體參數及意義:-i:指定tcpdump監聽的網絡接口-s:指定要監聽數據包的長度-c:指定要監聽的數據包數量,達到指定數量後自動停止抓包-w:指定將監聽
紅冒系列-Systemctl命令詳解說明
service linux start 如何 守護 Linux Systemctl是一個系統管理守護進程、工具和庫的集合,用於取代System V、service和chkconfig命令,初始進程主要負責控制systemd系統和服務管理器。通過Systemctl –help可以看到該命令主
linux之cp/scp命令+scp命令詳解
... log 之間 一個 option pac 說明 sdn title linux之cp/scp命令+scp命令詳解 名稱:cp 使用權限:所有使用者 使用方式: cp [options] source dest cp [options] source... dir