SQLite 作為輕量級量嵌入式數據庫,其數據格式(存儲格式和數據類型)和使用命令(包括 SQL 命令和命令行工具命令)有鮮明特點。以下詳細説明:

一、SQLite 數據格式

1. 數據庫文件格式

SQLite 數據庫以單一文件形式存儲(如 test.db),包含所有表、索引、數據等信息。文件格式是跨平台的(Windows/Linux/macOS 通用),且採用頁式存儲(默認頁大小 4KB,可配置),確保高效讀寫。

2. 數據類型(動態類型系統)

SQLite 不嚴格遵循靜態類型(與 MySQL 等不同),採用動態類型:列的類型僅為 “建議”,實際可存儲任意類型數據。但通常按以下類型設計表結構:

常用類型

説明

示例存儲值

INTEGER

整數類型(可存 signed 整數,支持自增主鍵)

123-45

REAL

浮點數(8 字節雙精度)

3.14-0.001

TEXT

文本字符串(UTF-8/UTF-16/UTF-32 編碼)

'hello''中文'

BLOB

二進制數據(如圖片、文件,原樣存儲)

圖片二進制流

NUMERIC

數值類型(自動轉換為合適的整數 / 浮點數 / 文本,適合日期、布爾值等)

'2023-10-01'TRUE

特殊規則

  • 布爾值:TRUE 存為 1FALSE 存為 0(整數類型)。
  • 日期時間:無專用類型,常用 TEXT(如 '2023-10-01 12:30:00')或 INTEGER(時間戳,如 1696139400)存儲。
  • 動態類型判定:插入數據時,SQLite 會根據值自動確定其 “存儲類型”(而非列定義類型)。

二、SQLite 核心使用命令

(一)SQL 命令(數據操作與定義)

適用於所有 SQLite 客户端(命令行、編程語言接口等),與標準 SQL 兼容,部分有擴展。

  1. 數據庫連接相關無單獨 SQL 命令,通過客户端工具連接文件(如 sqlite3 test.db)。
  2. 表操作(DDL)
  • 創建表:CREATE TABLE(見前文示例,支持約束如 PRIMARY KEYFOREIGN KEY 等)。
  • 刪除表:DROP TABLE [IF EXISTS] 表名;
  • 修改表:ALTER TABLE 表名 RENAME TO 新表名;(重命名);ALTER TABLE 表名 ADD COLUMN 列定義;(添加列)。
  1. 數據操作(DML)
  • 插入:INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2);
  • 查詢:SELECT 列 FROM 表名 WHERE 條件 LIMIT 數量;(支持 JOINGROUP BYORDER BY 等)。
  • 更新:UPDATE 表名 SET 列=值 WHERE 條件;
  • 刪除:DELETE FROM 表名 WHERE 條件;
  1. 索引操作
  • 創建索引:CREATE [UNIQUE] INDEX 索引名 ON 表名(列1, 列2);
  • 刪除索引:DROP INDEX [IF EXISTS] 索引名;
  1. 事務操作
  • 開始事務:BEGIN TRANSACTION;
  • 提交:COMMIT;(確認修改)
  • 回滾:ROLLBACK;(取消修改)
  1. 特殊命令(PRAGMA)SQLite 擴展命令,用於查詢 / 修改數據庫配置:
  • 開啓外鍵支持:PRAGMA foreign_keys = ON;(默認關閉)
  • 查看錶結構:PRAGMA table_info(表名);
  • 查看數據庫頁大小:PRAGMA page_size;
(二)SQLite 命令行工具命令(.xxx 格式)

通過 sqlite3 命令行工具操作時,可用以下輔助命令(非 SQL 語法,以 . 開頭):

命令

説明

示例

.open 文件名

打開或創建數據庫文件

.open test.db

.databases

查看當前連接的數據庫文件路徑

.databases

.tables

列出所有表名

.tables

.schema [表名]

查看錶的建表語句(無表名則顯示所有)

.schema users

.mode 格式

設置查詢結果顯示格式(如列對齊、CSV)

.mode column(列對齊);.mode csv

.header on/off

是否顯示列名標題

.header on(顯示標題)

.output 文件名

將查詢結果輸出到文件(默認輸出到終端)

.output result.txt

.read 文件名

執行 SQL 腳本文件中的命令

.read init.sql(執行 init.sql 腳本)

.exit.quit

退出命令行工具

.exit

.help

查看所有命令行工具命令

.help

三、使用示例(命令行流程)

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 是一款輕量級嵌入式關係型數據庫,核心特點是零配置、跨平台、單文件存儲,無需獨立服務器即可運行。

一、核心特性

  1. 零配置部署:無需安裝、啓動服務,也不用配置用户名 / 密碼,直接通過文件讀寫數據。
  2. 單文件存儲:整個數據庫(表、索引、數據等)封裝為單個文件(如 data.db),便於傳輸和備份。
  3. 跨平台兼容:數據庫文件可在 Windows、Linux、macOS 等系統間無縫遷移,支持 32/64 位架構。
  4. 輕量高效:庫體積極小(僅幾十 KB),內存佔用低,讀寫性能適配嵌入式設備和小型應用。
  5. 兼容標準 SQL:支持大部分 SQL92 標準語法,包括事務、索引、JOIN 查詢、聚合函數等核心功能。
  6. 動態類型系統:列定義的類型僅為建議,可存儲任意類型數據,靈活性高(但設計時建議遵循類型規範)。

二、適用場景

  • 嵌入式設備:智能硬件、物聯網設備、機頂盒等資源受限場景。
  • 移動應用:iOS/Android 本地存儲(如 App 緩存、用户數據)。
  • 小型應用:桌面工具、輕量 Web 應用(低併發場景)、測試環境。
  • 數據交換:作為臨時數據載體,方便不同系統間傳輸結構化數據。

三、侷限性

  • 不適合高併發寫入:單文件存儲機制導致併發寫入性能較弱,不適合高吞吐場景(如大型網站後端)。
  • 功能簡化:部分高級 SQL 特性支持有限(如 ALTER TABLE 功能受限、不支持自定義函數默認實現)。
  • 無用户權限管理:默認無身份驗證和權限控制,需依賴外部機制保障數據安全。

四、核心優勢總結

SQLite 以 “簡單、輕量、零依賴” 為核心競爭力,無需複雜配置即可快速上手,是 “嵌入式場景 + 輕量數據存儲” 的首選數據庫。其單文件特性和跨平台兼容性,讓數據管理和遷移變得極為便捷。

要不要我幫你整理一份SQLite 快速入門 cheat sheet,包含核心命令、數據類型和常用場景示例,方便你隨時查閲?