SQLiteで扱えるデータ型とは

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

SQLiteのデータ型は全5種類あります。MySQLと比較すると型も少なく、設定も最小限で運営できるSQLite。以下では型の種類やデータベースの設計についてカンタンにご紹介させていただきます。

SQLiteで扱えるデータ型とは

データ型を指定しなければ「どんな型でも入ってしまう」のもSQLiteの特徴です。型を指定しなくてもテーブルを作成できるため指定がない場合は「テキスト・整数・小数点など」何でも保存できます。

データ型
TEXT 一般的な文字列
INTEGER 整数
REAL 浮動小数点
BLOB 入力データのまま
NULL NULL値

型を指定せずにテーブルが作成できる点は「バグの原因」にもなりえます。0.1は小数点でREAL型、1は整数なのでINTEGER型に自動変換されて値と一緒に型の情報が格納される仕組みとなっています。

以下はデータベース内にREAL型を格納した例です。真ん中の列に「浮動小数点」が入っていますよね。

ちなみに整数(1)が入っている列は「INTEGER型」を指定しています。

型の指定とNOT NULL制約

バグを抑えるには「SQLiteではテーブル作成時に型を指定」するのがおすすめです。MySQLと比べるとデータ型も少ないので悩む場面は少ないかもしれません。以下が型を指定するSQL文となります。

CREATE TABLE table_name(
	field_name1 INTEGER PRIMARY KEY,
	field_name2 REAL,
	field_name3 TEXT DEFAULT (datetime(CURRENT_TIMESTAMP,'localtime'))
)

NULL値を保存不可(NOT NULL)とする場合は以下を追加すればOKです。

CREATE TABLE table_name(
	field_name1 INTEGER NOT NULL PRIMARY KEY,
	field_name2 REAL NOT NULL,
	field_name3 TEXT NOT NULL DEFAULT (datetime(CURRENT_TIMESTAMP,'localtime'))
)

データ登録が必須ならNULL値は必要ないので「NOT NULL」はつけておくのがベスト。とはいえ「NULLは不要なのか?」と言われるとそうでもありません。もし値の入力が必須ではないフィールドが存在しているのであれば素直に「NOT NULLを外す」のが良さそうですね。登録するデータがないからと言ってダミーでレコードを入れたり、とりあえず「0」を入れる等であれば初めからNOT NULL制約を設定しておきましょう。

まとめ

SQLiteは機能がシンプルなだけに自動変換も多く処理を追いかけづらいですね。ただ逆に考えるとあまりデータ型を意識しなくても使える点はメリットとも言えます。PHPの柔軟性と似ていて相性も抜群。

最終的には何度も検証を繰り返して自分なりの組み上げ方を確定するのが安全かもしれません。小規模なウェブサイトであればMySQLを準備しなくてもSQLiteで代用することができます。細かな使い方はMySQLと比べると少し勝手が違うのでさままざまなパターンでテストを行うことをおすすめいたします。

本記事がデータベース設計のご参考になれば幸いです。

【今すぐ無料プラグインを手に入れる】
無料ダウンロードはこちら

ワードプレス専門家に丸投げする

WPホームページ研究所はワードプレスを中心としたブログ作成・ホームページ制作・オウンドメディア構築・プラグイン設定・調整など幅広いカスタマイズに対応しております。 記事の掲載情報はもちろんお好みの機能をいただければ専属スタッフが心を込めて対応させていただきます。まずはお気軽にお問い合わせくださいませ。

お問い合わせの種類をお選びください(もっとも近い項目)

法人の場合は法人名とご担当者のお名前をご入力ください

返信時のご連絡に利用するメールアドレスをご入力ください

運営中のウェブサイトURLがあればご入力ください

お困りの内容があれば詳しい内容をお聞かせください