基本情報処理技術者試験の勉強をしていて,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/