青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 224  文章 - 41  trackbacks - 0
<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

享受編程

常用鏈接

留言簿(11)

隨筆分類(159)

隨筆檔案(224)

文章分類(2)

文章檔案(4)

經典c++博客

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

原文地址:http://blogold.chinaunix.net/u3/90025/showart_1764687.html

原文地址:http://www.sqlite.org/sqlite.html

    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"點命令關閉。在上面的例子中,列標示是打開的??梢杂孟旅娴姆椒P閉列標示:

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> .schema
create table tbl1(one varchar(10), two smallint)
CREATE TABLE tbl2 (
  f1 varchar(30) primary key,
  f2 text,
  f3 real
)
sqlite> .schema tbl2
CREATE 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

 

或者,如果你給".schema"命令一個參數,由于你只想得到一個表的結構,查詢可以是這樣:
SELECT sql FROM
   (SELECT * FROM sqlite_master UNION ALL
    SELECT * FROM sqlite_temp_master)
WHERE type!='meta' AND sql NOT NULL AND name NOT LIKE 'sqlite_%'
ORDER BY substr(type,2,1), name
你可以擔供一個參數給.schema命令。如果這橛,查詢可以是這樣的:
SELECT sql FROM
   (SELECT * FROM sqlite_master UNION ALL
    SELECT * FROM sqlite_temp_master)
WHERE tbl_name LIKE '%s'
  AND type!='meta' AND sql NOT NULL AND name NOT LIKE 'sqlite_%'
ORDER BY substr(type,2,1), name
在查詢中“%S“為你的參數所取代。這使你可以詢數據庫結構的某個子集。
sqlite> .schema %abc%
    與這些一起,“.table”命令也接受一個模式作為他的參數。如果你給“.table”一個參數,“%”將被前后擴展并且一個LIKE子句被附加到查詢上。這讓你可以列出只與特定模式相匹配的的表。
    “.datebasae”命令顯示所有當前連接打開的數據庫的一個列表。將允許一次到少兩個。第一個是“main”,最初打開的那個數據庫。第二個是"temp",用于臨時表的數據庫。對于用ATTACH語句附加的數據也許有附加數據庫列表。輸出的第一列與之相聯的數據庫名,第二列是外部文件名。
sqlite> .databases
    將整個數據庫轉換為ASCII文本文件
    ".dump"命令成一個單一的ASCII文本文件。這個文件可以被用作管道傳遞給sqlite3命令來轉換回數據庫。
    一個最好的制作一個數據庫檔案拷貝的命令是:
echo '.dump' | sqlite3 ex1 | gzip -c >ex1.dump.gz 
    它產生一個一個名為ex1.dump.gz的文件,它包含了你以后或在其它機器上重構數據庫的所有的信息。要重構數據庫,只須敲入:
zcat ex1.dump.gz | sqlite3 ex2 
    這個文本格式是純粹的SQL語句所以你可以用.dump命令來導出一個SQLite數據庫到另一個常用的SQL數據庫引擎。比如:
createdb ex2
sqlite3 ex1 .dump | psql ex2
其它的點命令
".explain"命令可以被用來設置輸出格式為“column” 并設置列寬為EXPLAIN命令看起來比較合理的寬度。EXPLAIN命令是SQLite特有的SQL擴展,它是對調試有用。如果任何常規的SQL被EXPLAIN執行,那么SQL命令被分解并分析但并不執行。取而代之的是,虛擬機指令序列將被用于執行SQL命令并返回一個類似的查詢結果。如:

sqlite> .explain
sqlite> explain delete from tbl1 where two<20;
addr  opcode        p1     p2     p3          
----  ------------  -----  -----  -------------------------------------   
0     ListOpen      0      0                  
1     Open          0      1      tbl1        
2     Next          0      9                  
3     Field         0      1                  
4     Integer       20     0                  
5     Ge            0      2                  
6     Key           0      0                  
7     ListWrite     0      0                  
8     Goto          0      2                  
9     Noop          0      0                  
10    ListRewind    0      0                  
11    ListRead      0      14                 
12    Delete        0      0                  
13    Goto          0      11                 
14    ListClose     0      0

    “.timeout”命令設置sqlite3等待一個試圖存儲文件鎖定請除直到錯誤返回的總時間。默認的超時值是0因此如果任何需要的數據庫表或序列列被鎖定時它將立即返回一個錯誤。
    最后,我們提到“.exit”命令它交導致sqlite3退出。
