1. ホーム
  2. sqlite

[解決済み] SQLiteのINT、INTEGER、SMALLINT、TINYINTなどの関連するデータ型の違いは何ですか?

2022-11-14 02:17:37

質問

SQLite3でテーブルを作成する際、似たような内容を意味するデータ型に直面し、混乱しています。

INT, INTEGER, SMALLINT, TINYINT

DEC, DECIMAL

LONGCHAR, LONGVARCHAR

DATETIME, SMALLDATETIME

どこかに、様々なデータ型の最小/最大容量が記載されているドキュメントはないでしょうか? 例えば、私が思うに smallint よりも大きな最大値を保持していると思います。 tinyint よりも大きな最大値を保持し、整数よりも小さな値を保持しますが、これらの容量が何であるかはわかりません。

どのように解決するのですか?

SQLite は、技術的には、データ型を持っていない、ある ストレージクラス があり、マニフェスト型付けシステムでは、従来の RDBMS に慣れていると混乱します。内部的には、すべてがテキストとして保存されます。データ型は親和性に基づいてさまざまな格納場所に強制的に変換されます (列に割り当てられたデータ型と同様です)。

私がお勧めする最善の方法は、:

  1. スタンドアロン データベースのデータ型について知っていたことをすべて一時的に忘れる

  2. 上記のリンクを読むには SQLite のサイトからのリンクです。

  3. 古いスキーマに基づいた型を取り、それらが SQLite

  4. すべてのデータを SQLite データベースに移行します。

注意してください。 データ型の制限は、特に時間的な持続時間や日付、あるいはそのような性質のものを SQL . SQLite にはそのようなことをするための組み込み関数がほとんどありません。しかし SQLite は、時間の長さやそのような性質のものを追加するための独自の組み込み関数を作る簡単な方法を提供します。 sqlite3_create_function ライブラリ関数を使用します。従来のストアドプロシージャの代わりにその機能を利用することになります。