SQLiteで利用可能なデータ型

広告

テーブルには値を格納するためのカラムを定義しますが、どのカラムにどのような値を格納するかに応じてデータ型を指定することができます。ここではSQLiteのカラムで指定可能なデータ型について解説します。

1.格納される値のデータ型
2.カラムのデータ型
3.カラムのデータ型の指定方法

多くのデータベースではカラム毎にデータ型を指定します。その為、カラム毎に格納できる値が決められています。SQLite3ではテーブルを定義する時にカラム毎にデータ型を指定することは必須ではありません。データ型を指定しなかったカラムには色々な型の値が格納されることがあります。

create table personal(id, name);

ただその場合でもカラムに格納された値がどんなデータ型なのかは区別していて「NULL」「INTEGER」「REAL」「TEXT」「BLOB」の5種類のデータ型に分類します。

NULL       NULL値
INTEGER    符号付整数。1, 2, 3, 4, 6, or 8 バイトで格納
REAL       浮動小数点数。8バイトで格納
TEXT       テキスト。UTF-8, UTF-16BE or UTF-16-LEのいずれかで格納
BLOB       Binary Large OBject。入力データをそのまま格納

SQL文に記述された値の記述方法からその値のデータ型を決めています。例えば「'」で囲まれていればTEXT型、小数点も指数も無ければINTEGER型、小数点か指数があればREAL型、などです。

テーブルを作成する時にカラムに対してデータ型を指定するのは必須ではありませんが、指定することもできます。

create table personal(id integer, name text);

SQLite3でカラムに指定できるデータ型は「TEXT」「NUMERIC」「INTEGER」「REAL」「NONE」の5つです。

TEXT
NUMERIC
INTEGER
REAL
NONE

カラムにデータ型を指定した場合でもどのようなデータ型の値でも格納できますが、カラムのデータ型と値のデータ型の組み合わせによっては値のデータ型を変換した上で格納します。変換が行われるケースは次の通りです。

(1)TEXT型のカラムにINTEGERやREALのデータ型の値が格納された場合、TEXT型に変換されてから格納されます。

(2)NUMERIC型のカラムにTEXT型の値が格納された場合、INTEGER型またはREAL型に変換を試みます。成功すればそのデータ型で格納されますが、失敗すればTEXT型のまま格納されます。

(3)INTEGER型のカラムに整数として表せるREAL型の値(例えば34.0など)、又は同じ形式のTEXT型の値が格納された場合、INTEGER型に変換して格納します。

(4)REAL型のカラムにINTEGERの値が格納された場合、REAL型に変換して格納します。

(5)NONE型のカラムの場合は変換は行われません。

SQLite3でカラムに指定できるデータ型は「TEXT」「NUMERIC」「INTEGER」「REAL」「NONE」の5つですが、例えば「integer」の代わりに「int」と指定しても同じ結果となります。これは他のデータベースとの互換性を考えてのことだと思われます。どのような指定方法が可能なのかは次を参照されて下さい。

データ型が文字列「INT」を含む場合「INTEGER」型となります。

create table personal(id int, name text);

データ型が文字列「CHAR」「CLOB」「TEXT」のいずれかを含む場合「TEXT」型となります。

create table personal(id int, name varchar);

データ型が文字列「BLOB」を含む場合、またデータ型が指定されなかった場合は「NONE」型となります。

データ型が文字列「REAL」「FLOA」「DOUB」のいずれかを含む場合「REAL」型となります。

上記のいずれでもない場合は「NUMERIC」型となります。

次のページ以降で具体的に確認を行います。合わせて参照して下さい。

SQLite入門の他の記事を見てみる

( Written by Tatsuo Ikura )