こちょこちょブログ

プログラミングとか学んだことの備忘録ブログです。

SQLiteの注意点3つ!テーブル作成と同時にINDEX貼れないetc

最近SQLiteを触っています。

f:id:kmatz90:20150617185118p:plain

基本的な構文などは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とほぼ同じです。

 

SQLiteiOSやAndoridのアプリでも使うデータベースなだけに、

今後も使うことがありそうなので、

1度覚えたら忘れないようにしたいですね。

SQLite ポケットリファレンス

SQLite ポケットリファレンス