ZendFramework入門・番外編1 SQLiteの導入 ― 2007年09月18日 03時06分07秒
Zend Framework入門でデータベースを扱ううえで、ターゲットのDBMSとしてSQLiteを使うつもりなので、「番外編」として、SQLiteコンソールアプリケーションの導入方法と簡単な使い方を説明しておきます。
ここではWindows環境での手順のみ示します。Linuxユーザの方は、ダウンロードするバイナリやパスを環境に合わせて読み替えてください。
入手
公式サイトのダウンロードページ(http://www.sqlite.org/download.html)から入手できます。
「Precompiled Binaries For Windows」セクションの「sqlite-3_4_2.zip」をダウンロードしてください。
※:2007.9.4に3.5.0がリリースされていますが、これは以前のバージョンと互換性がないとアナウンスされています。当然PHP5に標準添付のバージョンとも互換性がないため、3.4.xを使用するようにしてください。
参考:Moving From SQLite 3.4.2 to 3.5.0
インストール
ダウンロードしたアーカイブを解凍すると、中身は単独の実行可能ファイルが1つあるだけです。これをパスがとおっている場所(たとえばC:\WINDOWS)、または任意の場所に設置してください。任意の場所に設置した場合は、環境変数でパスを通すようにしてください。
動作確認
コマンドプロンプトを起動します。(この例はWindows2000の場合です)
Microsoft Windows 2000 [Version 5.00.2195] (C) Copyright 1985-2000 Microsoft Corp. C:\Documents and Settings\dara-j>この状態でコマンド「sqlite3 -help」を入力します。
Microsoft Windows 2000 [Version 5.00.2195] (C) Copyright 1985-2000 Microsoft Corp. C:\Documents and Settings\dara-j>sqlite3 -help Usage: sqlite3 [OPTIONS] FILENAME [SQL] FILENAME is the name of an SQLite database. A new database is created if the file does not previously exist. OPTIONS include: -init filename read/process named file -echo print commands before execution -[no]header turn headers on or off -bail stop after hitting an error -interactive force interactive I/O -batch force batch I/O -column set output mode to 'column' -csv set output mode to 'csv' -html set output mode to HTML -line set output mode to 'line' -list set output mode to 'list' -separator 'x' set output field separator (|) -nullvalue 'text' set text string for NULL values -version show SQLite version C:\Documents and Settings\dara-j>このように、アプリケーションの説明が表示されればOKです。
コマンドが見つからない場合は環境変数をもう一度見直してください。
※:環境変数を設定したら、コマンドプロンプトを起動しなおしてください。
起動してみる
コマンドプロンプトから「sqlite3」と入力すると以下のように起動して入力待ち状態になります。
C:\Documents and Settings\dara-j>sqlite3 SQLite version 3.4.2 Enter “.help” for instructions sqlite>
sqlite3.exeは、このようにコマンドラインベースの対話型アプリケーションで、このままSQLを発行して使用できます。
SQLを発行する以外にユーティリティコマンドも実装されていて、これらはすべて「.」(ピリオド)から始まります。 例えば、「.help」を入力すると、以下のようになります。
C:\Documents and Settings\dara-j>sqlite3 SQLite version 3.4.2 Enter ".help" for instructions sqlite> .help .bail ON|OFF Stop after hitting an error. Default OFF .databases List names and files of attached databases .dump ?TABLE? … Dump the database in an SQL text format .echo ON|OFF Turn command echo on or off .exit Exit this program .explain ON|OFF Turn output mode suitable for EXPLAIN on or off. .header(s) ON|OFF Turn display of headers on or off .help Show this message .import FILE TABLE Import data from FILE into TABLE .indices TABLE Show names of all indices on TABLE .load FILE ?ENTRY? Load an extension library .mode MODE ?TABLE? Set output mode where MODE is one of: csv Comma-separated values column Left-aligned columns. (See .width) html HTML <table> code insert SQL insert statements for TABLE line One value per line list Values delimited by .separator string tabs Tab-separated values tcl TCL list elements .nullvalue STRING Print STRING in place of NULL values .output FILENAME Send output to FILENAME .output stdout Send output to the screen .prompt MAIN CONTINUE Replace the standard prompts .quit Exit this program .read FILENAME Execute SQL in FILENAME .schema ?TABLE? Show the CREATE statements .separator STRING Change separator used by output mode and .import .show Show the current values for various settings .tables ?PATTERN? List names of tables matching a LIKE pattern .timeout MS Try opening locked tables for MS milliseconds .width NUM NUM … Set column widths for “column” mode sqlite>各ユーティリティコマンドの使い方はこちらなどが参考になるでしょう。
ところで、この状態では実はデータベースに接続していない(開いていない)状態なので、どんなクエリを発行してもまったく無意味です。なので、一旦終了させます。
.timeout MS Try opening locked tables for MS milliseconds .width NUM NUM ... Set column widths for "column" mode sqlite> .quit C:\Documents and Settings\dara-j>これでsqliteを終了しました。
新しいデータベースを開く
先の例では、コマンドライン引数をまったく与えずに起動しました。その結果、データベースを開いていない状態になりました。 今度は新しいデータベースを開いて起動してみることにします。
やり方は至極簡単、コマンドライン引数に存在しないファイル名を与えると、それをデータベースとして開きます。 ここでカレントディレクトリ(C:\Documents and Settings\dara-j)に「test.db」というデータベースを作成して開いてみます。
C:\Documents and Settings\dara-j>sqlite3 test.db SQLite version 3.4.2 Enter “.help” for instructions sqlite>一見先ほどとなにも違っていないようですが、これでデータベースを開いていることになります。
まずはテスト用のテーブルを作成してみます。 ピリオドで始まるユーティリティコマンド以外の入力時は、最後に「;」(セミコロン)がつくまでは入力モードのままなので、普通に複数行入力できます。コマンドを確定させる場合に末尾にセミコロンを打ってからEnterしてください。
C:\Documents and Settings\dara-j>sqlite3 test.db SQLite version 3.4.0 Enter ".help" for instructions sqlite> create table t_test( ...> id INTEGER PRIMARY KEY, ...> name VARCHAR(20), ...> regist TIMESTAMP DEFAULT CURRENT_TIMESTAMP ...> ); sqlite>エラーが出ていなければテーブルが作成されているはずです。テーブル一覧は「.tables」コマンドで確認できます。
sqlite> .tables t_test sqlite>先ほどCREATE TABLEした「t_test」が存在することが確認できました。
なお、上記のCREATE TABLEに関して、以下2点補足です。
- 「id」列を「INTEGER PRIMARY KEY」指定しているので、これは暗黙でAUTO INCREMENT列になります。
- 「regist」列はDEFAULT属性で「CURRENT_TIMESTAMP」を指定しています。
sqlite> INSERT INTO t_test ( name ) VALUES ( 'test' );のみで新しいレコードが挿入されます。
「INTEGER PRIMARY KEY」指定で暗黙のAUTO INCREMENT列にするのは、SQLiteでは定番ですので、ぜひ覚えておいてください。
外部SQLコマンドの実行
サンプルコードは示しませんが、「.read」ユーティリティコマンドで外部のSQLファイルを読み込んで実行できます。
たとえば、先ほどのcreate tableをファイルに記述しておいて、「.read <create tableが記述されたファイル>」といった具合に使います。
関連リソース
最後にSQLite関連の代表的なリソースへのリンクを示しておきます。 Mac OS XやFirefox、PHP5、さらにはGoogle Gearsが採用していることもあり、SQLiteに関する情報は以前に比べてよく見つかるようになっているので、適当に検索をしてもよいと思いますが、とりあえずの参考にはなると思います。
SQL As Understood By SQLite
本家のSQL言語リファレンス。
SQLite が認識できるクエリー言語
上記の翻訳版だが、最終更新日が4年前といささか古い。本家のリファレンスを読むときの参考程度に
sqlite: SQLite データベースと会話するプログラム
本編中でも紹介した、コマンドラインユーティリティの説明ページ
rktSQLite : SQLiteのSQLコマンド一覧
一部未説明はあるが、日本語でのコマンド一覧
最近のコメント