綠色資(zī)源網:您身邊最放心的安全下載站! 最新軟(ruǎn)件|熱門排行(háng)|軟件(jiàn)分(fèn)類|軟件(jiàn)專(zhuān)題|廠商大全

綠色資源網

技(jì)術教程
您的位(wèi)置:首頁數據庫類Access → SQLite數據(jù)庫管(guǎn)理的相關命令

SQLite數據庫管理的相(xiàng)關命令

我要評論 2012/12/10 22:05:50 來源:綠色(sè)資源網 編輯:www.chithemodel.com [ ] 評(píng)論:0 點擊:325次(cì)

SQLite 是一個類似Access的輕量級數據庫係(xì)統,但是更(gèng)小、更快、容量(liàng)更大,並發更高。為什麽說 SQLite 最(zuì)適合(hé)做 CMS (內(nèi)容管理係統(tǒng))呢?並不是說其(qí)他數(shù)據庫不(bú)好(hǎo), Oracle、MySQL、SQLServer 也都(dōu)是非(fēi)常(cháng)優秀的 DBS,隻不(bú)過他們設計目標不同,特性不同(tóng),所以(yǐ)隻有更(gèng)適用某個應用場景,沒(méi)有絕對的好(hǎo)壞之分。

SQLite的技術特點:

SQLite 對 SQL92 標準的(de)支持(chí)包括索引、限(xiàn)製、觸發(fā)和查看(kàn)。SQLite 不支持外鍵限製,但支持(chí)原子的、一(yī)致(zhì)的、獨(dú)立和(hé)持久 (ACID) 的(de)事(shì)務(後麵會提供有關 ACID 的更多信息)。這意味著事(shì)務是原(yuán)子的(de),因為它(tā)們要麽完(wán)全執行,要麽根本不執行。事(shì)務也是(shì)一致的,因為在不一(yī)致(zhì)的狀態中,該數據庫從未被保留。事(shì)務(wù)還是獨立 的(de),所以(yǐ),如果在同一(yī)時間在同一數據庫上有兩個執行操(cāo)作的事(shì)務,那麽(me)這兩個事(shì)務(wù)是互不幹擾的。而(ér)且(qiě)事務是持久性的,所以,該(gāi)數(shù)據庫(kù)能夠在崩(bēng)潰和(hé)斷電時幸免 於難,不會丟失數據(jù)或損壞。SQLite 通過數(shù)據庫級上的(de)獨占性和共(gòng)享鎖定來實現獨立事務處理。這意味著當多個進(jìn)程和線(xiàn)程(chéng)可以在同一時(shí)間從同一數據庫(kù)讀取數據,但隻有(yǒu)一個可以寫入數(shù)據(jù)。在某個進(jìn) 程或線程向數據庫執行(háng)寫入操作之(zhī)前,必須獲得獨占鎖定(dìng)。在發出獨占鎖定後(hòu),其他的讀或寫操作將不會(huì)再(zài)發生。

1.創建數據庫

啟動(dòng)命令行,通過輸入如(rú)下命令打開Shell模式(shì)的CLP:

sqlite3 test.db

雖然我們提供了數據庫名(míng)稱,但(dàn)如果該數據庫不存在(zài),SQLite實際上就未創建該數據庫,直到在數據庫內部創建一些內容時,SQLite才創建(jiàn)該數據庫。

2.創建數據表

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

注:id為(wéi)主鍵,該列默認具備自動(dòng)增長的屬性。

3.插入數據

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

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

4.查詢數據

sqlite>.mode column

sqlite>.headers on

sqlite> select * from Member;

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

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

sqlite> create view schema as select * from Member;

sqlite> create index Member_Idx on Member(id)

6.導(dǎo)出數據(jù)

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

默認情(qíng)況下.dump 命(mìng)令的輸出定(dìng)向到屏幕。如:.dump

如(rú)果要(yào)將(jiāng)輸出重(chóng)定向到文件,請使用.dump[filename]命令,此命令將所有的輸(shū)出重定向到指定的文件中。若要恢複到屏(píng)幕(mù)的輸出,隻需要執行.output stdout命令就(jiù)OK了。

     sqlite>.output file.sql

sqlite>.dump

sqlite>.output stdout

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

7.導入數(shù)據

有兩種方(fāng)法可以導入數據,用哪種(zhǒng)方法取決(jué)於要導(dǎo)入的文件格式。如果文件由(yóu)SQL語(yǔ)句構成,可以(yǐ)使(shǐ)用.read命令導入(rù)文件中包(bāo)含的命令。如果文件中包含由逗號或其他分隔符分割的值(comma-swparated values,CSV)組成,可使用.import[file][table]命令,此命令將解析指(zhǐ)定的文件並(bìng)嚐試(shì)將數據插入到指定的表中。

.read命(mìng)令用來導入.dump命(mìng)令(lìng)創建的文件。如果(guǒ)使用前(qián)麵作為備份文件(jiàn)所導出的file.sql,需要先移除已經(jīng)存在的數據庫對象,然後用(yòng)下麵的方(fāng)法重新(xīn)導入:

sqlite>drop table Member;

sqlite>drop view schema;

sqlite>.read file.sql

8.備份數據庫

有兩(liǎng)種方式(shì)可以完成數據(jù)庫的(de)備份,具體使用哪(nǎ)一(yī)種(zhǒng)取決(jué)於你希望的備份類型。SQL轉儲許是移植性最(zuì)好的備份(fèn)。

生成轉儲的(de)標準方式是使用(yòng)CLP.dump命(mìng)令(lìng):sqlite3 test.db .dump >test.sql

在Shell中,可以(yǐ)將輸出重(chóng)定向(xiàng)到外(wài)部文(wén)件,執行命令(lìng),恢複到屏幕輸(shū)出(chū),如:

sqlite>.output file.sql

sqlite>.dump

sqlite>.output stdout

sqlite>.exit

同樣(yàng),容易將SQL轉儲作為CLP的輸入流實現數(shù)據庫導(dǎo)入:

sqlite3 test.db <test.sql

備(bèi)份(fèn)二進製數據庫(kù)知識比複製文件稍多做一(yī)點工作。備份之前需要清理數據(jù)庫,這樣可以(yǐ)釋放一(yī)些已刪除對象(xiàng)不再(zài)使用的空間。這(zhè)數(shù)據庫文件就會變小,因此二進製的副本也會(huì)較小:

sqlite3 test.db vacuum

cp test.db test.Backup

9.其(qí)它命令(lìng)

sqlite>select last_insert_rowid();//獲得最後(hòu)插入的自動增長(zhǎng)量值

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

sqlite>.indices Member //查(chá)看一個表的索引

sqlite>.schema Member //得到一個表或視圖的(de)定義(DDL)語句,如果沒有提(tí)供表(biǎo)名(míng),則返回所有數據庫對象(table,view,index,triger)的定義語(yǔ)句

關鍵(jiàn)詞(cí):SQLite,數據庫

閱讀(dú)本文後您有什(shí)麽感想? 已有 人給出評價!

  • 0 歡迎(yíng)喜歡
  • 0 白癡
  • 0 拜(bài)托
  • 0 哇
  • 0 加油
  • 0 鄙視