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時刻になるので使いにくい。