29
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
29
Help us understand the problem. What are the problem?