- 開源 (免費)
- 無伺服器 (無須啟動, 不占用程序)
- 單一檔案 (備份方便)
- 零設定 (使用簡單)
- 跨平台 (可移植性佳)
- 自我完善 (無外部相依軟體)
# https://zh.wikipedia.org/wiki/SQLite
樹莓派 Raspbian 並未預載 SQLite, 需自行安裝.
一. 安裝 SQLite :
安裝 SQLite 指令如下 :
sudo apt-get install sqlite3
pi@raspberrypi:~ $ sudo apt-get install sqlite3
正在讀取套件清單... 完成
正在重建相依關係
正在讀取狀態資料... 完成
建議套件:
sqlite3-doc
下列【新】套件將會被安裝:
sqlite3
升級 0 個,新安裝 1 個,移除 0 個,有 0 個未被升級。
需要下載 709 kB 的套件檔。
此操作完成之後,會多佔用 1,991 kB 的磁碟空間。
下載:1 http://mirror.ossplanet.net/raspbian/raspbian stretch/main armhf sqlite3 armhf 3.16.2-5+deb9u1 [709 kB]
取得 709 kB 用了 5s (136 kB/s)
選取了原先未選的套件 sqlite3。
(讀取資料庫 ... 目前共安裝了 136703 個檔案和目錄。)
Preparing to unpack .../sqlite3_3.16.2-5+deb9u1_armhf.deb ...
Unpacking sqlite3 (3.16.2-5+deb9u1) ...
設定 sqlite3 (3.16.2-5+deb9u1) ...
Processing triggers for man-db (2.7.6.1-2) ...
整個程式只有 709KB, 實在非常輕巧啊!
二. 建立 SQLite 資料庫 :
在命令列下 sqlite3 test.db 可建立或載入資料庫, 若 test.db 不存在則在目前目錄下建立名為 test.db 的 SQLite 資料庫, 若已存在載入資料庫, 並進入 sqlite3 的 shell 介面, 下 .help 指令會顯示使用說明, 例如 :
pi@raspberrypi:~ $ sqlite3 test.db
SQLite version 3.16.2 2017-01-06 16:32:41
Enter ".help" for usage hints.
sqlite>
pi@raspberrypi:~ $ sqlite3 test.db
SQLite version 3.16.2 2017-01-06 16:32:41
Enter ".help" for usage hints.
sqlite>
資料庫操作指令除 SELECT 外需用 BEGIN; 開始, 用 COMMIT; 結束. 以下操作參考了下面文章 :
# SQLite Database on a Raspberry Pi
# SQLite DB on Raspberry Pi
# 進階篇 - SQLite資料庫
# 樹莓派學習筆記——SQLite操作簡述
# SQLite DB on Raspberry Pi
# 進階篇 - SQLite資料庫
# 樹莓派學習筆記——SQLite操作簡述
三. 建立資料表 :
建立資料表用 CREATE TABLE 指令, 例如 :
sqlite> BEGIN;
sqlite> CREATE TABLE dhtreadings(id INTEGER PRIMARY KEY AUTOINCREMENT, temperature NUMERIC, humidity NUMERIC, currentdate DATE, currentime TIME, device TEXT);
sqlite> COMMIT;
上面建立了一個 dhtreadings 資料表. 用 .table 指令可列出目前資料庫已有哪些資料表, 而 .fullschema 則列出全部資料表的結構, 例如 :
sqlite> .tables
dhtreadings
sqlite> .fullschema
CREATE TABLE dhtreadings(id INTEGER PRIMARY KEY AUTOINCREMENT, temperature NUMERIC, humidity NUMERIC, currentdate DATE, currentime TIME, device TEXT);
/* No STAT tables available */
以下為資料表的 CRUD 操作 :
四. 新增與查詢紀錄 :
在資料表中新增資料使用 INSERT 指令, 而查詢則用 SELECT 指令, 例如 :
建立資料表用 CREATE TABLE 指令, 例如 :
sqlite> BEGIN;
sqlite> CREATE TABLE dhtreadings(id INTEGER PRIMARY KEY AUTOINCREMENT, temperature NUMERIC, humidity NUMERIC, currentdate DATE, currentime TIME, device TEXT);
sqlite> COMMIT;
上面建立了一個 dhtreadings 資料表. 用 .table 指令可列出目前資料庫已有哪些資料表, 而 .fullschema 則列出全部資料表的結構, 例如 :
sqlite> .tables
dhtreadings
sqlite> .fullschema
CREATE TABLE dhtreadings(id INTEGER PRIMARY KEY AUTOINCREMENT, temperature NUMERIC, humidity NUMERIC, currentdate DATE, currentime TIME, device TEXT);
/* No STAT tables available */
以下為資料表的 CRUD 操作 :
四. 新增與查詢紀錄 :
在資料表中新增資料使用 INSERT 指令, 而查詢則用 SELECT 指令, 例如 :
sqlite> INSERT INTO dhtreadings(temperature, humidity, currentdate, currentime, device) values(22.4, 48, date('now'), time('now'), "manual");
sqlite> COMMIT;
這樣就新增了一筆紀錄到資料表 dhtreadings, 可用 SELECT 查詢資料表 :
sqlite> SELECT * FROM dhtreadings;
1|22.4|48|2019-04-10|02:59:32|manual
可知目前整個資料表只有一筆紀錄. 再新增一筆紀錄 :
sqlite> BEGIN;
sqlite> INSERT INTO dhtreadings(temperature, humidity, currentdate, currentime, device) values(22.5, 48.7, date('now'), time('now'), "manual");
sqlite> COMMIT;
用 SELECT 查詢已有兩筆紀錄 :
sqlite> SELECT * FROM dhtreadings;
1|22.4|48|2019-04-10|02:59:32|manual
2|22.5|48.7|2019-04-10|03:00:40|manual
五. 更新紀錄 :
更新紀錄使用 UPDATE 指令, 可同時更新一個以上欄位, 每個欄位用逗號隔開, 例如更改上面第二筆紀錄之溫濕度 :
sqlite&glt; BEGIN;
sqlite&glt; UPDATE dhtreadings SET temperature='33', humidity='66' WHERE id='2';
sqlite&glt; COMMIT;
sqlite&glt; SELECT * FROM dhtreadings;
1|22.4|48|2019-04-10|02:59:32|manual
2|33|66|2019-04-10|03:00:40|manual
六. 刪除紀錄 :
刪除紀錄使用 DELETE 指令, 必須用 WHERE 限定刪除對象, 否則資料表內的紀錄會全部被刪除, 例如刪除上面第一筆紀錄 :
sqlite&glt; BEGIN;
sqlite&glt; DELETE FROM dhtreadings WHERE id='1';
sqlite&glt; COMMIT;
sqlite&glt; SELECT * FROM dhtreadings;
2|33|66|2019-04-10|03:00:40|manual
可見第一筆資料已被刪除.
七. 刪除資料表 :
刪除資料表用 DROP TABLE 指令, 與 SELECT 一樣不需要用 BEGIN 與 COMMIT, 例如 :
sqlite&glt; .tables
dhtreadings
sqlite&glt; DROP TABLE dhtreadings;
sqlite&glt; .tables
sqlite&glt;
sqlite&glt; DROP TABLE dhtreadings;
Error: no such table: dhtreadings
sqlite&glt; DROP TABLE IF EXISTS dhtreadings;
sqlite&glt;
八. 跳出 SQLite Shell :
在 SQLite Shell 輸入 .quit 或 .exit 均可跳出 Shell 回到命令列 :
sqlite&glt; .quit
pi@raspberrypi:~ $
以上是用 SQLite Shell 直接操作資料庫, 亦可用 Python, Java 等程式語言存取 SQLite 資料庫, 參考 :
# Python 學習筆記 : 資料庫存取測試 (一) SQLite
# Java使用JDBC操作SQLite
# SQLite Java
沒有留言 :
張貼留言