SQLite | データベース | データベースの作成と接続

SQLite データベースを新しく作成する方法と、作成済みのデータベースに接続する方法について説明します。

データベースの作成

データベースを新しく作成するには、コマンドプロンプトで次のように入力します。

sqlite3 データベース名

たとえば、myfriend.sqlite3 というデータベースを作成するとします。コマンドプロンプトを起動し、sqlite3 ファイルがあるディレクトリへ移動してから、次のように実行します。

$ sqlite3 myfriend.sqlite3
$ sqlite3 myfriend.sqlite3
SQLite version 3.19.3 2017-06-27 16:48:08
Enter ".help" for usage hints.
sqlite>

myfriend.sqlite3 データベースが存在しない場合、新しいデータベース myfriend.sqlite3 が作成され、作成されたデータベースへそのまま接続されます。

データベースに接続された状態なので、テーブルなどをデータベース内に作成できます。何も作成しないとデータベースファイルは実際には作成されないため、ここでは簡単なテーブルを作成してみます。テーブルを作成する詳しい方法は別のページで説明します。

$ sqlite3 myfriend.sqlite3
SQLite version 3.19.3 2017-06-27 16:48:08
Enter ".help" for usage hints.
sqlite> create table customer (id, name);
$

コマンドラインツールを終了するには .exit と入力します。これで接続中のデータベースから切断されます。

.exit

実際に確認してみましょう。まず myfriend.sqlite3 データベースに接続し、.exit を入力します。

$ sqlite3 myfriend.sqlite3
SQLite version 3.19.3 2017-06-27 16:48:08
Enter ".help" for usage hints.
sqlite>.exit
$

次に、sqlite3 が作成したデータベースファイルを確認します。

$ ls
myfriend.sqlite3 sample.sqlite3   sqldiff          sqlite3          sqlite3_analyzer

データベース名として指定した名前と同じ名前のファイルが作成されています。SQLite では、このようにデータベースを作成すると同じ名前のファイルが作成され、データベースに含まれるすべてのデータがこのファイルに保存されます。

また、sqlite3 ファイルがあるディレクトリ以外の場所にデータベースファイルを作成したい場合は、次のようにパスと一緒に指定します。

sqlite3 パス/データベース名

たとえば、絶対パス /Users/devkuma/sqlite/test ディレクトリに sample.sqlite3 データベースを作成するには、次のように実行します。

$ sqlite3 /Users/devkuma/sqlite/test/sample.sqlite3

データベース名について

データベース名には任意の名前を指定できます。先ほどは myfriend.sqlite3 と指定しましたが、どのような形式でもかまいません。

myfriend
myfriend.db
myfriend.sqlite
myfriend.sqlite3

データベースを作成すると、SQLite はデータベース名と同じ名前のファイルを作成してデータを保存します。たとえばデータベース名が myfriend の場合、作成されるファイル名も myfriend となり、拡張子のないファイルが作成されるため、後から見たときに何のファイルなのか分かりにくくなります。

そのため、データベース名を決めるときは、データベースが保存されるファイル名も考慮して指定するとよいでしょう。一般的にどの拡張子が使われるかはいくつかありますが、ここでは .sqlite3 拡張子に統一します。

データベースへの接続

データベースに対してさまざまな操作を行うには、まずデータベースに接続する必要があります。新規データベースを作成した場合は作成と同時に接続されますが、すでに作成済みのデータベースに接続するには、コマンドプロンプトで次のように入力します。

sqlite3 データベース名

見て分かるように、新しいデータベースを作成するときと同じ形式です。引数にすでに存在するデータベース名を指定すると、新しいデータベースは作成されず、引数に指定したデータベースに接続されます。

それでは、先ほど作成した myfriend.sqlite3 データベースに接続してみましょう。コマンドプロンプトを起動し、sqlite3 があるディレクトリへ移動してから、次のように実行します。

$ sqlite3 myfriend.sqlite3
$ sqlite3 myfriend.sqlite3
SQLite version 3.19.3 2017-06-27 16:48:08
Enter ".help" for usage hints.
sqlite>

新しいデータベースが作成されたのではなく、既存のデータベースに接続されていることを確認するため、既存のデータベースに作成したテーブルを .tables コマンドで確認します。

.tables

実際に確認してみましょう。まず myfriend.sqlite3 データベースに接続し、.tables を入力します。

$ sqlite3 myfriend.sqlite3
SQLite version 3.19.3 2017-06-27 16:48:08
Enter ".help" for usage hints.
sqlite> .tables
customer
sqlite>

customer テーブルが作成されていることを確認できます。このように、新しいデータベースを作成する場合と既存のデータベースに接続する場合は、同じコマンドと同じ形式を使うため注意してください。