SQLite データ型

Bilal Shahid 2023年6月21日
  1. データ型の重要性
  2. SQLite のデータ型
  3. SQLite のアフィニティ タイプ
  4. SQLite データ型を使用する
SQLite データ型

SQLite でプロシージャと関数を使用して複雑なクエリの作成を開始するには、さまざまなデータ型を知って、データの損失や不正な操作を回避する必要があります。

データ型の重要性

データ型は、プロシージャまたは関数内で特定のデータ セットを定義するために必要な変数に直接リンクされています。 データ型の主な目的は、変数内に格納されるデータの種類をシステムに伝えることです。

データの操作は保存されたデータに基づいて行われるため、これは非常に重要です。 たとえば、テキストを変数に格納している場合、特定の数値を追加すると、文字の ASCII 値が増加し、新しい値が返されます。

A という文字を文字として保存し、それに 1 を追加すると、ASCII 値がインクリメントされて B が返されます。 同様に、数値 65 を文字変数に格納すると、A が格納され、1 を追加すると、文字 B に対応する値 66 になります。

これにより、関数の作成中、またはテーブルの列内でさえも、データ型の重要性が表示されます。 数値をテキスト データ型に格納し、数値を加算するつもりである場合は、文字になってしまい、その逆も同様です。

そのため、SQLite のデータ型とその正しい使用方法を十分に理解することが重要です。

SQLite のデータ型

SQLite には複数のデータ型があります。 正しく保存して操作するには、次の各項目に精通している必要があります。

  • ブロブ: ブロブに格納されたデータは動的と見なすことができます。 入力されたままの状態で保存されます。
  • Null: 名前が示すように、これは null 値を意味します。 スペースやキャリッジ リターンはすべて ASCII 値を持ち、システムでは独立した文字と見なされるため、何も保存したくない場合は null を選択することをお勧めします。
  • Text: これは、保存する必要があるすべての文字列に使用されます。 これらは、SQLite のバージョンによって考案された最大ストレージ容量内である限り、任意の長さにすることができます。 ほとんどの場合、文字列は、UTF-8、UTF-16BE、UTF-16LE などの一般的なデータベース エンコーディングを使用して格納されます。
  • Integer: これはすべての整数値に使用されます。 ゼロを含め、正と負のすべての整数を格納できます。 データの格納に使用されるバイト数は、値の大きさによって異なります。
  • Real: 整数データ型は整数のみに対応するため、real データ型は浮動小数点値に使用されます。 これらは正と負の両方の数値で、10 進数の値もあります。

SQLite のアフィニティ タイプ

データ型について説明する際に、アフィニティ タイプについて説明することは価値があります。 上記のデータ型は、ストレージ クラスと呼ばれることもあります。

これらのサブディビジョンは、列用に設計された優先ストレージ クラスであるアフィニティ型です。 主な目的は、SQLite と他のデータベースとの互換性を最大限にすることです。

SQLite のアフィニティ タイプには次のものがあります。

  • Text: null、text、または blob 値を保持するデータを格納します。
  • 数値: 5つのストレージ クラスすべてを格納できるアフィニティ タイプが必要な場合に最適です。
  • Integer: Numeric と非常によく似た動作をしますが、キャスト式により違いが生じます。
  • 実数: 通常の整数を浮動小数点値に変換する点を除いて、これは整数に似ています。
  • None: None を使用すると、どのストレージ クラスも優先されません。 したがって、あるデータ型を別のデータ型に変換しようとする試みはなく、そのまま残ります。

実数と数値のデータ型

実数数値 のデータ型はかなり重複しているため、正しく使用できるようにいくつかの説明を提供することをお勧めします。 基本的に、real は、浮動小数点数などの 10 進数コンポーネントを含む数値データに使用されます。

小数を含まない他の数値は、しばしば整数と共に使用されます。 これは非常に簡単ですが、類似性のために理解するのが少し難しいです。

Numeric は、次のタイプのデータに関連付けられるように導入されたアフィニティです。

  • Numeric
  • Decimal (10,5)
  • Boolean
  • Date
  • Datetime

real はこのリストのコンポーネントではないため、すべての種類の浮動小数点数が numeric 型で処理されるわけではないと結論付けることができます。 その結果、通常の整数または 10 進数 (10.5) を格納する場合は、numeric が機能します。

その他の浮動小数点数については、numeric が最適なオプションです。

アフィニティの目的は、SQLite と他のデータベースとの互換性を向上させることです。 その結果、特定のアフィニティへの一部のアフィリエーションは、SQLite で直接利用できない場合があります。

SQLite データ型を使用する

SQLite のさまざまなデータ型について詳しく理解したので、それらの使用方法を理解する必要があります。

テーブルで SQLite データ型を使用する

テーブルの作成中に、列でデータ型を直接使用できます。 これは次のように行うことができます。

CREATE TABLE table_name(a INT, b TEXT, c REAL);

これにより、異なるデータ型の 3つの列を持つテーブルが作成されます。

注: テーブルの作成中に正しいデータ型を選択していることを確認してください。 それらを変更することは可能ですが、これには複雑なクエリが含まれるか、既存のテーブルを削除して再作成する必要があります。

関数またはプロシージャで SQLite データ型を使用する

SQLite でデータ型を持つ変数を作成するのは少し注意が必要です。 変数に値を正しく格納するには、最初に一時メモリ マップ テーブルを作成する必要があります。

以下に例を示します。

BEGIN
PRAGMA temp_store = 2;
CREATE TEMP TABLE table_name(Name TEXT, Age INTEGER);
INSERT INTO table_name (Name) VALUES ('abc');
END
著者: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub