SQLite データ型マスター:REAL型とNUMERIC型を使いこなしてデータ分析を加速
SQLiteにおけるREAL型とNUMERIC型の使い分け
データ型
REAL
: 浮動小数点数型。小数点を含む数値を格納できます。NUMERIC
: 固定小数点数型。小数点以下の桁数を指定できます。
精度
REAL
: 64ビット浮動小数点数。約15桁の有効数字を持つ。NUMERIC
: 最大16桁の整数部と最大38桁の小数部を持つ。
速度
REAL
: 演算速度が速い。NUMERIC
: 演算速度が遅い。
ストレージ
REAL
: データサイズが可変。NUMERIC
: データサイズが固定。
使用例
REAL
: 科学計算や金融計算など、高い精度が求められる場合。NUMERIC
: 通貨計算など、小数点以下の桁数が固定されている場合。
その他
REAL
はIEEE 754規格に準拠。NUMERIC
はODBCやJDBCなどのデータベース接続規格でサポートされている。
- 小数点以下の桁数が固定されていて、高い精度が求められない場合は
NUMERIC
型を使用する。
-- REAL型
CREATE TABLE prices (
product_id INTEGER PRIMARY KEY,
price REAL
);
INSERT INTO prices (product_id, price) VALUES (1, 123.456);
INSERT INTO prices (product_id, price) VALUES (2, 987.654);
SELECT product_id, price FROM prices;
-- NUMERIC型
CREATE TABLE amounts (
product_id INTEGER PRIMARY KEY,
amount NUMERIC(10,2)
);
INSERT INTO amounts (product_id, amount) VALUES (1, 123.45);
INSERT INTO amounts (product_id, amount) VALUES (2, 987.65);
SELECT product_id, amount FROM amounts;
- 上記のコードは、SQLiteデータベースに2つのテーブルを作成します。
prices
テーブルはREAL
型を使用して、商品のIDと価格を格納します。NUMERIC
型の(10,2)
は、整数部が10桁、小数部が2桁であることを指定します。SELECT
ステートメントを使用して、テーブルの内容を表示します。
実行結果
-- prices
1|123.456
2|987.654
-- amounts
1|123.45
2|987.65
REAL
型とNUMERIC
型の使い分けを理解することで、SQLiteデータベースをより効率的に使用することができます。
REAL型とNUMERIC型のその他の違い
丸め処理
REAL
: IEEE 754規格に基づいて丸め処理が行われる。NUMERIC
: 四捨五入または切り捨てを選択できる。
NULL値
REAL
: NULL値を格納できる。
外部キー
REAL
: 外部キーとして使用できる。
インデックス
REAL
: インデックスを作成できる。
組み込み関数
REAL
: 多くの組み込み関数で使用できる。
REAL型とNUMERIC型はそれぞれ異なる特性を持つため、用途に合わせて使い分けることが重要です。
sqlite