【Oracle】Oracle のデータ型

■ 型定義 (CREATE TYPE)

  新しいデータ型を定義する

構文

 CREATE TYPE usertype FROM VARCHER(40) NOT NULL;

■ 文字列

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)などを使う必要がある

関連記事

文字列の扱い

https://blogs.yahoo.co.jp/dk521123/25408535.html