SQLのデータ型
SQLで扱うデータには、そのデータの種類を表す「データ型」があります。テーブル内の列(フィールド)にも型があり、それぞれの列に型に合ったデータが格納されます。SQLには大きく分けて4つのデータ型があり、その中でさらに細かい型に分かれています。データ型の呼び方はデータベースによって異なり、データベース独自の型もあります。ここでは、SQL-92規格での呼び名を使うことにします。
名前や住所などの文字を格納します。文字には、1バイト文字(英数字、キゴウなど半角文字)と2バイト文字(ひらがな、カタカナ、漢字などの全角文字)の2種類があり、文字数をバイト単位で数えるか、文字単位で数えるかによってデータ型が分かれます。また、保存方法が固定長か可変長かによってもデータ型が分かれます。固定長は決められたサイズのデータ領域を確保し、それ以上の文字列は格納できず、余った分は空白になります。一方可変長は格納する文字列によってサイズが変わるので、データの無駄が生じません。
データ型 説明 CHAR 固定長、バイト単位 VARCHAR 可変長、バイト単位 NCHAR 固定長、文字単位 NCHARCARYING 可変長、文字単位 IDや金額などの数値を格納します。数値型には整数、概数、真数の3種類の格納方法があります。
整数は小数点を含まない数値型で、他の方よりも扱える数値の範囲がやや狭くなります。
概数は、数値を仮数部と指数部に分けて表現します。指数部の指定によって小さな値から大きな値案で管理できますが、仮数部の制度以上の数値を保存すると丸め処理が行われ、誤差を生じることがあります。制度は標準、倍精度、高精度と型によって異なります。
真数は概数に似ていますが、狩数部の有効桁を自分で定義できる点が異なります。格納する値が収まるように有効桁を増やせばいいので、概数と違って誤差を生じることはありません。
数値型の中には次のデータ型が含まれます。
データ型 説明 INT 整数 SMALLINT 整数、INTよりも範囲が小さい FLOAT 概数、標準 REAL 概数、倍精度 DOUBLEPRECISION 概数、高精度 NUMBER、DECIMAL 真数日付(年月日)、時刻(時分秒)、ゾーンを格納します。ゾーンとは、日付のGMT(グリニッジ標準時)やUTC(世界標準時)といった基準時刻の種類です。文字列型でも、日付を保存することはできますが、この型を使えば格納する日付が実世界で有効かどうかを調べることができます。日付型は、保存する内容によっていくつかに分かれています。
データ型 説明 DATE 日付 TIME 時刻 TIMESTAMP 日付、時刻 TIME WITH TIMEZONE 時刻、ゾーン TIMESTAMP WITH TIMEZONE 日付、時刻、ゾーン 0と1で表現される数値を保存する型です。固定長か可変長かによってデータ型が分かれます。数値型でビット値を表現することができるので、通常は1桁で定義し、真(1)、儀(0)の論理値として扱います。
データ型 説明 BIT 固定ビット BITVARYING 可変長ビット