【SQLを丁寧に理解する】CHARとVARCHAR2【ORACLEの場合】PART1
こんにちは、EightyEightRiceです。
今日の記事は、【SQLを丁寧に理解する】CHARとVARCHAR【ORACLE】です。
データベースを扱い場合に、よくハマってしまう項目について、丁寧に説明していきます。
ざっと読み飛ばすだけでも、
「へぇーそうなんだ」
と、思っていただけるような構成を心がけています。
今回は
CHARとVARCHAR2【ORACLEの場合】PART1
です。
まず、SQLの教育でならうのは、
CHAR → 固定長
VARCHAR2 → 可変長
ですね。
教育係の方は、教科書に書いてある事を強調して教えてくれますが、
あいまいな用語を、よくわからない用語で言い換えても
初学者や初心者は、いきなりモチベーションが下がってしまいますね。
まずは、厳密な定義は知らなくてよいので、
固定長と可変長の意味を考えてみましょう。
両方とも語尾に"長"がついているので、長さについての用語のようですね。
それぞれについて、仮に下記のように定義しましょう。
「定義する」というのは、雰囲気で、こう決めましょうくらいの気持ちです。
可変長(仮):変える事が可能な長さ
固定長(仮):変える事ができない長さ
このように決めておきます。
違いがあると、何が嬉しいの?
なんで固定長と可変長があると何がいいの?という考えが浮かぶと思います。
プログラミングの世界では、固定長・可変長に様々なメリット・デメリットがあります。
ここでは、DBを扱う際のメリット・デメリットを主観で挙げておきます。
□固定長
「いつも長さが同じだから、計算がしやすい」
一方で、
「いつも長さが同じだから、少ない情報量の割りにデータ保存に場所をとる」
□可変長
「長さが変えられるから、データ保存する場所は、情報量に対して必要最低限でOK」
一方で、
「長さが変えられるから、計算がしづらい」
話がやや逸れましたが、CHAR・VARCHAR2の定義も仮決めできます。
CHAR(仮) :変える事ができない長さの型
VARCHAR2(仮):変える事が可能な長さの型
具体的には、
あるカラムの型が
CHAR(5 BYTE)
あった場合、どんな文字や単語を登録しても、5BYTEになります。
(ここで、半角英数は1BYTE、ひらがなは1BYTEとします。)
どのように登録されるかというと、以下のようになります。
"A" → "A____"
"あいう" → "あいう____"
見えやすく、「 _ 」を使いましたが、実際は半角スペースで埋められます。
一方、VARCHAR2(5 BYTE)は
"A" → "A"
"あいう" → "あいう"
"A___" → "A___" (後ろの空白もそのまま)
と、そのまま登録されます。
以上、解説でした。