データベースにテーブルを作成する際には、テーブルを作成するための SQL ステートメントでテーブルの各列の類似性(データ型)を定義します。類似性の宣言は省略することもできますが、
CREATE TABLE
SQL ステートメントで列の類似性を明示的に宣言することをお勧めします。
原則として、
INSERT
ステートメントを使用してデータベースに格納したオブジェクトは、
SELECT
ステートメントを実行すると同じデータ型のインスタンスとして返されます。ただし、値が格納されるデータベースの列の類似性によっては、異なるデータ型の値が返される場合もあります。値を列に格納するときに、その値のデータ型が列の類似性と一致していないと、値が列の類似性に合わせて変換されます。例えばデータベースの列が
NUMERIC
類似性を使用して宣言されていた場合、挿入したデータは、格納される前に数値格納クラス(
INTEGER
または
REAL
)に変換されます。データを変換できない場合はエラーがスローされます。このルールに従うと、「12345」という String を
NUMERIC
列に挿入した場合は、データベースに格納される前に 12345 という整数値に自動的に変換されます。その値を
SELECT
ステートメントで取得すると、String ではなく数値データ型(Number など)のインスタンスとして返されます。
望ましくないデータ型の変換が行われないようにするには、2 つのルールに従うのが最善の策になります。まず、各列を定義する際に、その列に格納する予定のデータの型と一致する類似性を使用して定義します。次に、定義されている類似性と一致するデータ型の値のみを挿入するようにします。これらのルールに従うと、2 つのメリットがあります。まず、データの挿入時にデータが予期せず変換される(その結果、場合によってはデータの本来の意味が失われる)ことがなくなります。また、データの取得時にデータが元のデータ型で返されるようになります。
使用可能な列の親和型の種類と SQL ステートメントでのデータ型の使用について詳しくは、
データ型のサポート
を参照してください。
|
|
|