「このSQLiteファイルの中にどんなデータが入っているのか確認したい」「そもそもテーブルって何があるの?」そんな疑問は、SQLiteを扱う上で必ず出てくるものです。
この記事では、SQLiteでデータベースの中身を確認するための基本的なコマンドやツールの使い方を、初心者でも分かるように詳しく解説します。
SQLiteデータベースの基礎知識

SQLiteとは何か?
SQLite(エスキューライト)は、ファイルベースの軽量なデータベースシステムです。
拡張子.db
や.sqlite
、.db3
などのファイルの中に、テーブル・インデックス・データなどがすべて格納されています。
SQLiteの主な特徴
- サーバー不要:単体のファイルで動作
- 軽量:数MB程度の小さなサイズ
- 高速:読み書きが速い
- 標準SQL対応:一般的なSQL文が使える
- クロスプラットフォーム:Windows、Mac、Linuxで動作
SQLiteが使われる場面
モバイルアプリ
- Androidアプリのローカルデータ保存
- iOSアプリでの設定やユーザーデータ管理
デスクトップアプリ
- 小規模なアプリケーションのデータ管理
- 設定ファイルやログの保存
ウェブ開発
- プロトタイプ開発時のテストデータベース
- 小規模サイトのデータ管理
組み込みシステム
- IoTデバイスのデータ保存
- 家電製品の設定管理
データベース用語の基本
テーブル(Table)
- データを格納する表のような構造
- 行(レコード)と列(カラム)で構成
レコード(Record)
- テーブルの1行分のデータ
- 例:ユーザー情報の1件分
カラム(Column)
- テーブルの列(項目)
- 例:名前、年齢、メールアドレス
スキーマ(Schema)
- テーブルの構造定義
- どんな列があるか、データ型は何かなど
SQLiteのインストールと準備

SQLiteのインストール方法
Windows の場合
- SQLite公式サイトにアクセス
- 「Precompiled Binaries for Windows」から
sqlite-tools-win32-x86-*.zip
をダウンロード - zipファイルを展開して
sqlite3.exe
を任意のフォルダに配置 - 環境変数のPATHに追加(オプション)
Mac の場合
# Homebrewを使用(推奨)
brew install sqlite3
# または、既にインストール済みの場合が多い
sqlite3 --version
Linux(Ubuntu/Debian)の場合
# aptを使用
sudo apt update
sudo apt install sqlite3
# インストール確認
sqlite3 --version
サンプルデータベースの作成
練習用のデータベースを作成してみましょう。
-- ターミナルでSQLiteを起動
sqlite3 sample.db
-- ユーザーテーブルを作成
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
email TEXT UNIQUE,
age INTEGER,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- サンプルデータを挿入
INSERT INTO users (name, email, age) VALUES
('田中太郎', 'tanaka@example.com', 25),
('佐藤花子', 'sato@example.com', 30),
('山田次郎', 'yamada@example.com', 22);
-- 商品テーブルも作成
CREATE TABLE products (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
price INTEGER,
category TEXT
);
INSERT INTO products (name, price, category) VALUES
('ノートパソコン', 80000, '電子機器'),
('マウス', 2000, '電子機器'),
('コーヒー', 500, '飲み物');
コマンドラインでの基本確認方法

データベースへの接続
基本的な接続方法
# データベースファイルを指定して接続
sqlite3 sample.db
# 新しいデータベースを作成する場合
sqlite3 new_database.db
接続時のオプション設定
-- 列名を表示
.headers on
-- 見やすい表形式で表示
.mode column
-- 列幅を自動調整
.width auto
-- 設定確認
.show
テーブル一覧の確認
基本的な方法
-- すべてのテーブルを表示
.tables
-- より詳細な情報を含む方法
SELECT name FROM sqlite_master WHERE type='table';
-- システムテーブルも含めて表示
SELECT name, type FROM sqlite_master;
出力例
sqlite> .tables
products users
sqlite> SELECT name FROM sqlite_master WHERE type='table';
users
products
テーブル構造の確認
スキーマの表示
-- 特定のテーブルのスキーマ表示
.schema users
-- すべてのテーブルのスキーマ表示
.schema
-- より詳細な構造情報
PRAGMA table_info(users);
出力例
sqlite> .schema users
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
email TEXT UNIQUE,
age INTEGER,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
sqlite> PRAGMA table_info(users);
cid name type notnull dflt_value pk
--- ---------- ------- ------- ---------- --
0 id INTEGER 0 1
1 name TEXT 1 0
2 email TEXT 0 0
3 age INTEGER 0 0
4 created_at TIMESTAMP 0 CURRENT_TIMESTAMP 0
データ内容の確認
基本的なデータ表示
-- 全データを表示
SELECT * FROM users;
-- 件数制限して表示
SELECT * FROM users LIMIT 5;
-- 特定の列のみ表示
SELECT name, email FROM users;
-- 条件を指定して表示
SELECT * FROM users WHERE age > 25;
レコード件数の確認
-- テーブルの総レコード数
SELECT COUNT(*) FROM users;
-- 条件に一致するレコード数
SELECT COUNT(*) FROM users WHERE age > 25;
-- すべてのテーブルのレコード数
SELECT
name AS table_name,
(SELECT COUNT(*) FROM sqlite_master WHERE name = m.name AND type = 'table') AS record_count
FROM sqlite_master m
WHERE type = 'table';
GUIツールを使った確認方法

