最近SQLiteを触っています。
基本的な構文などはMySQLと同じですが、
決まりごとの違いや若干のクセがあるので、メモしておきます。
SQLiteのデータベースはファイルとして生成される
SQLiteはデータベースをファイルとして生成します。
なので、「ファイルを消す=DBを消す」ことになります。
SQLiteをインストールしたら(最近のLinuxはデフォで入ってるぽい)、
以下のコマンドで、DBができあがります。
sqlite3 dbname.sqlite3
上記の「.sqlite3」の部分は何でもいいです。
しかし、拡張子がないと、
のちのち何のファイルか分からなくなる可能性があるので、
慣習的に「.sqlite3」とするようです。
しかし、DBを作成しただけではファイルが作成されません。
DBを作成し、さらにテーブルを作成しなければ、ファイルが生成されないようです。
「DB作ったのにファイルがない!」と焦りました。
ファイル(DB)のパーミッションに注意
PHPなどのプログラムからファイル(DB)にアクセスする場合、
ファイルの権限を考慮しないと、UPDATEやINSERTができません。
これは通常のDBと違うので、ハマるかも。
テーブル作成と同時にINDEXが貼れない
これは意外でした。
MySQLの場合、
「CREATE TABLE」すると同時にインデックスの設定ができたのですが、
SQLiteだと仕様の問題でできないようです。
むしろ、MySQLのように1度にできる方がマイノリティらしいです。
なので、1度テーブルを作成し終わってから、インデックスを貼る必要があります。
CREATE INDEX index_name ON table_name(column1, column2...)
まあ、仕方ないですね。
まとめ
最近使ったコマンドなどをまとめました。
その他、selectなどの命令文はMySQLとほぼ同じです。
SQLiteはiOSやAndoridのアプリでも使うデータベースなだけに、
今後も使うことがありそうなので、
1度覚えたら忘れないようにしたいですね。