綠色資源網(wǎng):您身邊最放心的安全下載站! 最新軟件|熱門排行|軟件分類|軟件專題|廠商大全

綠色資源網(wǎng)

技術教程
您的位置:首頁數(shù)據(jù)庫類Access → SQLite數(shù)據(jù)庫管理的相關命令

SQLite數(shù)據(jù)庫管理的相關命令

我要評論 2012/12/10 22:05:50 來源:綠色資源網(wǎng) 編輯:sonlywya.cn [ ] 評論:0 點擊:325次

SQLite 是一個類似Access的輕量級數(shù)據(jù)庫系統(tǒng),但是更小、更快、容量更大,并發(fā)更高。為什么說 SQLite 最適合做 CMS (內容管理系統(tǒng))呢?并不是說其他數(shù)據(jù)庫不好, Oracle、MySQL、SQLServer 也都是非常優(yōu)秀的 DBS,只不過他們設計目標不同,特性不同,所以只有更適用某個應用場景,沒有絕對的好壞之分。

SQLite的技術特點:

SQLite 對 SQL92 標準的支持包括索引、限制、觸發(fā)和查看。SQLite 不支持外鍵限制,但支持原子的、一致的、獨立和持久 (ACID) 的事務(后面會提供有關 ACID 的更多信息)。這意味著事務是原子的,因為它們要么完全執(zhí)行,要么根本不執(zhí)行。事務也是一致的,因為在不一致的狀態(tài)中,該數(shù)據(jù)庫從未被保留。事務還是獨立 的,所以,如果在同一時間在同一數(shù)據(jù)庫上有兩個執(zhí)行操作的事務,那么這兩個事務是互不干擾的。而且事務是持久性的,所以,該數(shù)據(jù)庫能夠在崩潰和斷電時幸免 于難,不會丟失數(shù)據(jù)或損壞。SQLite 通過數(shù)據(jù)庫級上的獨占性和共享鎖定來實現(xiàn)獨立事務處理。這意味著當多個進程和線程可以在同一時間從同一數(shù)據(jù)庫讀取數(shù)據(jù),但只有一個可以寫入數(shù)據(jù)。在某個進 程或線程向數(shù)據(jù)庫執(zhí)行寫入操作之前,必須獲得獨占鎖定。在發(fā)出獨占鎖定后,其他的讀或寫操作將不會再發(fā)生。

1.創(chuàng)建數(shù)據(jù)庫

啟動命令行,通過輸入如下命令打開Shell模式的CLP:

sqlite3 test.db

雖然我們提供了數(shù)據(jù)庫名稱,但如果該數(shù)據(jù)庫不存在,SQLite實際上就未創(chuàng)建該數(shù)據(jù)庫,直到在數(shù)據(jù)庫內部創(chuàng)建一些內容時,SQLite才創(chuàng)建該數(shù)據(jù)庫。

2.創(chuàng)建數(shù)據(jù)表

sqlite> create table Member(id integer primary key, name text, age integer,addr text);

注:id為主鍵,該列默認具備自動增長的屬性。

3.插入數(shù)據(jù)

sqlite> insert into Member values(0,'wwl',21,'上海');//id=0的列必須不存在,否則會出錯

或者sqlite> insert into Member(name,age,addr) values('wwl',21,'上海');

4.查詢數(shù)據(jù)

sqlite>.mode column

sqlite>.headers on

sqlite> select * from Member;

注:select語句前面的兩個命令(.headers和.mode)用于改善顯示格式,可以不要。

5.創(chuàng)建視圖和索引

sqlite> create view schema as select * from Member;

sqlite> create index Member_Idx on Member(id)

6.導出數(shù)據(jù)

使用.dump命令可以將數(shù)據(jù)庫對象導出成SQL格式。不帶任何參數(shù)時,.dump將整個數(shù)據(jù)庫導出為數(shù)據(jù)庫定義語言(DDL)和數(shù)據(jù)庫操作語言(DML)命令,適合重新創(chuàng)建數(shù)據(jù)庫對象和其中的數(shù)據(jù)。如果提供了參數(shù),Shell將參數(shù)解析作為表名或視圖,導出任何匹配給定參數(shù)的表或視圖,那些不匹配的將被忽略。

默認情況下.dump 命令的輸出定向到屏幕。如:.dump

如果要將輸出重定向到文件,請使用.dump[filename]命令,此命令將所有的輸出重定向到指定的文件中。若要恢復到屏幕的輸出,只需要執(zhí)行.output stdout命令就OK了。

     sqlite>.output file.sql

sqlite>.dump

sqlite>.output stdout

注:如果file.sql不存在,將在當前工作目錄中創(chuàng)建該文件。如果文件存在,它將被覆蓋。

7.導入數(shù)據(jù)

有兩種方法可以導入數(shù)據(jù),用哪種方法取決于要導入的文件格式。如果文件由SQL語句構成,可以使用.read命令導入文件中包含的命令。如果文件中包含由逗號或其他分隔符分割的值(comma-swparated values,CSV)組成,可使用.import[file][table]命令,此命令將解析指定的文件并嘗試將數(shù)據(jù)插入到指定的表中。

.read命令用來導入.dump命令創(chuàng)建的文件。如果使用前面作為備份文件所導出的file.sql,需要先移除已經(jīng)存在的數(shù)據(jù)庫對象,然后用下面的方法重新導入:

sqlite>drop table Member;

sqlite>drop view schema;

sqlite>.read file.sql

8.備份數(shù)據(jù)庫

有兩種方式可以完成數(shù)據(jù)庫的備份,具體使用哪一種取決于你希望的備份類型。SQL轉儲許是移植性最好的備份。

生成轉儲的標準方式是使用CLP.dump命令:sqlite3 test.db .dump >test.sql

在Shell中,可以將輸出重定向到外部文件,執(zhí)行命令,恢復到屏幕輸出,如:

sqlite>.output file.sql

sqlite>.dump

sqlite>.output stdout

sqlite>.exit

同樣,容易將SQL轉儲作為CLP的輸入流實現(xiàn)數(shù)據(jù)庫導入:

sqlite3 test.db <test.sql

備份二進制數(shù)據(jù)庫知識比復制文件稍多做一點工作。備份之前需要清理數(shù)據(jù)庫,這樣可以釋放一些已刪除對象不再使用的空間。這數(shù)據(jù)庫文件就會變小,因此二進制的副本也會較?。?/p>

sqlite3 test.db vacuum

cp test.db test.Backup

9.其它命令

sqlite>select last_insert_rowid();//獲得最后插入的自動增長量值

sqlite>.tabes//返回所有的表和視圖

sqlite>.indices Member //查看一個表的索引

sqlite>.schema Member //得到一個表或視圖的定義(DDL)語句,如果沒有提供表名,則返回所有數(shù)據(jù)庫對象(table,view,index,triger)的定義語句

關鍵詞:SQLite,數(shù)據(jù)庫

閱讀本文后您有什么感想? 已有 人給出評價!

  • 0 歡迎喜歡
  • 0 白癡
  • 0 拜托
  • 0 哇
  • 0 加油
  • 0 鄙視