基本情報処理技術者試験の勉強をしていて,SQLについて勉強しているときに気になったので調べました.忘れそうなので備忘録として残しておきます.

※便宜上,スペースをアンダーバーで記述しています

char型

特徴

文字列を格納する固定長のデータ型.
0~255文字まで格納可能.

例えば,char(4)のデータ型があったとします.これに"abc"という文字列を格納した場合,"abc_"といった具合に末尾にスペースが1個追加されて格納されます.固定長なので,4バイト以下のデータが来ても常に4バイトになるように末尾をスペースで埋めることになります.

しかし,実際にselect文で中身を取り出すと"abc"という風にスペースは表示されない.

会員番号や郵便番号など,決まった文字数のデータを格納する際にはもってこいの型です.

注意点

常に一定のデータ容量を確保するので,氏名とか性別などのせいぜい数文字にしかならないデータにchar(255)とか設定しまうと,常に255バイトメモリを消費するので注意しなければならない.

varchar型

特徴

文字列を格納する可変長のデータ型.
0~65535文字まで格納可能.(6万も使うならtext型やblog型を使ったほうがよい)

例えば,varchar(4)があったとします.これに"abc"という文字列を格納した場合,そのまま"abc"と格納されます.(char型のように末尾を埋めない)文字列の長さに応じてバイト数も変化するのがvarchar型です.

また,char型と違ってスペースも表示される.例えば"abc_"という文字列の場合,"abc_"と格納されます.

注意点

文字数を記録するために1バイト消費する点に注意が必要です.例えばvarchar(4)に"abcd"と格納した場合,5バイト分メモリを消費する.

参考URL

http://gihyo.jp/dev/serial/01/mysql-road-construction-news/0041
http://cafe.76bit.com/creative/web-design/2139/

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.