DB Browser for SQLite
インストール方法
- 公式サイトからダウンロード
- OS(Windows/Mac/Linux)に応じたインストーラーを選択
- インストール後、アプリケーションを起動
基本的な使い方
- データベースを開く
- 「データベースを開く」ボタンをクリック
.db
や.sqlite
ファイルを選択
- テーブル一覧の確認
- 左側の「データベース構造」タブでテーブル一覧表示
- 各テーブルをクリックすると構造が表示
- データの表示
- 「データ表示」タブでテーブルのデータを表示
- フィルターや並び替えも可能
- SQLの実行
- 「SQLを実行」タブで直接SQL文を入力・実行
SQLiteStudio
特徴
- 多機能で柔軟なインターフェース
- プラグインによる機能拡張
- ポータブル版も利用可能
主な機能
- テーブル・ビュー・インデックスの管理
- データのインポート・エクスポート
- SQL文の自動補完
- クエリ実行計画の表示
その他の便利なツール
オンラインツール
- SQLite Online:ブラウザで動作、インストール不要
- SQLiteWebDB:Web上でSQLiteファイルを表示
テキストエディタのプラグイン
- VS Code:SQLite Viewer、SQLite3 Editor など
- Sublime Text:SQLite3 パッケージ
よく使う確認用SQL文集
データベース情報の取得
データベース全体の情報
-- データベースファイルのサイズ(単位:ページ)
PRAGMA page_count;
-- ページサイズ(バイト)
PRAGMA page_size;
-- SQLiteのバージョン
SELECT sqlite_version();
-- データベース内のオブジェクト一覧
SELECT type, name, tbl_name, sql
FROM sqlite_master
ORDER BY type, name;
テーブル分析用SQL
テーブルの詳細情報
-- テーブルの列情報(詳細版)
SELECT
cid,
name,
type,
CASE WHEN [notnull] = 1 THEN 'NOT NULL' ELSE 'NULL' END AS null_constraint,
dflt_value,
CASE WHEN pk = 1 THEN 'PRIMARY KEY' ELSE '' END AS key_type
FROM pragma_table_info('users');
-- インデックス情報
PRAGMA index_list(users);
-- 外部キー情報
PRAGMA foreign_key_list(users);
データ分布の確認
-- 列の値の分布
SELECT age, COUNT(*) as count
FROM users
GROUP BY age
ORDER BY count DESC;
-- NULL値の確認
SELECT
COUNT(*) as total_records,
COUNT(email) as non_null_emails,
COUNT(*) - COUNT(email) as null_emails
FROM users;
-- 重複データの確認
SELECT email, COUNT(*) as duplicate_count
FROM users
GROUP BY email
HAVING COUNT(*) > 1;
パフォーマンス確認用SQL
クエリ実行計画の確認
-- EXPLAINで実行計画を表示
EXPLAIN SELECT * FROM users WHERE age > 25;
-- より詳細な実行計画
EXPLAIN QUERY PLAN SELECT * FROM users WHERE age > 25;
-- インデックス使用状況の確認
.eqp on
SELECT * FROM users WHERE age > 25;
.eqp off
統計情報の更新と確認
-- 統計情報の更新
ANALYZE;
-- 統計情報の確認
SELECT * FROM sqlite_stat1;
実践的な確認テクニック

