サイズを割り当てるのはなぜですか(SQLのintやfloatなどのデータ型ではなく、文字列データ型のchar(20)やvarchar(20)など)?
2 に答える
数値型はいわゆる「固定サイズ」型です。その列のストレージ サイズは、保存する値に関係なく変わりません。タイプを選択することで、そのサイズを定義します。はinteger
より少ないスペースを使用しbigint
ます。
また、(暗黙的に) 格納できる最大値と最小値を制限する制約を列に定義します ( はbigint
よりも大きな数値を保持できますinteger
)。
文字型の長さ指定も同様の目的を果たします。データの最大長を制限するものです。
列の場合、固定長のデータ型と同様にchar
、これはストレージ サイズも定義します (短い値は定義された長さにパディングされます)。char
すべての (?) 最新の DBMS では、可変文字列 ( ) の定義された (最大) サイズは、varchar
格納方法を実際には変更しません。DBMS は、指定した数を超えて格納できないことを保証するだけです (整数列の定義された範囲を超える数値を格納できないのと同様です)。
DBMSは、定義された最大サイズに応じて内部 (文書化されていない) 最適化を適用する場合がありますが、データにアクセスするシステムからは「見えません」。
Oracle では、私の記憶が正しければ、int と float は number(x,y) 定義のショートカットのようなものです。