はとのーと

エジソンノート(アイデア、思い付き、メモ)として使っています。誰かの役に立つかもしれないので公開しています。

SQLite3についてのメモ

(2019-01-21更新)

基本のデーター型

データー型を指定してもどのフィールドにもどんな値でも格納できる。 格納時にはなるべく指定された型に変換しようとする。

主キーの付け方

CREATE TABLE table1 (
  id INTEGER PRIMARY KEY,
  ...
);
CREATE TABLE table1 (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  ...
);

AUTO INCREMENT指定による違い

  • AUTO INCREMENTなし - 当該列に現在格納されている最大値+1が入る
    • 最新行が削除された時→同じ値が使われる
  • AUTO INCREMENTあり - 当該列に過去も含めて格納されていた最大値+1が入る
    • 最新行が削除された時→新しい値が使われる

参照: AUTOINCREMENTを設定する場合としない場合の違い | SQLite入門

NOT NULL, デフォルト値の付け方

CREATE TABLE table1 (
  ...
  name TEXT NOT NULL,
  type INTEGER NOT NULL DEFAULT 0
);

日付型は存在せずテキストとして扱われる

日付時刻型が存在しないが、UTC形式のテキスト型で格納される。

テキスト型のフィールドからの出し入れ時に関数を使うことで日付として扱う。

SELECT date('2017-12-05'); --文字列から日付へ
SELECT datetime('2017-12-05'); --文字列から日付時刻へ
SELECT strftime('%Y-%m', date('2017-12-05')); --文字列から日付へ、それを文字列へ

参照: SQLiteで日付時刻を扱う際のポイント - Qiita