SQLite 作為輕量級量嵌入式數據庫,其數據格式(存儲格式和數據類型)和使用命令(包括 SQL 命令和命令行工具命令)有鮮明特點。以下詳細説明:
一、SQLite 數據格式
1. 數據庫文件格式
SQLite 數據庫以單一文件形式存儲(如 test.db),包含所有表、索引、數據等信息。文件格式是跨平台的(Windows/Linux/macOS 通用),且採用頁式存儲(默認頁大小 4KB,可配置),確保高效讀寫。
2. 數據類型(動態類型系統)
SQLite 不嚴格遵循靜態類型(與 MySQL 等不同),採用動態類型:列的類型僅為 “建議”,實際可存儲任意類型數據。但通常按以下類型設計表結構:
|
常用類型
|
説明
|
示例存儲值
|
|
|
整數類型(可存 signed 整數,支持自增主鍵)
|
|
|
|
浮點數(8 字節雙精度)
|
|
|
|
文本字符串(UTF-8/UTF-16/UTF-32 編碼)
|
|
|
|
二進制數據(如圖片、文件,原樣存儲)
|
圖片二進制流
|
|
|
數值類型(自動轉換為合適的整數 / 浮點數 / 文本,適合日期、布爾值等)
|
|
特殊規則:
- 布爾值:
TRUE存為1,FALSE存為0(整數類型)。 - 日期時間:無專用類型,常用
TEXT(如'2023-10-01 12:30:00')或INTEGER(時間戳,如1696139400)存儲。 - 動態類型判定:插入數據時,SQLite 會根據值自動確定其 “存儲類型”(而非列定義類型)。
二、SQLite 核心使用命令
(一)SQL 命令(數據操作與定義)
適用於所有 SQLite 客户端(命令行、編程語言接口等),與標準 SQL 兼容,部分有擴展。
- 數據庫連接相關無單獨 SQL 命令,通過客户端工具連接文件(如
sqlite3 test.db)。 - 表操作(DDL)
- 創建表:
CREATE TABLE(見前文示例,支持約束如PRIMARY KEY、FOREIGN KEY等)。 - 刪除表:
DROP TABLE [IF EXISTS] 表名; - 修改表:
ALTER TABLE 表名 RENAME TO 新表名;(重命名);ALTER TABLE 表名 ADD COLUMN 列定義;(添加列)。
- 數據操作(DML)
- 插入:
INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2); - 查詢:
SELECT 列 FROM 表名 WHERE 條件 LIMIT 數量;(支持JOIN、GROUP BY、ORDER BY等)。 - 更新:
UPDATE 表名 SET 列=值 WHERE 條件; - 刪除:
DELETE FROM 表名 WHERE 條件;
- 索引操作
- 創建索引:
CREATE [UNIQUE] INDEX 索引名 ON 表名(列1, 列2); - 刪除索引:
DROP INDEX [IF EXISTS] 索引名;
- 事務操作
- 開始事務:
BEGIN TRANSACTION; - 提交:
COMMIT;(確認修改) - 回滾:
ROLLBACK;(取消修改)
- 特殊命令(PRAGMA)SQLite 擴展命令,用於查詢 / 修改數據庫配置:
- 開啓外鍵支持:
PRAGMA foreign_keys = ON;(默認關閉) - 查看錶結構:
PRAGMA table_info(表名); - 查看數據庫頁大小:
PRAGMA page_size;
(二)SQLite 命令行工具命令(.xxx 格式)
通過 sqlite3 命令行工具操作時,可用以下輔助命令(非 SQL 語法,以 . 開頭):
|
命令
|
説明
|
示例
|
|
|
打開或創建數據庫文件
|
|
|
|
查看當前連接的數據庫文件路徑
|
|
|
|
列出所有表名
|
|
|
|
查看錶的建表語句(無表名則顯示所有)
|
|
|
|
設置查詢結果顯示格式(如列對齊、CSV)
|
|
|
|
是否顯示列名標題
|
|
|
|
將查詢結果輸出到文件(默認輸出到終端)
|
|
|
|
執行 SQL 腳本文件中的命令
|
|
|
|
退出命令行工具
|
|
|
|
查看所有命令行工具命令
|
|
三、使用示例(命令行流程)
1. 創建並連接數據庫:
sqlite3 mydb.db # 若mydb.db不存在則創建,進入命令行交互模式
2. 創建表並插入數據:
CREATE TABLE students (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
score REAL
);
INSERT INTO students (name, score) VALUES ('小明', 90.5), ('小紅', 88);
3. 查詢數據(格式化顯示):
.mode column # 列對齊顯示
.header on # 顯示列名
SELECT * FROM students;
輸出:
id name score
---------- ---------- ----------
1 小明 90.5
2 小紅 88.0
4. 導出查詢結果到文件:
.output scores.txt # 結果輸出到scores.txt
SELECT name, score FROM students WHERE score > 85;
.output stdout # 恢復輸出到終端
5. 退出:
.exit
總結
- 數據格式:單一文件存儲,動態類型(
INTEGER/TEXT/REAL/BLOB為主)。 - 核心命令:SQL 命令(
CREATE/INSERT/SELECT等)用於數據操作;命令行工具命令(.tables/.schema等)用於輔助管理。
通過上述命令,可完成 SQLite 數據庫的創建、表設計、數據增刪改查等全部操作,適合輕量場景快速使用。
SQLite數據庫簡介
SQLite 是一款輕量級嵌入式關係型數據庫,核心特點是零配置、跨平台、單文件存儲,無需獨立服務器即可運行。
一、核心特性
- 零配置部署:無需安裝、啓動服務,也不用配置用户名 / 密碼,直接通過文件讀寫數據。
- 單文件存儲:整個數據庫(表、索引、數據等)封裝為單個文件(如
data.db),便於傳輸和備份。 - 跨平台兼容:數據庫文件可在 Windows、Linux、macOS 等系統間無縫遷移,支持 32/64 位架構。
- 輕量高效:庫體積極小(僅幾十 KB),內存佔用低,讀寫性能適配嵌入式設備和小型應用。
- 兼容標準 SQL:支持大部分 SQL92 標準語法,包括事務、索引、JOIN 查詢、聚合函數等核心功能。
- 動態類型系統:列定義的類型僅為建議,可存儲任意類型數據,靈活性高(但設計時建議遵循類型規範)。
二、適用場景
- 嵌入式設備:智能硬件、物聯網設備、機頂盒等資源受限場景。
- 移動應用:iOS/Android 本地存儲(如 App 緩存、用户數據)。
- 小型應用:桌面工具、輕量 Web 應用(低併發場景)、測試環境。
- 數據交換:作為臨時數據載體,方便不同系統間傳輸結構化數據。
三、侷限性
- 不適合高併發寫入:單文件存儲機制導致併發寫入性能較弱,不適合高吞吐場景(如大型網站後端)。
- 功能簡化:部分高級 SQL 特性支持有限(如
ALTER TABLE功能受限、不支持自定義函數默認實現)。 - 無用户權限管理:默認無身份驗證和權限控制,需依賴外部機制保障數據安全。
四、核心優勢總結
SQLite 以 “簡單、輕量、零依賴” 為核心競爭力,無需複雜配置即可快速上手,是 “嵌入式場景 + 輕量數據存儲” 的首選數據庫。其單文件特性和跨平台兼容性,讓數據管理和遷移變得極為便捷。
要不要我幫你整理一份SQLite 快速入門 cheat sheet,包含核心命令、數據類型和常用場景示例,方便你隨時查閲?