在命令和腳本中使用sqlite3
    一個在腳本命令中使用sqlite3的方式是用“echo”或“cat”來產生一個命令序列在一個文件中,然后當從一個產生的命令行中重定向輸入時調用sqlite3。它有用并且適應許多環境。但作為一附加的便利是,sqlite3允許一個單一的SQL語句在命令行中作為數據庫名后的第二個參數輸入。當sqlite3程序帶著兩個參數啟動時,第二個參數被傳遞給SQLite庫處理,查詢以列表模式打印到標準輸出,然后程序退出。這個機制被設計用于讓sqlite3容易于用于連接諸如"AWK"的程序。例如:
sqlite3 ex1 'select * from tbl1' |
 awk '{printf "<tr><td>%s<td>%s\n",$1,$2 }'
<tr><td>hello<td>10
<tr><td>goodbye<td>20
$
結束命令行命令
    SQLite命令通常以一個分號結束。在一個命令行中你也可以用“GO”單詞(大小寫敏感)或者一個“/”斜線在它所在好行結束一個命令。這常被SQL Server和Oracle使用。這些將不在sqlite3_exec()中有用,因為命令行在傳遞它們到函數之前把這些翻譯為分號。
從源文件中編譯sqlite3
    sqlite3程序當你編譯SQLite庫時自動被建立。只須取得一個源文件樹的拷貝,運行“configure"然后"make"即可。

SQLite3的Shell(1)

sqlite3.exe是SQLite訪問數據庫的一個工具,使用命令行的形式。
Shell的命令分為兩種,第一是Shell本身的命令,以點開頭。第二是用來管理當前數據庫的SQL命令,以分號結束。
其中Shell本身的命令分以下幾種:控制數據的顯示模式;設置Shell讀取和顯示數據的方式;其他系統控制命令

常用的顯示模式控制命令:
.header ON|OFF:設置是否顯示數據表格的列名
.indices TABLE:顯示表格的所有列名
.mode MODE:設置數據表格的顯示模式。默認是list,用.separator命令設置的字符串分隔字符(默認是|)。我們比較習慣的是column格式
.nullvalue STRING:當數據為空時,用STRING來填充。默認是空字符串,也就是什么也不顯示。
.tables PATTERN:使用PATTERN模式來顯示表格
.width NUM NUM...:設置當以column模式顯示時,數據顯示的寬度

.output FILENAME|stdout:設置數據輸出的形式:文件或屏幕的標準輸出。
.read FILENAME:從文件讀取SQL語句


其他系統控制命令:
.databases:顯示目前已經匹配的數據庫名稱
.table:顯示當前數據庫中的所有表
.help:顯示shell的幫助信息
.show:顯示shell目前的設置參數
.quit 和.exit:退出shell

參考:http://www.sqlite.org/sqlite.html