データ型の確認と変換
実際のデータ型確認
-- SQLiteでの型確認
SELECT
name,
typeof(id) as id_type,
typeof(name) as name_type,
typeof(age) as age_type,
typeof(created_at) as created_at_type
FROM users
LIMIT 1;
データの妥当性チェック
-- 数値として正しくない値の確認
SELECT * FROM users
WHERE age IS NOT NULL
AND typeof(age) != 'integer'
AND typeof(age) != 'real';
-- 日付形式の確認
SELECT created_at, datetime(created_at)
FROM users
WHERE datetime(created_at) IS NULL;
大量データの効率的な確認
サンプリング確認
-- ランダムサンプリング
SELECT * FROM users
ORDER BY RANDOM()
LIMIT 10;
-- 先頭と末尾のデータ確認
(SELECT * FROM users ORDER BY id ASC LIMIT 5)
UNION ALL
(SELECT * FROM users ORDER BY id DESC LIMIT 5);
データ範囲の確認
-- 数値列の統計情報
SELECT
MIN(age) as min_age,
MAX(age) as max_age,
AVG(age) as avg_age,
COUNT(DISTINCT age) as unique_ages
FROM users;
-- 日付範囲の確認
SELECT
MIN(created_at) as earliest,
MAX(created_at) as latest,
COUNT(*) as total_records
FROM users;
トラブルシューティング
よくある問題と解決方法
ファイルが開けない場合
# ファイルの存在確認
ls -la sample.db
# ファイル権限の確認
file sample.db
# SQLiteファイルかどうかの確認
sqlite3 sample.db "SELECT name FROM sqlite_master LIMIT 1;"
文字化けが発生する場合
-- 文字エンコーディングの確認
PRAGMA encoding;
-- 文字化け対策(UTF-8に設定)
PRAGMA encoding = "UTF-8";
データベースが破損している場合
-- 整合性チェック
PRAGMA integrity_check;
-- 高速な整合性チェック
PRAGMA quick_check;
-- データベースの修復(新しいファイルに出力)
.output repaired.sql
.dump
.output stdout
パフォーマンスの問題
重いクエリの特定
-- クエリ実行時間の測定
.timer on
SELECT COUNT(*) FROM users;
.timer off
-- インデックスが使われているかの確認
EXPLAIN QUERY PLAN SELECT * FROM users WHERE email = 'tanaka@example.com';
メモリ使用量の最適化
-- メモリ使用量の確認
PRAGMA cache_size;
-- キャッシュサイズの調整(ページ数で指定)
PRAGMA cache_size = 10000;
-- 一時ディレクトリの設定
PRAGMA temp_store_directory = '/tmp';
応用テクニック

複数データベースの比較
異なるデータベースの構造比較
-- データベースAに接続
.open database_a.db
-- データベースBをアタッチ
ATTACH 'database_b.db' AS db_b;
-- テーブル一覧の比較
SELECT 'A' as db, name FROM sqlite_master WHERE type='table'
UNION ALL
SELECT 'B' as db, name FROM db_b.sqlite_master WHERE type='table'
ORDER BY name, db;
-- データ件数の比較
SELECT
'A' as database,
(SELECT COUNT(*) FROM users) as user_count,
(SELECT COUNT(*) FROM products) as product_count
UNION ALL
SELECT
'B' as database,
(SELECT COUNT(*) FROM db_b.users) as user_count,
(SELECT COUNT(*) FROM db_b.products) as product_count;
バックアップと復元
データベースのバックアップ
# SQLダンプとして出力
sqlite3 sample.db .dump > backup.sql
# バイナリファイルとしてコピー
cp sample.db backup.db
バックアップからの復元
# SQLダンプから復元
sqlite3 restored.db < backup.sql
# バイナリファイルから復元
cp backup.db restored.db
プログラムとの連携
Python での確認例
import sqlite3
import pandas as pd
# データベースに接続
conn = sqlite3.connect('sample.db')
# テーブル一覧取得
tables = pd.read_sql_query(
"SELECT name FROM sqlite_master WHERE type='table'",
conn
)
print("テーブル一覧:")
print(tables)
# データ確認
users = pd.read_sql_query("SELECT * FROM users", conn)
print("\nユーザーデータ:")
print(users.head())
# 統計情報
print("\nデータ統計:")
print(users.describe())
conn.close()
まとめ
SQLite確認方法の選択指針
用途 | 推奨方法 | 特徴 |
---|---|---|
構造確認 | コマンドライン(.schema) | 高速、正確 |
データ閲覧 | GUIツール | 視覚的、直感的 |
データ分析 | SQL文 + Python | 柔軟、自動化可能 |
デバッグ | コマンドライン | 詳細情報、トラブル解決 |
効率的な確認のコツ
段階的アプローチ
- 概要把握:テーブル一覧とレコード件数
- 構造理解:スキーマとデータ型
- 内容確認:サンプルデータと統計情報
- 詳細分析:特定条件でのデータ抽出
よく使うコマンドを覚える
.tables
:テーブル一覧.schema table_name
:構造確認SELECT * FROM table_name LIMIT 10;
:データ確認SELECT COUNT(*) FROM table_name;
:件数確認
安全な操作を心がける
- 本番データは必ずバックアップしてから操作
- 大きなテーブルでは LIMIT を使用
- 変更操作前には SELECT で内容確認
コメント