タイトル: SQLite
本稿はSQLiteに関する記事です。
SQLiteとは?

SQLiteはデータベース管理システム(DBMS)のひとつです。
SQLiteはサーバーとして機能するのではなく、アプリケーションに組み込まれて使用されます。
データの保存も単一のファイルのみを使用します。
SQLiteの主な特徴
- サーバー不要 — 1ファイル+ライブラリだけで動作。インストール・管理が極めて軽い
- パブリックドメイン — ライセンス制約なし。商用利用も自由
- クロスプラットフォーム — Windows / Mac / Linux / iOS / Android すべてに対応
- 標準SQL対応 — SELECT / JOIN / TRANSACTION 等のSQL機能を備える
- 軽量・高速 — 小規模データに最適。読み取り中心なら非常に高速
- 埋め込み型 — iOS/Android標準DB、各種アプリ・ブラウザ内部でも使用
SQLiteが向く・向かない用途
| 向いている | 向いていない |
|---|---|
| モバイルアプリ・組み込み | 大規模Webサービス(同時書き込み多数) |
| 個人用・小規模ツール | クライアント・サーバー分離が必要なシステム |
| キャッシュ・設定保存 | 高同時書き込み・大量同時アクセス |
| テスト用DB | レプリケーション・分散DB |
| 静的サイト+単一DB | 業務基幹系の大規模OLTP |
SQLiteの活用例
- iOS / Android アプリ — ローカルデータ保存(標準採用)
- Webブラウザ — Chrome、Firefox、Safari の履歴・Cookie
- Skype、Adobe系 — 設定・ユーザーデータ
- Laravel、Django等 — テスト環境の既定DB
- 組み込み機器 — IoTデバイス、家電
基本のSQLite操作
CLIで開く
|
$ sqlite3 mydb.sqlite # ファイル指定。なければ新規作成 |
テーブル作成・データ操作
|
CREATE TABLE users ( |
SQLite特有のポイント
- 型の柔軟さ(型親和性): TEXT列に数値を入れても許される。厳密型ではない
- PRIMARY KEY自動採番:
INTEGER PRIMARY KEYがROWIDのエイリアスとして自動採番される - 同時書き込みは1つだけ: ファイル単位の書き込みロック
- WAL モード:
PRAGMA journal_mode = WAL;で同時読み取りの性能向上 - 外部キー制約はデフォルト無効:
PRAGMA foreign_keys = ON;で有効化
各言語からの利用
| 言語 | ライブラリ |
|---|---|
| Python | 標準ライブラリ sqlite3 |
| PHP | PDO(sqlite:/path/to/db.sqlite) |
| Java | sqlite-jdbc |
| Node.js | better-sqlite3、sqlite3 |
| C/C++ | SQLite公式ライブラリ |
注意点
- 本番Webアプリで多人数アクセスには不向き。MySQL / PostgreSQLを検討
- ファイル破損: 不適切な停止電源等で破損することがある。バックアップ必須
- 暗号化: 標準では非対応。SQLCipherなどで対応
- カラム削除はSQLite 3.35以前ではサポートなし(テーブル再作成が必要だった)
関連
- 親カテゴリ: データベース
- 類似DB: MySQL & MariaDB / DB2
- SQL本体: SQL