sqliteは、C/C++,Java,PHP,Perl等で利用できる軽量データベースであり、MacOS, iOS, Android等に標準搭載されています。Windows, Linuxでもインストールすれば利用可能です。また、.NET環境で利用できるSystem.Data.SQLiteもあります。
今回は、Linux環境でsqliteのコマンドをたたいてデータベースを操作する方法を紹介します。
関連記事)
.NET環境でSQLiteを使う方法についてはSystem.Data.SQLiteデータベース基本操作 その1 基本コマンド(C#)をご参照下さい。
環境的なこと
本ブログ記事ではロリポップ!のレンタルサーバで各種コマンドを実行しましたが、
特にレンタルサーバでなくてもsqliteが入っているLinuxマシンであれば基本的な手順は変わりません。
なお、ロリポップ!のチカッパプランならSSHでレンタルサーバにログインできます。
SSHについてはSSHについて- ロリポップ!を参照して下さい。
データベース作成
sqlite3 の後にデータベースファイル名を指定します。
指定したファイルがない場合は新規作成となります。
ここではdb_test.sqlite3というファイルを新規作成します。
-bash-3.2$ sqlite3 db_test.sqlite3 SQLite version 3.3.16 Enter ".help" for instructions sqlite> sqlite>
プロンプトがsqlite>に変わり、コマンドモードに入りました。
このコマンドモードから抜けるには.exitコマンドを実行します。
SQLite version 3.3.16 Enter ".help" for instructions sqlite> sqlite>.exit sqlite> -bash-3.2$ -bash-3.2$
以下のようにdb_test.sqlite3というファイルが作成されたことを確認できます。
-bash-3.2$ -bash-3.2$ ls -al total 16 drwxr-xr-x 2 マシン名 User名 4096 Jan 19 08:39 . drwx---r-x 19 マシン名 User名 4096 Jan 19 07:48 .. -rw-r--r-- 1 マシン名 User名 0 Jan 19 08:39 db_test.sqlite3 -bash-3.2$ -bash-3.2$
このファイルごと別マシンに移動したり、バックアップをとったりと取り扱いが便利です。
もちろん、間違って削除しないように注意が必要です。
テーブル作成
CREATE TABLE テーブル名 ( カラム名 型 , カラム名 型 の繰り返し,,, ) で作成します。
今回は名前と年齢を格納するいわゆる名簿のようなテーブルtest_tableを作成してみます。
カラム名 | 型 |
id | 整数型 |
name | 文字列型 |
age | 整数型 |
sqlite> CREATE TABLE test_table ( id INTEGER PRIMARY KEY AUTOINCREMENT, name varchar(128) ,age INTEGER);
idはプライマリキーとしています。
なお、AUTOINCREMENTを指定すると、レコードの追加操作時にidを省略しても自動で他のidと被らないidを付与してくれます。
.tableコマンドでデータベース内に存在するテーブルを確認できます。
sqlite> .table test_table
レコード挿入
テストレコードを挿入してみましょう、INSERTコマンドで挿入できます。
INSERT INTO テーブル名 ( カラム名 , カラム名 の繰り返し,,,) VALUES( 値, 値 の繰り返し,,,);
sqlite> INSERT INTO test_table ( id , name , age ) VALUES( 1, "test", 99);
なお、idはプライマリキーなので重複した値を指定すると怒られます。
sqlite> INSERT INTO test_table ( id , name , age ) VALUES( 1, "test1", 15); SQL error: PRIMARY KEY must be unique
また、テーブル名の後のカラム名は自明ならば省略できます。
sqlite> INSERT INTO test_table VALUES( 2, "test2", 99);
なので通常、プライマリキーであるidは常に省略してSQLiteに値の管理を任せるのが楽です。
sqlite> INSERT INTO test_table ( name, age ) VALUES( "test3", 101);
レコード問い合わせ
挿入したレコードがテーブルに格納されているか確認しましょう。
以下はSELECTコマンドでテーブルに含まれる全てのレコードを問い合わせています。
挿入時に値を省略したid値も3で格納されていることが確認できます。
sqlite> SELECT * from test_table; 1|test|99 2|test2|99 3|test3|101
レコードの更新
UPDATEコマンドですでに挿入済みのレコードの値を更新できます。
更新するレコードの条件はWHEREで指定します。
sqlite> UPDATE test_table SET name="hogehoge" WHERE id = 2; sqlite> SELECT * from test_table; 1|test|99 2|hogehoge|99 3|test3|101
レコードの削除
DELETEコマンドで削除出来ます。削除するレコードの条件はWHEREで指定します。
sqlite> sqlite> DELETE from test_table WHERE id = 3; sqlite> SELECT * from test_table; 1|test|99 2|hogehoge|99
以上、Linuxからsqliteコマンドを叩いてデータベースを操作する手順でした。
【ブログ更新 】 sqliteコマンド データベース基本操作 (Linux) http://t.co/BVskyJjn 直接コマンドを叩いてデータベースを操作する方法です。