標籤:sqlite sqlite3.exe 教程
1).open 開啟資料庫
例子:
sqlite> .open test.db
注意:>後面有點
2) .tables 查看資料庫包含的表名
例子:
sqlite> .tables
注意:>後面有點
3) .schema 查看資料庫中所有的表的結構
例子:
sqlite> .schema students
注意:>後面有點
4) 執行sql語句
例子:
sqlite> select * from students where StudentID = 3 ;
注意:調用sql之前,可以設定輸出的結果格式
-顯示SELECT結果集的列名。
--以列的形式顯示各個欄位。
--將其後輸出的第一列顯示寬度設定為10.
sqlite> .header on
sqlite> .mode column
sqlite> .width 10
5).exit 退出
6) .explain 準備顯示SQL語句轉換成VDBC機器碼的語句
例子如下:
sqlite> .explain
sqlite> EXPLAIN select * from students ;
7)在上面的基礎上,如果調用了.explain
可以查看簡單的如下的細節,目前需要等到翻譯了英文版本才能夠理解
sqlite> .explain
sqlite> EXPLAIN QUERY PLAN select * from students;
sele order from data
0 0 0 SCAN TABLE students
當然,我在下面的網站上看到了對students表建立索引,之後產生的不同:
摘自:http://blog.itpub.net/16900201/viewspace-1291550/
sqlite> create index student_index on students(StudentID);
sqlite> EXPLAIN QUERY PLAN select * from student where StudnetID = 1;
結果顯示如下:
sele order from data
0 0 0 SEARCH TABLE student USING INDEX student_index(StudentID= ?)
綜上所述,該語句說明了資料是如何查詢的,當然了只有建立索引的時候,才有效,這裡我們可以大膽的斷言:實際上,如果資料庫不建立索引,其實就是掃描整一個資料庫的表記錄,如果建立了索引就會搜尋索引,這個話題將會在以後的文章中,進行詳細的分析說明,並且從源碼角度如何正確建立索引,而且是在多個列上建立聚簇索引。
如下是一些簡單的探索:
1)資料庫並沒有儲存student_index這張表,至於儲存在什麼地方等待探索!!
Error:no such table student_index;
2)索引是否記錄了對應資料區塊的編號,來加快搜尋,儲存的結構是什嗎??
update別名問題:
目前測試過程中,發現sqlite是不支援在update中使用別名,例如:
update task as t set t.state = 4 where t.taskID = 65
說明在執行sql語句的時候需要相當注意
注意事項
SQLite資料庫儲存的內容編碼格式可能是UTF-8或者GBK編碼,直接啟動sqlite.exe程式讀取資料庫的內容,目前讀取GBK編碼的時候,顯示中文亂碼
解決方案:很多使用者希望能夠在控制台下輸入中文,必須使用指令chcp 936,切換到GBK編碼格式,才能夠正常輸入
2)目前查看UTF-8編碼的資料庫檔案,使用指令chcp 65001,切換到UTF-8編碼字元集
3)進入到sqlite.exe程式的目錄,啟動sqlite.exe,這個時候正常顯示UTF-8資料庫內容
4)如果資料庫內容是GBK編碼,可以使用chcp 936。
SQLite第一課 sqlite3.exe使用教程