物流・倉庫・WMS・プログラマ日記

物流・倉庫・WMS・プログラマ日記

在庫管理・倉庫管理を扱う事が多いプログラマの備忘録です。

【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___"  (後ろの空白もそのまま)

 

 と、そのまま登録されます。

 

以上、解説でした。

関連記事

記事一覧