■ 文字列
CHAR
固定長で、文字列の長さに関わらず、指定した長さの領域をとる例:CHAR(10)と定義し、「MIKE(4Byte)」を格納した場合
残りの6Byteは空白を埋める(無駄に領域を占有することになる) つまり、格納する文字列の長さが10バイトより小さければ、残りは空白で埋める
VARCHAR2
* 1~4000バイトの間で指定可能。 * 可変長で、実際に格納する文字列の長さのぶんだけ領域をとる補足:VARCHARについて
[[http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/server.111/E05765-03/datatype.htm#16175]]
より抜粋 ~~~~~~~~~~~~~~ VARCHARデータ型は、VARCHAR2データ型と同義です。 このため、考えられる動作変更を回避するために、 可変長の文字列の格納には常にVARCHAR2データ型を使用してください。 ~~~~~~~~~~~~~~例:VARCHAR2(10)と定義し、「MIKE(4Byte)」を格納した場合
4Byteのみ領域をとるだけ レコードを更新する際に文字列の長さが変わるとページの空き領域の検索などの作業が発生するため、 CHARを使う場合よりパフォーマンスが低下します。CHAR と VARCHAR2 の使い分けについて
* 文字列の最大長や更新頻度などを考えて決定する必要がある * 更新が頻繁で、あらかじめ使う領域が分かる場合(IDなど)は、CHARがいい * それ以外は場合(名前など)は、VARCHAR2を使うことを考えに入れた方がいい
Nvarchar2
1~2000文字の間で指定可能。注意
あくまで最大文字数であること。 つまり、日本語だろうと英数字に関わらず、文字数で決まるってこと(N=Nationalの意味)。 ただし、Unicode(UTF8)の場合、文字数×3バイトとなる
■ Boolean
Oracleには、Boolean型のようなものがないため、 代わりに、Number(1)などを使う必要がある