TOP書籍連動> インストールと基本操作(2)
まるごと PHP!
まるごと PHP!

Part2:トライ!SQLite(1)

著者:桝形誠二(MASUGATA, Seiji)   2005/3/2
前のページ  1  2
インストールと基本操作(2)

   まず、作成したテーブルにレコードを追加して検索してみます。正しい記述であれば検索結果が返ってくるでしょう(図2)。
図2:レコードの追加と確認
sqlite> create table test_auto ( no1 INTEGER PRIMARY KEY,no2 );
sqlite> insert into test_auto (no2) values('test1');
sqlite> insert into test_auto (no2) values('test2');
sqlite> insert into test_auto (no2) values('test3');
sqlite> insert into test_auto (no2) values('test4');
sqlite> select * from test_auto order by no1;
1|test1
2|test2
3|test3
4|test4
sqlite>#

   しかし、このままでは少々そっけないので、出力形式を変更してみましょう(図3)。

図3:出力形式の変更
$ sqlite testdb
SQLite version 2.8.14
Enter ".help" for instructions
sqlite> create table test1 ( no1, no2, no3 );
sqlite> create table test2 ( no1 int, no2 varchar(255), no3 varchar(255) );
sqlite> insert into test1 values( 1, 'test1-1', 'test2-1' );
sqlite> insert into test2 values( 'test1-1', 'test2-1', 3 );
sqlite> select * from test1;
1|test1-1|test2-1
sqlite> select * from test2;
test1-1|test2-1|3
sqlite> .header ON
sqlite> select * from test1;
no1|no2|no3
1|test1-1|test2-1
sqlite> .separator ", "
sqlite> select * from test1;
no1, no2, no3
1, test1-1, test2-1
sqlite> .mode line
sqlite> select * from test2;
no1 = test1-1
no2 = test2-1
no3 = 3
sqlite> .mode column
sqlite> select * from test1;
no1no2no3
--------- ---------- ----------
1test1-1test2-1
sqlite>
.header ON
検索結果に項目名がヘッダーとして付与されます。
.separator ", "
各項目間のセパレータが「, 」に変更されます。
.mode line
データベースの行に含まれる各カラムをそれぞれ1行で表示します。各行はカラム名+等号+データという形式になります。レコードが複数存在する場合には、空白行で区切られます。
.mode column
カラムごとに桁をそろえて表示します。既定では各カラムは少なくとも10文字分の幅で、データがこの長さを超える場合には以降の文字は切り捨てられます。「.width "幅" "幅"…」コマンドで調整することもできます。

   一般的ないくつかの操作をざっと挙げてみましょう(図4)。

図4:一般的な操作
sqlite> create table hoge ( foo int not null, bar varchar(255) not null, primary key(foo) );
sqlite> create table huga ( foo int not null, bar varchar(255) not null);
sqlite> .tables
hoge huga test1 test2
sqlite> .schema hoge
create table hoge ( foo int not null, bar varchar(255) not null, primary key(foo) );
sqlite> .schema huga
create table huga ( foo int not null, bar varchar(255) not null);
sqlite> .indices hoge
(hoge autoindex 1)
sqlite> .quit
$
.table
テーブル一覧を参照するにコマンドで、現在登録されているテーブルの一覧が表示されます。
.schema テーブル名
テーブルのスキーマを参照するコマンドです。
.indices テーブル名
インデックス情報を参照するコマンドです。
.output 出力ファイル名
実行結果や検索結果をファイルに書き出すコマンドです。出力先を標準出力に戻す場合は出力ファイル名に"stdout"を指定します。
.quit / .exit
両方とも、プロンプトを終了するコマンドです。

   このほかにもSQLiteに対する特殊なコマンドがいくつか存在します。.helpコマンドを実行すると利用可能なコマンド一覧が出力されるので、参考にしてください(表1)。

表1:利用可能なコマンド一覧
コマンド 説明
databases OPENしているデータベースの名前とファイル名をリスト表示
dump? TABLE? テキスト形式でデータベースの内容をダンプ
echo ON|OFF コマンド内容の表示・非表示を変更
exit SQLiteユーティリティを終了
explain ON|OFF EXPLAINの出力モードを変更(ON/OFFで切り替え)
.header(s) ON|OFF ヘッダーの出力を変更(ON/OFFで切り替え)
.help SQLiteユーティリティで利用できるコマンド一覧を表示
.indices TABLE 指定したテーブルのインデックス一覧を表示
.mode MODE 表示モードの変更("line(s)","column(s)","insert","list","html")
.mode insert TABLE 指定したテーブルのINSERTステートメントを表示
.nullvalue STRING データがNULLの場合、置き換える文字を指定
.output FILENAME 指定したファイル名に結果を出力
.output stdout 結果を標準出力に出力
.prompt MAIN CONTINUE プロンプトの表示内容を変更
.quit SQLiteユーティリティを終了
.read FILENAME 指定したファイル名からSQLを実行
.schema ?TABLE? CREATEステートメントを表示
.separator STRING 出力結果のセパレータの内容を変更("list"モード時)
.show 現在の設定状況を表示
.tables ?PATTERN? パターンにマッチしたテーブルの名前を表示
.timeout MS ロックされたテーブルのタイムアウトを分秒で指定
.width NUM NUM ... 表示する項目の幅を指定("column"モード時)

   ほかのDBMSと同様にクエリをファイルに定義しておいて実行することもできます。コマンドラインユーティリティでsqlite < "ファイル名"を呼び出すか、SQLiteのコマンドプロンプト内で.read "ファイル名"を実行することで、ファイルに定義されているクエリを実行できます。

前のページ  1  2



著者プロフィール
桝形 誠二
様々な言語を経験していく中でPHPと出会い、初心者に易しいという魅力に惹かれ続けて早5年。色んな事をPHPで実装しようとしすぎて周囲の反感を買いやすいのが最近の悩み。


INDEX
Part2:トライ!SQLite(1)
  SQLiteとは?
インストールと基本操作(2)