【基本操作】SQLiteでデータベースを確認する方法|テーブル一覧・データ内容・構造の見方も解説

「この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 の場合

  1. SQLite公式サイトにアクセス
  2. 「Precompiled Binaries for Windows」から sqlite-tools-win32-x86-*.zip をダウンロード
  3. zipファイルを展開して sqlite3.exe を任意のフォルダに配置
  4. 環境変数の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

インストール方法

  1. 公式サイトからダウンロード
  2. OS(Windows/Mac/Linux)に応じたインストーラーを選択
  3. インストール後、アプリケーションを起動

基本的な使い方

  1. データベースを開く
    • 「データベースを開く」ボタンをクリック
    • .db.sqliteファイルを選択
  2. テーブル一覧の確認
    • 左側の「データベース構造」タブでテーブル一覧表示
    • 各テーブルをクリックすると構造が表示
  3. データの表示
    • 「データ表示」タブでテーブルのデータを表示
    • フィルターや並び替えも可能
  4. 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柔軟、自動化可能
デバッグコマンドライン詳細情報、トラブル解決

効率的な確認のコツ

段階的アプローチ

  1. 概要把握:テーブル一覧とレコード件数
  2. 構造理解:スキーマとデータ型
  3. 内容確認:サンプルデータと統計情報
  4. 詳細分析:特定条件でのデータ抽出

よく使うコマンドを覚える

  • .tables:テーブル一覧
  • .schema table_name:構造確認
  • SELECT * FROM table_name LIMIT 10;:データ確認
  • SELECT COUNT(*) FROM table_name;:件数確認

安全な操作を心がける

  • 本番データは必ずバックアップしてから操作
  • 大きなテーブルでは LIMIT を使用
  • 変更操作前には SELECT で内容確認

コメント

タイトルとURLをコピーしました