SQLiteの整数型:INT、INTEGER、SMALLINT、TINYINTの違いを徹底解説

2024-04-02

SQLiteのINT、INTEGER、SMALLINT、TINYINTの違い

  • INT
  • INTEGER
  • SMALLINT
  • TINYINT

これらのデータ型は、格納できる値の範囲と必要なストレージ容量が異なります。

詳細比較

データ型許容範囲バイト数
TINYINT-128 ~ 1271
SMALLINT-32,768 ~ 32,7672
INTEGER-2,147,483,648 ~ 2,147,483,6474
INT同上同上

補足:

  • INTEGERINT は同じ意味です。
  • 上記の範囲は、符号付き整数の場合です。符号なし整数の場合は、範囲が 2 倍になります。
  • SQLite は、必要に応じて自動的にデータ型の変換を行います。

データ型を選ぶ際の考慮事項

  • 格納したい値の範囲
  • 必要なストレージ容量
  • 処理速度

例:

  • 年齢のような小さな値を格納するには、TINYINT が適切です。
  • ストレージ容量が限られている場合は、SMALLINTTINYINT を使用することで容量を節約できます。

SQLiteの整数型は、TINYINTSMALLINTINTEGERINT の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 テーブルには、idtinyint_valuesmallint_valueint_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


SQLiteの日付時刻型徹底解説:TEXT、NUMERIC、DATETIME、TIMESTAMP比較

SQLiteで日付時刻値を格納および取得するには、いくつかの方法があります。ここでは、最も一般的な方法をいくつかご紹介します。TEXT形式で格納最も簡単な方法は、日付時刻値をTEXT形式で格納することです。この方法では、文字列として値を格納するため、形式の変換が必要になります。...


SQL Order By ステートメントで大文字小文字を区別せずに結果をソートする方法

SQL の ORDER BY ステートメントは、結果を特定の列に基づいてソートするために使用されます。デフォルトでは、ソートは大文字と小文字を区別します。つまり、「A」は「a」よりも前に表示されます。大文字と小文字を区別せずに結果をソートするには、いくつかの方法があります。...


Java、Android、SQLite で「SQlite Getting nearest locations (with latitude and longitude)」プログラミング

必要なもの:Android StudioSQLite データベース緯度と経度のデータ手順:データベースの作成: SQLite データベースを作成し、テーブルを作成します。テーブルには、場所の名前、緯度、経度などの列を含める必要があります。 サンプルデータとして、いくつかの場所をデータベースに追加します。...


CHECK制約 vs DEFAULT値とUNIQUE制約:SQLiteでENUM型を作成する方法徹底比較

SQLiteでENUM型を作成する最も一般的な方法は、CHECK制約を用いる方法です。CHECK制約は、列の値が特定の条件を満たしていることを確認するために使用されます。上記の例では、usersテーブルにgender列を作成し、maleまたはfemaleの値のみを許可しています。...


SQLiteのGROUP_CONCAT関数で複数列を結合する方法:注文履歴をカンマ区切りで表示

基本的な構文例:顧客ごとの注文履歴顧客テーブル customers と注文テーブル orders を用いて、顧客ごとの注文履歴を結合してみましょう。このクエリは、以下の結果を返します。複数の区切り文字区切り文字を複数指定することで、より柔軟な結合が可能です。例えば、カンマと改行を組み合わせることで、各注文履歴を改行で区切ることができます。...


SQL SQL SQL SQL Amazon で見る



徹底解説!MySQLの整数データ型:TINYINT、SMALLINT、MEDIUMINT、BIGINT、INT の違い

データ型と格納できる値の範囲データ型とメモリ使用量上記の表の通り、データ型によって必要なメモリ量が異なります。一般的に、格納できる値の範囲が広くなるほど、必要なメモリ量も増えます。データ型と処理速度データ型によって、データの比較や演算処理速度にも違いが生じます。一般的に、必要なメモリ量が少ないデータ型の方が処理速度が速くなります。


SQLiteの整数データ型徹底解説:int、integer、bigintの違いとは?

int と integer は完全に同じ意味を持ち、どちらも32ビットの整数値を格納できます。つまり、-2,147, 483, 648から2, 147, 483, 647までの値を格納できます。bigint は64ビットの整数値を格納できます。つまり、-9,223


論理値と小さな整数値を格納する最適な方法: MySQLのTINYINT vs BOOLEAN vs ENUM vs SET

MySQLのTINYINTデータ型は、-128から127までの範囲の整数値を格納するために使用されます。TINYINT(1)とTINYINT(2)はどちらもTINYINTデータ型ですが、ストレージサイズと表現できる値の範囲に違いがあります。