1年目ぐらいの時、DBとか弄ってるときに思った「charとvarcharって何が違うんだ…?」というところの当時のメモを発掘したので、改めてまとめてみたました。
##char型とは
・固定長文字列のことを指す。
・char(m)という形で指定する。mは文字数。0~255まで。
・charcter(m)の略。
・指定した文字数以下の文字を格納した時、文字列末尾に必要な分の空白を付け加えて指定の長さの文字列として格納する。
・値を取得する場合や比較する場合は、末尾の空白は削除された状態で取得や比較が行われる。
##varchar型とは
・可変長文字列のことを指す。
・varchar(m)という形で指定する。mはバイト数。0~65535まで。
・character varying(m)の略。
・char型と異なり、末尾に空白は付かない。
・末尾に空白が付いた文字列はそのまま格納される。
・↑の場合、取得時も空白が付いたままだが、WHERE句での比較時には削除された状態で比較が行われる。
##メリット・デメリット
・char型
メリット:文字数が固定のため、処理が早く一定。
デメリット:文字数が必ず定まった分格納されるため、メモリを圧迫しやすい。
・varchar型
メリット:指定された分だけメモリに格納されるため、効率がいい。
デメリット:文字数が値ごとに違うため、処理は遅く不定となる。