SQLiteman のインストールと利用(Windows 上)
【概要】
SQLiteman は,SQLite 3 のデータベースを操作する機能を持ったソフトウェアである。 Windows 版,Linux 版,Mac OS X 版がある。ソースコードも配布されている。 このページでは,下記の操作を行う手順を説明する。
- SQLiteman Windows 版のインストール
- SQLite 3 のデータベースの新規作成(Create a new SQLite database)
- 既存のデータベースを開く
- SQL の編集と実行
- データのブラウズ
テーブルの一覧表示と中身の表示・更新(行の削除,値の変更)。SQL ではなく,グラフィカル・ユーザインタフェースを使用する。
【目次】
- あらかじめ決めておく事項
- SQLiteman Windows 版のインストール
- Ubuntu での SQLiteman のインストール
- SQLiteman の起動と終了
- SQLiteman で SQLite 3 のデータベースの新規作成
- SQLiteman で既存のデータベースを開く
- SQL を用いたテーブル定義と一貫性制約の記述
- SQL を用いたテーブルへの行の挿入
- 一貫性制約に違反する更新ができないことの確認
- SQL 問い合わせの発行と評価結果の確認
- SQL を用いた更新
- SQL を用いた行の削除
- SQLiteman を用いたデータのブラウズ
- テーブルの CSV ファイル形式データのインポート
- 日本語を試してみる
【関連する外部ページ】
- SQLiteman の配布ページ(SourceForge): https://sourceforge.net/projects/sqliteman/
- SQLite の公式ページ: https://www.sqlite.org/
【サイト内の関連ページ】
1. あらかじめ決めておく事項
このページでは,データベースの生成を行うので, 生成するデータベースファイル名を決めておくこと。 このページでは,次のように書く。
- データベースファイル名: hoge.db
データベースファイル名は自由に決めてよいが,半角文字(英字と英記号)を使い,スペースを含まないこと。
- SQLiteman プログラムを置くディレクトリ:
- Windows の場合: C:\SQLite
自由に決めてよいが,半角文字(英字と英記号)を使い,スペースを含まないこと。
2. SQLiteman Windows 版のインストール
インストール・ディレクトリ: C:\SQLite
- 新しいディレクトリ C:\SQLite を作る。
ここに データベースファイルを置くことにする。
- SQLiteman を入手する。SourceForge のウェブページを開く。
- 「Files」をクリックする。
- 「sqliteman」をクリックする。
- 最新版が欲しいので,「1.2.2」をクリックする。
- Windows 版が欲しいので「Sqliteman-1.2.2-win32.zip」をクリックする。
- ダウンロードが始まる。
- ダウンロードした .zip ファイルを展開(解凍)する。
以下,C:\SQLite に展開(解凍)したとして説明を続ける。
- 確認のため,sqliteman.exe を試しに実行する。
新しい画面が開くので確認する。
3. Ubuntu での SQLiteman のインストール(Install Sqliteman on Ubuntu)
Ubuntu での SQLiteman のインストールは,次のコマンドにより行う。
# パッケージリストの情報を更新
sudo apt update
sudo apt -y install sqliteman
4. SQLiteman の起動と終了
- SQLiteman の起動
* Windows での SQLiteman の起動例
Windows での操作例
SQLiteman の新しいウインドウが開く。
* Ubuntu での SQLiteman の起動例
端末を開き,「sqliteman」を実行する。
SQLiteman の新しいウインドウが開く。
- ヘルプの表示
「Help」→「Help Content」でヘルプが表示される。
- 終了
「File」→「Exit」で終了する。
5. SQLiteman で SQLite 3 のデータベースの新規作成
以下の手順で,新しいデータベースを作成する。その結果,データベースファイルができる。
- 生成したいデータベースファイル名: C:\SQLite\hoge.db
* 書き込み権限のあるディレクトリを使用するのが良い。
- sqliteman を起動する。
Windows での操作例
- データベースを生成したいので,「File」→「New」と操作する。
- データベースの新規作成を開始する
* Windows での実行例(データベースファイル名を「hoge.db」にする場合) ディレクトリと,データベースファイル名を指定し,「保存」をクリックする。
* 以下の例では「C:\SQLite\hoge.db」を指定している。
* データベースファイル名は何でもよいが,英語の名前がよい。
* データベースを新規作成したいときは,データベースファイル名として「新しい」ものを指定すること
* Ubuntu での実行例(データベースファイル名を「mydb」にする場合)
データベースファイル名である mydb を指定し,「保存」をクリックする。
* データベースファイル名は何でもよいが,英語の名前がよい。
* データベースを新規作成したいときは,データベースファイル名として「新しい」ものを指定すること
6. SQLiteman で既存のデータベースを開く
すでに作成済みのデータベースを,下記の手順で開くことができる。
- sqliteman を起動する。
Windows での操作例
- データベースをオープンしたいので,「File」→「Open」と操作する。
- オープンしたいデータベースのデータベースファイル名(下の図では hoge.db)を選び,「開く」をクリックする。
- データベースの中身が表示されるので確認する。
- テキスト・エンコーディングの設定を確認する。
まず,「Pragmas」をクリックする。
encoding の行に「UTF-8」のように表示されている。
* もし,データベースの文字のエンコーディングを変えたいときは, SQLiteman のようなグラフィカルなツールを使うのではなく, sqlite3 を起動し「PRAGMA encoding=...;」で変える方が簡単である。 例えば「UTF-16le」などに変えたい場合である。
- もしテーブルを作成済みならば,「Tables」を展開すると,テーブルの一覧(List of Tables)が表示されるので確認する。
- もしテーブルを作成済みならば,「System Catalogue」を展開し,「sqlite_master」をクリックすると,データベース・スキーマ(database schema)が表示される。
7. SQL を用いたテーブル定義と一貫性制約の記述
SQL を用いて,order_records テーブルを定義し,一貫性制約を記述する。
リレーショナル・スキーマ
order_records(id, year, month, day, customer_name, product_name, unit_price, qty, created_at, updated_at)
- sqliteman を実行する。
- データベースをオープンしたいので,「File」→「Open」と操作する。
- オープンしたいデータベースのデータベースファイル名(下の図では hoge.db)を選び,「開く」をクリックする。
- テーブル定義
SQL 編集画面に,次のような SQL を書く。
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 ) );* 「SQL Editor」のウインドウには,SQL プログラムを書くことができる。
- マウスカーソルを先頭に移して(先頭部分をクリック)から,「実行ボタン(Run SQL)」をクリックする。
- コンソールの確認
エラーメッセージが出ていないことを確認する。
- 「Tables」を展開し,いま定義したテーブル「order_records」をダブルクリックする。すると,テーブル編集画面が開く。テーブルの中身は空である。
これで,テーブル定義がうまくいったことを確認する。
8. SQL を用いたテーブルへの行の挿入
以下の手順で,SQL を用いて order_records テーブルへの行の挿入を行う。
- SQL 文の記述
「insert into ...」は行の挿入である。ここには 4つの SQL 文を書き,「begin transaction」と「commit」で囲む。
* つまり, 挿入の前に begin transaction; を実行し,一連の挿入が終わったら commit; を実行する。
begin transaction; insert into order_records (id, year, month, day, customer_name, product_name, unit_price, qty) values( 1001, 2022, 1, 26, 'kaneko', 'orange A', 1.2, 10 ); insert into order_records (id, year, month, day, customer_name, product_name, unit_price, qty) values( 1002, 2022, 1, 26, 'miyamoto', 'Apple M', 2.5, 2 ); insert into order_records (id, year, month, day, customer_name, product_name, unit_price, qty) values( 1003, 2022, 1, 27, 'kaneko', 'orange B', 1.2, 8 ); insert into order_records (id, year, month, day, customer_name, product_name, unit_price, qty) values( 1004, 2022, 1, 27, 'kaneko', 'orange B', 1.2, 8 ); commit;
insert into には 2つの方法がある。* 属性の値を,テーブル定義の順にすべて並べる。
insert into order_records values( 1, 2022, 1, 26, 'kaneko', 'orange A', 1.2, 10, datetime('now', 'localtime'), datetime('now', 'localtime') );* 属性の値の並び方を,属性名を使って明示的に指定する。
このとき,属性値を省略すると,テーブル定義のときに指定されたデフォルト値が使われる。
insert into order_records (year, month, day, customer_name, product_name, unit_price, qty) values( 2022, 1, 26, 'miyamoto', 'Apple M', 2.5, 2 ); - 複数の SQL 文の一括実行
複数の SQL 文を一括実行したいので,カーソルを先頭行に移動した後に,「Run multiple SQL statements ...」のボタンをクリックする。
- 「Script Output」ウインドウの確認
エラーメッセージが出ていないことを確認する。
9. 一貫性制約に違反する更新ができないことの確認
ここでは,一貫性制約に違反するような更新を試みる。データベース管理システムソフトウェアが一貫性を維持するので, 一貫性制約に違反するような更新はできない。
主キー制約(PRIMARY KEY)
begin transaction;
insert into order_records (id, year, month, day, customer_name, product_name, unit_price, qty) values( 1003, 2018, 4, 30, 'kaneko', 'orange A', 1.2, 3 );
ROLLBACK;
* すでに属性 id には 1003 という値がある。 主キー制約「PRIMARY KEY」に違反する。
非空制約(not null)
begin transaction;
insert into order_records (id, year, month, day, customer_name, product_name, unit_price, qty) values( 1005, 2018, 4, 30, NULL, 'orange A', 1.2, 3 );
ROLLBACK;
* 非空制約「not null」により, 属性 customer_name には NULL を入れることができない。
その他の一貫性制約
一貫性制約に違反する例
begin transaction;
insert into order_records (id, year, month, day, customer_name, product_name, unit_price, qty) values( 1006, 1009, 10, 30, 'kaneko', 'orange A', 1.2, 3 );
ROLLBACK;
* 制約「CHECK ( year > 2008 )」に違反する。
10. SQL 問い合わせの発行と評価結果の確認
ここでは,SQL を用いた問い合わせの実行例を示す。 SQL 問い合わせの詳細については,別の Web ページで説明する。ここでは,テーブルの中身を確認してほしい。
テーブルのすべての行の表示
SELECT * FROM order_records;
条件を満足する行のみの表示
SELECT * FROM order_records WHERE product_name = 'orange B';
SELECT * FROM order_records WHERE customer_name LIKE 'k%';
LIKE は文字列のパターンマッチである。
SELECT * FROM order_records WHERE qty >= 10;
SELECT * FROM order_records WHERE qty < 10 AND customer_name = 'kaneko';
11. SQL を用いた更新
SQL を用いたデータの更新(update)の実行例を示す。 「UPDATE <table-name> SET <attribute-name>=<expression> WHERE <expression>」の形をした SQL は,データの更新である。 この SQL 文を「begin transaction」と「commit」で囲む。
- SQL 文の記述
「UPDATE ... SET ...」は更新である。ここには 1つの SQL 文を書き, 「begin transaction」と「commit」で囲む。
begin transaction; UPDATE order_records SET qty=12 WHERE id = 1001; commit;
- 複数の SQL 文の一括実行
複数の SQL 文を一括実行したいので,カーソルを先頭行に移動した後に,「Run multiple SQL statements ...」のボタンをクリックする。
- 「Script Output」ウインドウの確認
エラーメッセージが出ていないことを確認する。
- order_records テーブルのブラウズ(Browse table 'order_records')
12. SQL を用いた行の削除
SQL を用いた行の削除(delete row(s))の実行例を示す。
「DELETE FROM <table-name> WHERE <expression>;」の形をした SQL は行の削除である。 この SQL 文を「begin transaction」と「commit」で囲む。
- SQL 文の記述
begin transaction; DELETE FROM order_records WHERE id = 1002; commit;
- 複数の SQL 文の一括実行
複数の SQL 文を一括実行したいので,カーソルを先頭行に移動した後に,「Run multiple SQL statements ...」のボタンをクリックする。
- 「Script Output」ウインドウの確認
エラーメッセージが出ていないことを確認する。
- order_records テーブルのブラウズ
13. SQLiteman を用いたデータのブラウズ
-
まず,オブジェクト・ブラウザ(Object Browser)の中の「Tables」を展開する。
- 次に,テーブル order_records を選ぶ(Select table 'order_records')。
- テーブル order_records が表示される(table 'order_records' appears)。
* もし,データに間違いがあれば,このウインドウで修正できる (If you find any mistakes, you can modify the data using this window)。
- 行を削除したいときは,左端の行番号をクリックした後,「この行を削除」を選ぶ。
14. テーブルの CSV ファイル形式データのインポート(Import table data)
- CSV ファイルを準備しておく。
ここで使用する CSV ファイル: 580.csv
-
「Database」→「Import Table Data ...」と操作する。
- インポート先のテーブル名とファイル名を設定し,「Comma」を選び,
下側のプレビュー画面を確認したのち,「OK」をクリックする。
15. 日本語を試してみる
テーブルのデータとして日本語を試す(属性名やテーブル名を日本語にするわけではない)。
- 「① ② I Ⅱ ㍉ ㌢ ㈱」は Shift_JIS にはなく,Shift_JIS を拡張した文字コードセットである Windows-31J にある。
- 「‖ 〜 − ¢ £ ¬」は Shift_JIS, EUC-JP, ISO-2022-JP では同じ文字コードなのに Windows-31J では違う文字コードである。
- 「表 十 構」は Shift_JIS では 2 バイト目が「5C」になっているものである。
- SQL 文の記述
create table JANCHAR ( id integer primary key not null, bunsyou text ); begin transaction; insert into JANCHAR values( 1, 'コンニチハ' ); insert into JANCHAR values( 2, '① ② I Ⅱ ㍉ ㌢ ㈱' ); insert into JANCHAR values( 3, '‖ 〜 − ¢ £ ¬' ); insert into JANCHAR values( 4, '表 十 構' ); insert into JANCHAR values( 5, '〒' ); commit;
- 複数の SQL 文の一括実行(Execute multiple SQL statements)
複数の SQL 文を一括実行したいので,カーソルを先頭行に移動した後に,「Run multiple SQL statements ...」のボタンをクリックする。
- 「Script Output」ウインドウの確認
エラーメッセージが出ていないことを確認する。
- JANCHAR テーブルのブラウズ(Browse table 'JANCHAR')