SQLiteの整数データ型徹底解説:int、integer、bigintの違いとは?
SQLiteの整数データ型の違い:int、integer、bigintなど
int
と integer
は完全に同じ意味を持ち、どちらも32ビットの整数値を格納できます。つまり、-2,147,483,648から2,147,483,647までの値を格納できます。
bigint
は64ビットの整数値を格納できます。つまり、-9,223,372,036,854,775,808から9,223,372,036,854,775,807までの値を格納できます。これは int
や integer
よりも大きな範囲の値を格納できるため、大きな数値を扱う必要がある場合に役立ちます。
その他の整数データ型
SQLiteには、smallint
や tinyint
などの他の整数データ型も用意されています。これらのデータ型は、それぞれ異なるビット幅を持ち、格納できる値の範囲や精度が異なります。
データ型の選択
どの整数データ型を使用するかは、格納したい値の範囲や精度によって異なります。一般的な目安としては、以下の通りです。
- 小さな数値 (例: 主キー) の場合は
smallint
またはtinyint
- 中程度の数値 (例: 人口) の場合は
int
またはinteger
- 大きな数値 (例: 金額) の場合は
bigint
まとめ
SQLiteの整数データ型は、int
、integer
、bigint
などが代表的です。これらのデータ型はそれぞれ異なる意味を持ち、格納できる値の範囲や精度が異なります。どのデータ型を使用するかは、格納したい値の範囲や精度によって異なります。
import sqlite3
# データベースへの接続
conn = sqlite3.connect("sample.db")
c = conn.cursor()
# テーブルの作成
c.execute("""
CREATE TABLE IF NOT EXISTS sample (
id INTEGER PRIMARY KEY AUTOINCREMENT,
small_value SMALLINT,
int_value INTEGER,
bigint_value BIGINT
);
""")
# データの挿入
c.execute("""
INSERT INTO sample (small_value, int_value, bigint_value)
VALUES (123, 456789, 9223372036854775807);
""")
# データの取得
c.execute("""
SELECT * FROM sample;
""")
for row in c.fetchall():
print(row)
# データベースのクローズ
conn.close()
このコードを実行すると、以下の出力が得られます。
(1, 123, 456789, 9223372036854775807)
この出力から、small_value
は 123
という小さな値、int_value
は 456789
という中程度の値、bigint_value
は 9223372036854775807
という大きな値を格納していることが確認できます。
SQLiteの整数データ型の違いを検証する他の方法
SQLite GUIツールを使用すると、データベース内のデータを視覚的に確認することができます。多くのSQLite GUIツールは、データ型ごとに異なる色で表示する機能など、データ型の違いを分かりやすく確認できる機能を備えています。
SQLコマンド
PRAGMA table_info()
コマンドを使用すると、テーブルの各列のデータ型を確認することができます。
PRAGMA table_info(sample);
cid | name | type | notnull | dflt_value | pk
-----|------|------|---------|-----------|-----
0 | id | INTEGER | 0 | NULL | 1
1 | small_value | SMALLINT | 0 | NULL | 0
2 | int_value | INTEGER | 0 | NULL | 0
3 | bigint_value | BIGINT | 0 | NULL | 0
この出力から、id
列は INTEGER
型、small_value
列は SMALLINT
型、int_value
列は INTEGER
型、bigint_value
列は BIGINT
型であることが確認できます。
オンラインツール
これらの方法を組み合わせることで、SQLiteの整数データ型の違いをより深く理解することができます。
sqlite