SQLite 3 のインストール,データベース作成,テーブル定義(Windows 上)

概要

Windows 環境での SQLite 3 のインストール方法と基本的な使用方法を説明する。winget コマンドを用いたインストール手順,SQLite 3 の起動と終了,ヘルプ表示方法,データベースの新規作成,テーブル定義,レコード挿入,SQL 問い合わせなどの基本操作を,具体的な例を用いて説明する。さらに,CSV ファイルのインポート,テーブル一覧表示,データベース情報の表示,キャッシュサイズの設定,ジャーナルモードの変更など,SQLite 3 の主要なコマンドとその使用方法も紹介する。

SQLite 3

SQLite 3 は,リレーショナルデータベース管理システムである。

主な機能: リレーショナルデータベース管理システムとしての基本機能,設定不要での即時利用,単一ファイルでのデータベース管理,サーバレス運用(クライアント側のみで完結)。

SQLite 3 には次の特徴がある。

  1. アカウント機能(ユーザ名やパスワード)が存在しない。
  2. クライアントサーバモデルを採用していない。
  3. 設定不要で即座に利用できる。

SQLite 3 は主にローカルでの使用を想定しているため,クライアントサーバモデルで運用する場合(マルチユーザ環境やネットワーク越しの利用など),SQLite 3 自体には並行処理制御やリモート通信の機能が備わっていない。そのため,これらの機能が必要な場合は,利用者側でアプリケーションレベルでの実装が必要となる。

また,SQLite 3 は SQL 標準(SQL-92 やそれ以降)の全機能をサポートしているわけではなく,一部の機能は省略されている。

SQLite 3 を対話的に使用するには,通常 sqlite3 コマンド(SQLite 3 コマンドラインシェル)を使用する。ただし,多くのプログラミング言語からライブラリとして利用することもできる。

winget を用いたインストールコマンド: winget install --scope machine SQLite.SQLite

Windows での動作画面例

Ubuntu での動作画面例

SQLite 3 コマンドラインシェル

SQLite 3 コマンドラインシェルは,Windows のコマンドプロンプトや Linux のシェルなどで動作するツールである。主な機能は次のとおりである。

  1. SQLite 3 のデータベースを新規作成する。

    例: sqlite3 新規データベースファイル名.db

  2. 既存のデータベースを開く。

    例: sqlite3 既存データベースファイル名.db

  3. SQL の編集と実行を行う。

    例: SELECT * FROM テーブル名;

  4. テーブルを CSV ファイル形式でエクスポートする。

    コマンド: .mode csv と .output ファイル名.csv(例: .mode csv → .output データ.csv → SELECT * FROM テーブル名;)

  5. .explain コマンドを使用して SQL 実行計画を表示する。

    コマンド: .explain on(例: .explain on → SELECT * FROM テーブル名 WHERE 条件;)

  6. ファイルに記述された SQL を実行する。

    コマンド: .read(例: .read SQLファイル.sql)

  7. データベーススキーマを表示する。

    コマンド: .schema(例: .schema テーブル名)

  8. テーブルをテキストファイル形式でダンプおよびリストアする。

    ダンプコマンド: .dump(例: .dump テーブル名 > ダンプファイル.sql)。リストアは .read コマンドを使用する。

目次

関連する外部ページ

【サイト内の関連ページ】

SQLite 3 活用ガイド

1. SQLite 3 のインストール(Windows 上)

  1. 次のコマンドを管理者権限コマンドプロンプトを起動する (手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。
  2. 次のコマンドは,SQLite 3 をインストールするものである。

    winget install --scope machine SQLite.SQLite
    
  3. 確認のため, Windowsコマンドプロンプトで,次のコマンドを実行する。 エラーメッセージが出なければ問題ない。
    where sqlite3
    sqlite3
    .exit
    

2. SQLite 3 の起動と終了,ヘルプの表示,エンコーディングの確認

使い方の詳しい説明は https://www.sqlite.org/cli.html

3. 空のデータベースの新規作成

ここでの設定

  1. SQLite 3 を実行する。

    * パスが通っていないときは,パスを通すか,フルパスで実行する。

    sqlite3
    
  2. データベースの新規作成

    空のデータベースを作成したいので,次のように操作する。

    「--new」を付けているので,すでにデータベースファイルが存在するときは,その中身を空にする。

    .open --new hoge.db
    
  3. 「.exit」を実行して,SQLite 3 を終了する。
    .exit
    

4. テーブル定義,レコード挿入,SQL 問い合わせ

  1. SQLite 3 を実行する。

    * パスが通っていないときは,パスを通すか,フルパスで実行する。

    sqlite3
    
  2. データベースの新規作成

    空のデータベースを作成したいので,次のように操作する。

    「--new」を付けているので,すでにデータベースファイルが存在するときは,その中身を空にする。

    .open --new hoge.db
    
  3. テーブル定義

    * テーブル名に日本語を使うとエラーが出る場合がある。

    create table order_records (
        id            integer primary key not null,
        year          integer not null CHECK ( year > 2008 ),
        month         integer not null CHECK ( month >= 1 AND month <= 12 ),
        day           integer not null CHECK ( day >= 1 AND day <= 31 ),
        customer_name text not null,
        product_name  text not null,
        unit_price    real not null check ( unit_price > 0 ),
        qty           integer not null default 1 check ( qty > 0 ),
        created_at    timestamp not null default (datetime('now', 'localtime')),
        updated_at    timestamp not null default (datetime('now', 'localtime')),
        check ( ( unit_price * qty ) < 200000 ) );
    
    create trigger order_records_update after update on order_records
    begin
        update order_records set updated_at = (datetime('now', 'localtime')) where id = new.id;
    end;
    
  4. 「.tables」を実行して,テーブルが定義できたことを確認する。
    .tables
    
  5. SQL を用いたレコード挿入
    begin transaction;
    insert into order_records (id, year, month, day, customer_name, product_name, unit_price, qty) values( 1, 2024, 7, 26,  'kaneko', 'orange A', 1.2, 10 );
    insert into order_records (id, year, month, day, customer_name, product_name, unit_price, qty) values( 2, 2024, 7, 26,  'miyamoto', 'Apple M',  2.5, 2 );
    insert into order_records (id, year, month, day, customer_name, product_name, unit_price, qty) values( 3, 2024, 7, 27,  'kaneko',   'orange B', 1.2, 8 );
    insert into order_records (id, year, month, day, customer_name, product_name, unit_price) values( 4, 2024, 7, 28,  'miyamoto',   'Apple L', 3 );
    commit;
    
  6. SQL 問い合わせで確認する。
    select * from order_records;
    
  7. 更新し確認表示
    begin transaction;
    update order_records set unit_price = 11.2 where id = 1;
    commit;
    select * from order_records;
    
  8. 「.tables」を実行して,テーブルを確認する。
    .tables
    
  9. 「.exit」を実行して,SQLite 3 を終了する。
    .exit
    

5. SQLite 3 の主なコマンド

pragma については https://www.sqlite.org/pragma.html