SQLiteをとりあえず使ってみる

以下の環境を対象にしています。

SQLiteのインストール

ダウンロードページからSQLiteのコマンドツールと(今回は使用しませんが)ライブラリをダウンロードします。Precompiled Binaries For Windows セクションにあるsqlite-shell-win32-x86-3071100.zipとsqlite-dll-win32-x86-3071100.zipをクリックしてダウンロードします。

f:id:chorusde:20120522065946p:image:w500

ダウンロードしたzipファイルを解答して得られたsqlite3.exeとsqlite3.dllを任意の場所に配置します(例:C:\SQLite)。今後様々なプログラムで使用する場合は配置したディレクトリへのパスを通しておきます。

データベースの作成

sqlite3.exeコマンドラインツールを使用してSQLiteデータベースを管理することができます。

まずは以下のコマンドを実行すると、指定したデータベース名のデータベースに接続します。データベースが存在しない場合は新規に作成します。

sqlite3 [データベース名]

例:

C:\SQLite>sqlite3 ./db/test.db
SQLite version 3.7.11 2012-03-20 11:35:50
Enter ".help" for instructions
Enter SQL statements terminated with a ";"

上記の例の場合、"C:\SQLite\db\test.db"にデータベースファイルが作成されます。

現在接続されているデータベースを確認するには以下のコマンドを実行します。

.database

例:

sqlite> .database
seq  name             file
---  ---------------  ---------------------------------
0    main             C:\SQLite\db\test.db

コマンドツールを終了するには以下のコマンドを実行します。

.exit

上記の一連のコマンドを実行すると"C:\SQLite\db\test.db"データベースファイルが作成されています。ちなみにデータベースを作成しただけで何もせずに.exitするとデータベースファイルは作成されないようです。

テーブルの作成

作成したtestデータベースに再度接続し、テーブルを作成します。テーブルを作成するには以下のコマンドを実行します(詳細はこちら)。

CREATE TABLE [テーブル名] ([列名1 データ型], [列名1 データ型],,,)

例:

C:\SQLite>sqlite3 ./db/test.db
SQLite version 3.7.11 2012-03-20 11:35:50
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> CREATE TABLE people (
   ...> id INTEGER PRIMARY KEY,
   ...> name TEXT,
   ...> age INTEGER
   ...> );
sqlite> .table
people

SQLiteでは列自体にデータ型を指定する必要はありません(一つの列に異なる型が格納される可能性がある)。ただしデータ型を指定すると、値を格納する際に指定されたデータ型に変換が試みられます。1列目(ID列)の様に"[列名 INTEGER PRIMARY KEY]"と指定すると自動採番の主キーを作成してくれます。また、".table"コマンドにより、データベース内のテーブルを表示できます。

列の作成

作成したpeopleテーブルに行を挿入します(詳細はこちら)。

INSERT INTO [テーブル名](列名1,列名2) VALUES([列1値], [列2値],,,);

例:

sqlite> INSERT INTO people(name, age) VALUES('アッガイ', 38);
sqlite>
sqlite> SELECT * FROM people;
1|アッガイ|38
sqlite>
sqlite> .explain on
sqlite>
sqlite> SELECT * FROM people;
id    name           age
----  -------------  ----
1     アッガイ       38

この辺は普通のSQLと同じですね。今回の例では自動採番のID列を作成したので、明示的に値を挿入する列名を指定しています。また上記の例では".explain on"をして列名が表示されるようにしています。