SQLite 3 のインストール,データベース作成,テーブル定義(Windows 上)
【概要】
Windows 環境での SQLite 3 のインストール方法と基本的な使用方法を説明する。winget コマンドを用いたインストール手順,SQLite 3 の起動と終了,ヘルプ表示方法,データベースの新規作成,テーブル定義,レコード挿入,SQL 問い合わせなどの基本操作を,具体的な例を用いて説明する。さらに,CSV ファイルのインポート,テーブル一覧表示,データベース情報の表示,キャッシュサイズの設定,ジャーナルモードの変更など,SQLite 3 の主要なコマンドとその使用方法も紹介する。
SQLite 3
SQLite 3 は,リレーショナルデータベース管理システムである。
主な機能: リレーショナルデータベース管理システムとしての基本機能,設定不要での即時利用,単一ファイルでのデータベース管理,サーバレス運用(クライアント側のみで完結)。
SQLite 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 のシェルなどで動作するツールである。主な機能は次のとおりである。
- SQLite 3 のデータベースを新規作成する。
例: sqlite3 新規データベースファイル名.db
- 既存のデータベースを開く。
例: sqlite3 既存データベースファイル名.db
- SQL の編集と実行を行う。
例: SELECT * FROM テーブル名;
- テーブルを CSV ファイル形式でエクスポートする。
コマンド: .mode csv と .output ファイル名.csv(例: .mode csv → .output データ.csv → SELECT * FROM テーブル名;)
- .explain コマンドを使用して SQL 実行計画を表示する。
コマンド: .explain on(例: .explain on → SELECT * FROM テーブル名 WHERE 条件;)
- ファイルに記述された SQL を実行する。
コマンド: .read(例: .read SQLファイル.sql)
- データベーススキーマを表示する。
コマンド: .schema(例: .schema テーブル名)
- テーブルをテキストファイル形式でダンプおよびリストアする。
ダンプコマンド: .dump(例: .dump テーブル名 > ダンプファイル.sql)。リストアは .read コマンドを使用する。
【目次】
- SQLite 3 のインストール(Windows 上)
- SQLite 3 の起動と終了,ヘルプの表示,エンコーディングの確認
- 空のデータベースの新規作成
- テーブル定義,レコード挿入,SQL 問い合わせ
- SQLite 3 の主なコマンド
【関連する外部ページ】
- SQLite の公式ページ: https://www.sqlite.org/
- SQLite の公式ダウンロードページ: https://www.sqlite.org/download.html
- SQLite のコピーライト: https://www.sqlite.org/copyright.html
- SQLite の SQL 言語に関する公式ドキュメント: https://www.sqlite.org/lang.html
- SQLite コマンドラインシェルの説明: https://www.sqlite.org/cli.html
【サイト内の関連ページ】
1. SQLite 3 のインストール(Windows 上)
- 次のコマンドを管理者権限でコマンドプロンプトを起動する
(手順:Windowsキーまたはスタートメニュー →
cmdと入力 → 右クリック → 「管理者として実行」)。 - 確認のため,
Windows のコマンドプロンプトで,次のコマンドを実行する。
エラーメッセージが出なければ問題ない。
where sqlite3 sqlite3 .exit
次のコマンドは,SQLite 3 をインストールするものである。
winget install --scope machine SQLite.SQLite
2. SQLite 3 の起動と終了,ヘルプの表示,エンコーディングの確認
- SQLite 3 の起動
このとき,データベースファイル名として mydb を指定する。SQLite 3 では,データベースファイル名がそのままデータベースの実体となる。
* データベースファイル名は自由に決めてよいが,アルファベットのみを使うのが良い。
sqlite3 mydb
- ヘルプの表示
「.help」で,ヘルプが表示される。
.help
- 現在使用中のデータベースについての,文字のエンコーディングの確認
「PRAGMA encoding;」で,エンコーディングが表示される。
PRAGMA encoding;
- SQLite 3 の終了
「.exit」で終了する。
.exit
使い方の詳しい説明は https://www.sqlite.org/cli.html
3. 空のデータベースの新規作成
ここでの設定
- 生成したいデータベースファイル名: C:\sqlite3\hoge.db ※ 書き込み権限のあるディレクトリを使用するのが良い
- SQLite 3 を実行する。
* パスが通っていないときは,パスを通すか,フルパスで実行する。
sqlite3
- データベースの新規作成
空のデータベースを作成したいので,次のように操作する。
「--new」を付けているので,すでにデータベースファイルが存在するときは,その中身を空にする。
.open --new hoge.db
- 「.exit」を実行して,SQLite 3 を終了する。
.exit
4. テーブル定義,レコード挿入,SQL 問い合わせ
- SQLite 3 を実行する。
* パスが通っていないときは,パスを通すか,フルパスで実行する。
sqlite3
- データベースの新規作成
空のデータベースを作成したいので,次のように操作する。
「--new」を付けているので,すでにデータベースファイルが存在するときは,その中身を空にする。
.open --new hoge.db
- テーブル定義
* テーブル名に日本語を使うとエラーが出る場合がある。
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; - 「.tables」を実行して,テーブルが定義できたことを確認する。
.tables
- 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;
- SQL 問い合わせで確認する。
select * from order_records;
- 更新し確認表示
begin transaction; update order_records set unit_price = 11.2 where id = 1; commit; select * from order_records;
- 「.tables」を実行して,テーブルを確認する。
.tables
- 「.exit」を実行して,SQLite 3 を終了する。
.exit
5. SQLite 3 の主なコマンド
pragma については https://www.sqlite.org/pragma.html
- CSV ファイルのインポート: .import
.separator , .import T1M.csv T1M
- テーブル一覧表示: .tables
- データベースの情報: .dbinfo
- キャッシュサイズの確認: pragma cache_size;
SQLite 3 のキャッシュサイズは,オープンしたデータベースについて,最大どれだけをメモリに保持するかを表す。値に「-」が付いているときは,単位は 1024 バイトである。
- キャッシュサイズの変更: pragma cache_size=...
キャッシュサイズを変更する。「-500」のように「-」を付けると,単位は 1024 バイト。単純に「512000」のように書くとバイト単位である。
- 既定のキャッシュサイズ: pragma default_cache_size;
- ページサイズ: pragma page_size;
- 最大ページ数: pragma max_page_count;
- ジャーナルモードの確認: pragma journal_mode;
現在接続しているデータベースについてのジャーナルモードを表す。ジャーナルは,トランザクションのロールバックのために用いるものである(SQLite 3 の独自用語ではない)。
- ジャーナルモードの変更: pragma journal_mode=...;
delete, truncate, persist, memory, wal, off に設定できる。