SQLiteの整数型:INT、INTEGER、SMALLINT、TINYINTの違いを徹底解説
SQLiteのINT、INTEGER、SMALLINT、TINYINTの違い
- INT
- INTEGER
- SMALLINT
- TINYINT
これらのデータ型は、格納できる値の範囲と必要なストレージ容量が異なります。
詳細比較
データ型 | 許容範囲 | バイト数 |
---|---|---|
TINYINT | -128 ~ 127 | 1 |
SMALLINT | -32,768 ~ 32,767 | 2 |
INTEGER | -2,147,483,648 ~ 2,147,483,647 | 4 |
INT | 同上 | 同上 |
補足:
INTEGER
とINT
は同じ意味です。- 上記の範囲は、符号付き整数の場合です。符号なし整数の場合は、範囲が 2 倍になります。
- SQLite は、必要に応じて自動的にデータ型の変換を行います。
データ型を選ぶ際の考慮事項
- 格納したい値の範囲
- 必要なストレージ容量
- 処理速度
例:
- 年齢のような小さな値を格納するには、
TINYINT
が適切です。 - ストレージ容量が限られている場合は、
SMALLINT
やTINYINT
を使用することで容量を節約できます。
SQLiteの整数型は、TINYINT
、SMALLINT
、INTEGER
、INT
の4種類があります。それぞれ格納できる値の範囲と必要なストレージ容量が異なるので、用途に合わせて適切なデータ型を選びましょう。
import sqlite3
# データベースへの接続
conn = sqlite3.connect("sample.db")
# カーソルの取得
cursor = conn.cursor()
# テーブルの作成
cursor.execute("""
CREATE TABLE IF NOT EXISTS sample (
id INTEGER PRIMARY KEY AUTOINCREMENT,
tinyint_value TINYINT,
smallint_value SMALLINT,
int_value INTEGER
);
""")
# 値の挿入
cursor.execute("""
INSERT INTO sample (tinyint_value, smallint_value, int_value)
VALUES (?, ?, ?)
""", (127, 32767, 2147483647))
# コミット
conn.commit()
# 値の取得
cursor.execute("""
SELECT * FROM sample
""")
for row in cursor.fetchall():
print(row)
# データベースのクローズ
conn.close()
このコードを実行すると、sample.db
というデータベースに sample
というテーブルが作成されます。
sample
テーブルには、id
、tinyint_value
、smallint_value
、int_value
という4つの列があります。
id
列は、自動的に増加する主キーです。tinyint_value
列は、TINYINT
型で、-128 ~ 127 の値を格納できます。int_value
列は、INTEGER
型で、-2,147,483,648 ~ 2,147,483,647 の値を格納できます。
このコードは、各データ型の使用方法を理解するのに役立ちます。
SQLiteの整数型を使用するその他の方法
制約の使用
CREATE TABLE sample (
id INTEGER PRIMARY KEY AUTOINCREMENT,
tinyint_value TINYINT CHECK (tinyint_value BETWEEN -128 AND 127),
smallint_value SMALLINT CHECK (smallint_value BETWEEN -32768 AND 32767),
int_value INTEGER CHECK (int_value BETWEEN -2147483648 AND 2147483647)
);
デフォルト値を設定することで、値を省略することができます。
CREATE TABLE sample (
id INTEGER PRIMARY KEY AUTOINCREMENT,
tinyint_value TINYINT DEFAULT 0,
smallint_value SMALLINT DEFAULT 0,
int_value INTEGER DEFAULT 0
);
NOT NULL
制約を使用して、値が null にならないようにすることができます。
CREATE TABLE sample (
id INTEGER PRIMARY KEY AUTOINCREMENT,
tinyint_value TINYINT NOT NULL,
smallint_value SMALLINT NOT NULL,
int_value INTEGER NOT NULL
);
SQLiteの整数型は、さまざまな方法で使用することができます。
上記のサンプルコードと説明を参考に、用途に合わせて適切な方法を選びましょう。
sqlite