SQLite3メモ


SQLite3メモ

MySQLのお守りに疲れてきたので最近はSQLiteに浮気しています。
ずいぶん独特な考え方のDBMSだったので、忘れないようにメモ。

データ型

SQLiteのデータ型は5種類しかない。

NULL, INTEGER(整数), REAL(浮動小数点), TEXT(文字列), BLOB(バイナリ)

カラムの型

テーブルを作成するときのカラムには型を指定しなくても良い。

CREATE TABLE test(id, name, comment, created_at);

指定しないとどんな型でも自由に入る。他のDBMSとの互換性を考えて型は指定したほうが良いが、あくまで気休め程度で、「VARCHAR(255)」型でも255文字以上入るし、「INTEGER」型に文字列を挿入することもできる。

互換性を考えた例
CREATE TABLE test(
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  name VARCHAR(255) NOT NULL,
  comment TEXT,
  created_at TIMESTAMP DEFAULT (DATETIME('now','localtime'))
);

「AUTOINCREMENT」を付加すると連番になる。

「DEFAULT (DATETIME('now','localtime'))」を付加するとデフォルト値として現在時刻が挿入される。「DEFAULT CURRENT_TIMESTAMP」でも良いがUTC時刻になるので使いにくい。