MySQLでテーブルを作成する際のchar型とvarchar型の違いについて

スポンサーリンク

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

※便宜上,スペースを□で記述しています

char型

char = Character の略.キャラクターとかいいますよね.

特徴

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

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

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

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

注意点

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

varchar型

varchar = Variable Character の略.Variableは”可変の”という意味です.ざっくり言えばサイズが可変長のchar型ってことです.

特徴

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

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

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

注意点

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

雑感

要は固定長(char)か可変長(varchar)かというお話でした。扱うデータの文字数を特に気にする必要がなければ可変長のvarcharを使うのが安牌な気がします。

参考URL

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

にほんブログ村 IT技術ブログへ
にほんブログ村