posted on 2011-06-16 23:15 漂漂 閱讀(2170) 評論(0)  編輯 收藏 引用 所屬分類: 數據庫
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            老鸭窝亚洲一区二区三区| 久久这里有精品视频| 国产欧美亚洲日本| 国产精品国产三级欧美二区| 欧美色中文字幕| 国产精自产拍久久久久久蜜| 国产九色精品成人porny| 国内成人精品视频| 午夜激情亚洲| 亚洲一区视频| 新67194成人永久网站| 久久国产精品第一页| 久久一日本道色综合久久| 欧美顶级艳妇交换群宴| 欧美日韩亚洲视频一区| 国产精自产拍久久久久久| 激情一区二区| 99视频+国产日韩欧美| 性做久久久久久久免费看| 久久午夜激情| 99视频一区二区三区| 久久久国产精品一区二区三区| 蜜桃久久精品乱码一区二区| 欧美午夜三级| 亚洲第一页在线| 午夜久久电影网| 欧美大片在线影院| 亚洲欧美欧美一区二区三区| 免费一级欧美片在线播放| 国产精品vvv| 亚洲日本一区二区| 久久精品九九| 一区二区三区欧美成人| 欧美电影资源| 影音欧美亚洲| 午夜精品一区二区三区在线播放| 亚洲电影免费观看高清完整版| 亚洲美女在线国产| 老鸭窝毛片一区二区三区| 国产精品一二| 一本色道婷婷久久欧美| 蜜桃久久精品乱码一区二区| 亚洲视频在线观看三级| 欧美精品大片| 在线欧美日韩国产| 久久一本综合频道| 午夜日韩在线观看| 国产精品久久久久9999吃药| 9人人澡人人爽人人精品| 美女任你摸久久| 久久不射电影网| 国产区亚洲区欧美区| 欧美一级电影久久| 一二三四社区欧美黄| 欧美日韩国产页| 亚洲伦伦在线| 亚洲国产一区二区三区青草影视 | 亚洲韩国日本中文字幕| 久久久久久色| 红桃视频欧美| 久久精品国产99国产精品澳门| 亚洲午夜高清视频| 欧美特黄视频| 亚洲免费小视频| 亚洲一区二区欧美| 国产精品乱看| 国产精品综合| 性色av香蕉一区二区| 亚洲欧美大片| 国产一区欧美日韩| 老牛嫩草一区二区三区日本| 久久综合九色综合欧美就去吻| 在线欧美日韩精品| 亚洲国产日韩欧美一区二区三区| 久久夜色精品国产欧美乱| 亚洲国产天堂久久国产91| 欧美激情综合色| 欧美日本精品在线| 午夜精品剧场| 午夜视频在线观看一区| 狠色狠色综合久久| 欧美激情第六页| 欧美日韩一区二区视频在线观看| 新片速递亚洲合集欧美合集| 久久精品女人的天堂av| 亚洲激情视频在线播放| 亚洲精选视频在线| 国产精品永久免费观看| 免费成人黄色| 欧美三级视频| 久久久久国产精品一区三寸| 美女亚洲精品| 欧美一区激情| 免费成人av资源网| 小黄鸭精品密入口导航| 久久麻豆一区二区| 一本色道久久88亚洲综合88| 篠田优中文在线播放第一区| 亚洲电影在线| 亚洲中午字幕| 91久久精品日日躁夜夜躁国产| 一区二区三区高清在线| 在线观看成人一级片| 一本色道久久综合亚洲精品高清| 国产一区再线| 一区二区三区欧美| 最新国产精品拍自在线播放| 亚洲一区免费看| 亚洲精选视频免费看| 欧美在线视频观看| 一区二区三区 在线观看视频| 久久精品亚洲精品| 午夜精品久久久| 麻豆国产精品777777在线| 欧美在线在线| 国产精品久久久久久久久果冻传媒| 欧美不卡一区| 国产一级揄自揄精品视频| 日韩小视频在线观看| 在线免费日韩片| 久久国产精品久久久久久电车| 亚洲一区在线免费| 欧美精品自拍| 欧美高清在线视频观看不卡| 国产欧美日韩亚洲| 亚洲一区不卡| 在线视频一区观看| 欧美成人午夜视频| 欧美高清在线视频| 亚洲国产精品尤物yw在线观看| 欧美一区二区三区的| 国产一区二区三区黄| 正在播放欧美视频| 亚洲婷婷综合久久一本伊一区| 老牛嫩草一区二区三区日本 | 亚洲制服av| 欧美精彩视频一区二区三区| 欧美大片一区二区| 亚洲国语精品自产拍在线观看| 久久精品一区二区| 久久人人爽人人| 国产亚洲一区二区在线观看 | 国产精品v欧美精品v日本精品动漫| 欧美成人一区二区| 亚洲国产成人一区| 免费在线国产精品| 亚洲国产天堂久久综合| 亚洲人妖在线| 欧美日韩亚洲一区三区| 亚洲视频欧美在线| 亚洲欧美亚洲| 国产在线观看一区| 久久精品国产免费观看| 欧美成人69av| 91久久久一线二线三线品牌| 欧美丰满少妇xxxbbb| 一本色道久久综合亚洲91| 亚洲欧美区自拍先锋| 国产色产综合产在线视频| 欧美中文字幕在线| 亚洲成色777777在线观看影院| 亚洲日本电影在线| 欧美午夜不卡| 久久精品一区| 99精品欧美一区二区三区| 欧美亚洲免费电影| 亚洲电影中文字幕| 欧美日韩国产123| 欧美一级午夜免费电影| 欧美成人激情在线| 亚洲一级在线| 狠狠色狠狠色综合系列| 欧美片第1页综合| 亚洲综合精品四区| 欧美激情一区在线| 亚洲欧美日韩第一区| 1024亚洲| 国产精品久久久久免费a∨| 欧美尤物一区| 亚洲欧洲精品天堂一级| 久久av在线| 一区二区三区产品免费精品久久75| 国产精品美女诱惑| 欧美h视频在线| 亚洲欧美伊人| 亚洲免费精品| 久久亚洲风情| 亚洲一区二区三区在线视频| 精品粉嫩aⅴ一区二区三区四区| 欧美日韩福利| 嫩模写真一区二区三区三州| 亚洲欧美中文日韩v在线观看| 亚洲免费黄色| 最新国产拍偷乱拍精品| 久久婷婷久久| 欧美一级视频精品观看| 9i看片成人免费高清| 亚洲国产高清一区| 狠狠色狠狠色综合日日小说| 国产精品视频一二|