Firebird isql によるデータベース作成と SQL 体験(gsec の解説を含む)
このページでは,Firebird(2026年4月時点の最新版は Firebird 5.0.4)に付属する 対話型コマンドラインツール isql を使い, データベースの新規作成,テーブル定義,データの挿入・検索・更新・削除, トランザクションを体験する. あわせて,旧来のユーザ管理コマンド gsec について説明する.
前準備
- Firebird のインストールが終わっていること: Windows での Firebird のインストール »
- SYSDBA のパスワードが分かっていること: Firebird のパスワード管理 »
- Firebird のサービス「Firebird Server - DefaultInstance」が実行中であること.
以下,Firebird 5.0 の既定のインストール先「C:\Program Files\Firebird\Firebird_5_0」を前提に説明する (Firebird 4.0 の場合は「Firebird_4_0」に読み替える). このディレクトリを Windows の環境変数 PATH に追加すると,フルパスを打たずに実行できる.
【体験1】isql の起動と終了
手順
-
コマンドプロンプトを開く
Windows キーを押し「cmd」と入力し,Enter キーを押す.
-
isql を起動する(データベースに接続しない状態で起動できる)
"C:\Program Files\Firebird\Firebird_5_0\isql.exe"
次のように表示される.
Use CONNECT or CREATE DATABASE to specify a database SQL>
-
ヘルプの表示
HELP;
-
終了
QUIT;
※ QUIT; は未確定の変更をロールバックして終了,EXIT; は未確定の変更をコミットして終了である.
【体験2】データベースの新規作成
ここでは C:\db\mydb.fdb を作る.
手順
-
データベースファイル置き場のディレクトリを作る
Windows キーを押し「cmd」と入力し,Enter キーを押す.コマンドプロンプトで次を実行する.
mkdir C:\db
-
isql を起動する
"C:\Program Files\Firebird\Firebird_5_0\isql.exe"
-
データベースを新規作成する
CREATE DATABASE 'localhost:C:\db\mydb.fdb' USER 'SYSDBA' PASSWORD '<SYSDBAのパスワード>' PAGE_SIZE 8192 DEFAULT CHARACTER SET UTF8;
※ 日本語を扱うため,文字コードは UTF8 を指定する.
※ PAGE_SIZE に指定できる値は 4096,8192,16384,32768 である.既定値は 8192 で,省略してもよい.
-
接続状態の確認
SHOW DATABASE;
Database,Owner,Page size,Default character set などが表示される.
-
isql を終了する
EXIT;
-
既存のデータベースに接続し直す
Windows キーを押し「cmd」と入力し,Enter キーを押す.コマンドプロンプトで次を実行する.
"C:\Program Files\Firebird\Firebird_5_0\isql.exe" -user SYSDBA -password <SYSDBAのパスワード> localhost:C:\db\mydb.fdb
isql の「SQL>」のプロンプトから接続するときは次のようにする.
CONNECT 'localhost:C:\db\mydb.fdb' USER 'SYSDBA' PASSWORD '<SYSDBAのパスワード>';
- 「localhost:」を付けると,Firebird サーバのプロセスがデータベースファイルを開く.付けない(ファイルパスだけの)場合は,組み込み(Embedded)でクライアント側のプロセスが直接ファイルを開く.学習ではサーバ経由(localhost: 付き)を使う.
- 「I/O error」「Permission denied」等のエラーは,ディレクトリが存在しない,または Firebird サーバのプロセスに書き込み権限がないことが原因である.ディレクトリの作成とアクセス権を確認する.
- databases.conf にエイリアス名(例:mydb = C:\db\mydb.fdb)を登録すると「localhost:mydb」で接続できる.登録内容はすぐ有効になり,サーバの再起動は不要である.
【体験3】テーブル定義とデータの挿入・検索・更新・削除
商品テーブル shohin を例に,SQL の基本操作を体験する. mydb.fdb に接続した状態(「SQL>」のプロンプト)で行う.
手順
-
テーブル定義(CREATE TABLE)
CREATE TABLE shohin ( id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, name VARCHAR(40) NOT NULL, price DECIMAL(10, 0) NOT NULL, stock INTEGER DEFAULT 0 NOT NULL, created TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); COMMIT;
※ IDENTITY 列(自動採番)は Firebird 3 以降で使える標準 SQL の機能である.
-
テーブルの確認
SHOW TABLES; SHOW TABLE shohin;
-
データの挿入(INSERT)
INSERT INTO shohin (name, price, stock) VALUES ('りんご', 120, 50); INSERT INTO shohin (name, price, stock) VALUES ('みかん', 80, 100); INSERT INTO shohin (name, price, stock) VALUES ('メロン', 1500, 5); COMMIT; -
検索(SELECT)
SELECT * FROM shohin; SELECT name, price FROM shohin WHERE price >= 100 ORDER BY price DESC; SELECT COUNT(*), AVG(price) FROM shohin;
先頭の数件だけ表示するときは,Firebird 独自の FIRST か,標準 SQL の FETCH を使う.
SELECT FIRST 2 * FROM shohin ORDER BY price DESC; SELECT * FROM shohin ORDER BY price DESC FETCH FIRST 2 ROWS ONLY;
-
更新(UPDATE)
UPDATE shohin SET price = 130 WHERE name = 'りんご'; COMMIT; SELECT * FROM shohin;
-
削除(DELETE)
DELETE FROM shohin WHERE name = 'みかん'; COMMIT; SELECT * FROM shohin;
- 日本語が文字化けするときは,データベース作成時の DEFAULT CHARACTER SET UTF8 の指定を確認し,コマンドプロンプトで「chcp 65001」を実行して文字コードを UTF-8 にする.
- WHERE 句のない UPDATE や DELETE は全行に作用する.COMMIT する前なら,ROLLBACK; で取り消せる.
【体験4】トランザクション(COMMIT と ROLLBACK)
Firebird は多版型同時実行制御(MVCC)を採用している. isql では,データを変更する SQL 文はトランザクションの中で実行され, COMMIT するまで確定しない.
手順
-
全行削除してみる(COMMIT はしない)
DELETE FROM shohin; SELECT COUNT(*) FROM shohin;
件数が 0 になったことを確認する.
-
取り消す(ROLLBACK)
ROLLBACK; SELECT COUNT(*) FROM shohin;
件数が元に戻ったことを確認する.
- ROLLBACK でデータが元に戻る仕組み.MVCC では,更新前のレコードの版が残されており,未コミットの変更は他のトランザクションから見えない.
- isql を2つ起動して同じデータベースに接続し,一方で INSERT(未 COMMIT)した行が他方から見えるかどうかを実験する(トランザクション分離).
【体験5】SQL スクリプトファイルの実行と結果の保存
手順
-
メモ帳などで,次の内容のファイル C:\db\test.sql を作る(文字コードは UTF-8 で保存)
SELECT * FROM shohin;
-
コマンドプロンプトから一括実行する
Windows キーを押し「cmd」と入力し,Enter キーを押す.コマンドプロンプトで次を実行する.
"C:\Program Files\Firebird\Firebird_5_0\isql.exe" -user SYSDBA -password <SYSDBAのパスワード> localhost:C:\db\mydb.fdb -i C:\db\test.sql
※ 接続情報をコマンドラインで指定すれば,スクリプトファイルにパスワードを書かずにすむ.
-
結果をファイルに保存するときは -o を付ける
"C:\Program Files\Firebird\Firebird_5_0\isql.exe" -user SYSDBA -password <SYSDBAのパスワード> localhost:C:\db\mydb.fdb -i C:\db\test.sql -o C:\db\result.txt
【解説】gsec について(Firebird 3 以降は非推奨)
gsec は,Firebird 2.5 以前でユーザ管理(ユーザの追加・削除・パスワード変更)に使っていた専用コマンドである. Firebird 3 以降では非推奨(deprecated)である. gsec は複数のセキュリティデータベースを扱えず, firebird.conf の UserManager に並べたユーザ管理プラグインのうち先頭の 1 つだけを使う. Firebird 3 以降は,isql から SQL 文でユーザ管理を行う.
- ユーザ一覧:
SELECT SEC$USER_NAME FROM SEC$USERS; - ユーザ追加:
CREATE USER user1 PASSWORD '<パスワード>'; - パスワード変更:
ALTER USER user1 SET PASSWORD '<新パスワード>'; - ユーザ削除:
DROP USER user1;
手順と体験は, Firebird のパスワード管理のページ » にまとめている.
【参考】isql と一緒によく使う付属コマンド
- gbak:バックアップと復元.
gbak -b -user SYSDBA -password <パスワード> localhost:C:\db\mydb.fdb C:\db\mydb.fbk gbak -c -user SYSDBA -password <パスワード> C:\db\mydb.fbk localhost:C:\db\mydb2.fdb
- nbackup:データベースを停止せずに増分バックアップを行う.
- gstat:データベースの統計情報の表示.
- gfix:データベースの検証・修復・各種設定の変更.
考察ポイント(まとめ)
- Firebird のデータベースは通常 1 つのファイルである.この設計が,バックアップや配布の面で持つ利点・欠点を SQLite 3 と比較する.
- COMMIT を明示的に行う方式(isql の既定)と,文ごとに自動で COMMIT する方式(多くの GUI ツールの既定)のそれぞれの利点・危険性.
- IDENTITY 列(自動採番)と,ジェネレータ(シーケンス)+ トリガによる採番との違い.