sqlite3學習之資料庫操作(建立、附加、分離)
SQLite 的 sqlite3 命令被用來建立新的 SQLite 資料庫,所以我們可以不需要任何特殊的許可權即可建立一個數據庫,語法格式也很簡單,如下:
sqlite3 DatabaseName.db
執行完上述命令之後,會在你的當前目錄下生成一個你的資料庫名稱加上.db做字尾的檔案,這個檔案就是資料庫檔案,我們應該保證資料庫名稱的唯一性,並且此檔案將會被 SQLite 引擎用作資料庫,等資料庫建立完畢後,我們可以使用如下命令檢視是否建立成功:
.databases
我們可以使用 SQLite的 .quit 命令退出 sqlite 提示符。
我們可以在命令提示符中使用 SQLite的 .dump
sqlite3 testDB.db .dump > testDB.sql
上述命令將轉換整個 testDB.db 資料庫的內容到 SQLite 的語句中,並將其轉儲到 ASCII 文字檔案 testDB.sql 中,我們還可以通過簡單的方式從生成的 testDB.sql 恢復,如下:
sqlite3 testDB.db < testDB.sql
SQLite 的 ATTACH DATABASE 語句是用來選擇一個特定的資料庫,使用該命令後,所有的 SQLite 語句將在附加的資料庫下執行,語法格式如下:
ATTACH DATABASE 'DatabaseName' As 'Alias-Name';
如果資料庫尚未被建立,上面的命令將建立一個數據庫,如果資料庫已存在,則把資料庫檔名稱與邏輯資料庫 'Alias-Name' 繫結在一起。
如果想附加一個現有的資料庫 testDB.db,則 ATTACH DATABASE 語句將如下所示:
ATTACH DATABASE 'testDB.db' as 'TEST';
我們可以使用 SQLite .database 命令來顯示附加的資料庫。
資料庫名稱 main 和 temp 被保留用於主資料庫和儲存臨時表及其他臨時資料物件的資料庫。這兩個資料庫名稱可用於每個資料庫連線,且不應該被用於附加,否則將得到一個警告訊息,如下:
sqlite> ATTACH DATABASE 'testDB.db' as 'TEMP'; Error: database TEMP is already in use sqlite> ATTACH DATABASE 'testDB.db' as 'main'; Error: database main is already in use;
SQLite的 DETACH DTABASE 語句是用來把命名資料庫從一個數據庫連線分離和遊離出來,連線是之前使用 ATTACH 語句附加的。如果同一個資料庫檔案已經被附加上多個別名,DETACH 命令將只斷開給定名稱的連線,而其餘的仍然有效,但是我們無法分離 main 或 temp 資料庫,還有就是,如果資料庫是在記憶體中或者是臨時資料庫,則該資料庫將被摧毀,且內容將會丟失。
我們來看下SQLite 的 DETACH DATABASE 'Alias-Name' 語句的基本語法:
DETACH DATABASE 'Alias-Name';
上述程式碼中,'Alias-Name' 與我們之前使用 ATTACH 語句附加資料庫時所用到的別名相同。
假設我們已經建立了一個數據庫,並給它附加了 'test' 和 'currentDB',使用 .database 命令,我們可以看到如下場景:
sqlite>.databases
seq name file
--- --------------- ----------------------
0 main /home/sqlite/testDB.db
2 test /home/sqlite/testDB.db
3 currentDB /home/sqlite/testDB.db
接下來,我們嘗試把 'currentDB' 從 testDB.db 中分離出來,如下:
DETACH DATABASE 'currentDB';
我們再來檢查當前附加的資料庫,如下:
sqlite>.databases
seq name file
--- --------------- ----------------------
0 main /home/sqlite/testDB.db
2 test /home/sqlite/testDB.db
我們會發現,testDB.db 仍與 'test' 和 'main' 保持連線。
好啦,本次記錄就到這裡了。
如果感覺不錯的話,請多多點贊支援哦。。。