1,定長(zhǎng)和變長(zhǎng)
char 表示定長(zhǎng),長(zhǎng)度固定,varchar表示變長(zhǎng),即長(zhǎng)度可變。char如果插入的長(zhǎng)度小于定義長(zhǎng)度時(shí),則用空格填充;varchar小于定義長(zhǎng)度時(shí),還是按實(shí)際長(zhǎng)度存儲(chǔ),插入多長(zhǎng)就存多長(zhǎng)。
因?yàn)槠溟L(zhǎng)度固定,char的存取速度還是要比varchar要快得多,方便程序的存儲(chǔ)與查找;但是char也為此付出的是空間的代價(jià),因?yàn)槠溟L(zhǎng)度固定,所以會(huì)占據(jù)多余的空間,可謂是以空間換取時(shí)間效率。varchar則剛好相反,以時(shí)間換空間。
2,存儲(chǔ)的容量不同
對(duì) char 來(lái)說(shuō),最多能存放的字符個(gè)數(shù) 255,和編碼無(wú)關(guān)。
而 varchar 呢,最多能存放 65532 個(gè)字符。varchar的最大有效長(zhǎng)度由最大行大小和使用的字符集確定。整體最大長(zhǎng)度是 65,532字節(jié)。