こんにちは、かつコーチです。
SQL基礎編ではMySQLやPostgreSQLを想定して標準SQLを学んできました。
今回からは新シリーズとして、SQLiteという少し毛色の違うデータベースを扱っていきます。
「SQLiteって聞いたことはあるけど、MySQLと何が違うの?」という疑問を持つ方は多いはずです。
この記事では、SQLiteとは何か、なぜ多くのアプリで採用されているのかを初心者向けに解説します。
SQLiteとは?
サーバーを持たない組み込みデータベース
SQLiteとは、サーバープロセスを持たない組み込み型(サーバーレス)データベースです。
MySQLやPostgreSQLは「データベースサーバー」を起動し、アプリケーションがネットワーク経由で接続します。
一方SQLiteは、データベースの実体が1つのファイルであり、アプリケーションがそのファイルに直接アクセスします。
# MySQLの場合:サーバーに接続する
mysql -h localhost -u root -p mydb
# SQLiteの場合:ファイルを開くだけ
sqlite3 mydb.sqlite3
サーバーの起動や接続設定が不要なので、「データベースを使う」という行為が一気に身近になります。
サーバー型DBとの違い
サーバー型DBとSQLiteの違いを整理すると、以下のようになります。
| 項目 | MySQL/PostgreSQL(サーバー型) | SQLite(組み込み型) |
|---|---|---|
| 実体 | サーバープロセス+データファイル | 1つのファイル |
| 接続方法 | ネットワーク経由(TCP/IP) | ファイルを直接読み書き |
| 同時接続 | 多数のクライアントを想定 | 基本は少数プロセス向け |
| 設定 | ユーザー権限・ポート等の設定が必要 | 設定不要 |
| 主な用途 | Webサービスのバックエンド | モバイルアプリ・デスクトップアプリ・組み込み機器 |
サーバー型が「大人数で使う共有オフィス」だとすれば、SQLiteは「1冊のノート」に近いイメージです。
誰かが管理者として立ち上げておく必要がなく、ノートそのものを持ち運べます。
なぜ組み込み・エッジで使われるのか
SQLiteは、iPhoneやAndroidアプリ、ブラウザ(一部)、IoT機器など、組み込み・エッジと呼ばれる領域で圧倒的なシェアを持っています。
理由はシンプルで、サーバーを起動できない環境や、常時ネットワークに繋がっていない環境でも動作するからです。
スマホアプリがオフラインでもデータを保存・検索できるのは、多くの場合SQLiteのおかげです。
基本の使い方
インストール不要で始められる
SQLiteの大きな特徴は、インストールがほぼ不要な点です。
macOSやLinuxには標準でsqlite3コマンドが入っていることが多く、Windowsでも実行ファイルを1つ置くだけで使えます。
# バージョン確認(macOS/Linuxはこれだけで動くことが多い)
sqlite3 --version
Python、PHP、Node.jsなど主要言語の標準ライブラリ・拡張機能にもSQLiteのドライバが含まれていることが多く、追加インストールなしで使い始められます。
sqlite3コマンドの基本操作
sqlite3コマンドにファイル名を渡すと、そのファイルが存在すればデータベースとして開き、存在しなければ新規作成されます。
sqlite3 sample.sqlite3
-- テーブル作成
CREATE TABLE members (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
email TEXT
);
-- データ挿入
INSERT INTO members (name, email) VALUES ('田中太郎', 'tanaka@example.com');
-- 確認
SELECT * FROM members;
.exitまたは.quitでコマンドラインを抜けると、sample.sqlite3というファイルがカレントディレクトリに作成されているはずです。
これがSQLiteのすべてです。
サーバーを立てず、ファイル1つの中にテーブルもデータも収まっています。
よくあるつまずきポイント:ファイルの場所を見失う
意図しない場所にDBファイルを作ってしまう
SQLiteはファイルベースであるがゆえに、「今どのディレクトリで作業しているか」が非常に重要です。
❌ Before:カレントディレクトリを意識せずに実行する
cd ~
sqlite3 app.sqlite3
私自身、個人開発でPythonスクリプトからSQLiteを使い始めた際、実行するたびに違うディレクトリからスクリプトを起動していたため、app.sqlite3が3か所に分裂して作られてしまったことがあります。
「さっき登録したはずのデータが無い」と焦りましたが、原因は接続先ファイルのパスがずれていただけでした。
✅ After:絶対パスかプロジェクトルート基準の相対パスを明示する
import sqlite3
import os
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
DB_PATH = os.path.join(BASE_DIR, "app.sqlite3")
conn = sqlite3.connect(DB_PATH)
スクリプトの実行場所に依存しないよう、コード内でDBファイルのパスを明示的に組み立てるようにしてから、この事故は起きなくなりました。
応用・一歩先の使い方:SQLiteが向いているアプリの特徴
SQLiteは何にでも使えるわけではなく、得意な領域がはっきりしています。
- モバイルアプリ・デスクトップアプリのローカルデータ保存
- 小〜中規模のWebサービス(同時書き込みが少ない構成)
- テスト環境用のDB(本番はMySQL/PostgreSQL、テストはSQLiteで高速化)
- IoT機器やエッジデバイスでのログ保存
- 分析用途で一時的にCSVなどをDB化して集計する
逆に、大量の同時書き込みが発生する大規模Webサービスの本番DBとしては、後の記事で解説する制約(同時アクセスの弱さ)から不向きなケースが多いです。
このあたりの向き不向きは、シリーズ最終回の比較記事で詳しく検証します。
まとめ
この記事のポイント
- SQLiteはサーバーを持たない「組み込み型(サーバーレス)」のデータベース
- データベースの実体は1つのファイルで、インストールなしですぐ使える
- モバイルアプリ・デスクトップアプリ・IoT機器・テスト環境などで広く採用されている
- ファイルベースゆえに「ファイルの場所」を意識することが重要
次に読むべき記事
次回は、SQLiteの核心である「ファイルベースDB」の仕組みをもう一歩掘り下げて解説します。
→ 次の記事:SQLiteのファイルベースDBの仕組みと使い方
タグ: SQLite, 初心者向け, 入門

