MySQL中的字符類型共有6種,分別為:
CHAR(M) -- 定長字符串,最多可存儲M個字符 VARCHAR(M) -- 變長字符串,最多可存儲M個字符 TINYTEXT -- 變長字符串,最多可存儲255個字符 TEXT -- 變長字符串,最多可存儲65,535個字符 MEDIUMTEXT -- 變長字符串,最多可存儲16,777,215個字符 LONGTEXT -- 變長字符串,最多可存儲4,294,967,295個字符
其中,CHAR類型和VARCHAR類型存儲的字符串是長度固定的,在存儲時如果字符串長度小于指定的長度,則會在后面自動填充空格。而TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT這四種類型存儲的字符串是長度可變的。
一般情況下,我們使用VARCHAR類型來存儲字符串,因為它不會浪費過多的存儲空間,而且支持比CHAR類型更大的字符串。如果我們確定需要存儲一個定長的字符串,那么使用CHAR類型可以讓MySQL在檢索和排序時更加高效。
另外,需要注意的是,如果我們使用的字符集是utf8mb4,那么在創(chuàng)建表時需要考慮存儲長度的問題。因為utf8mb4字符集支持4字節(jié)編碼,所以一個字符可能會占用4個字節(jié)的存儲空間,而非ASCII字符則一定會占用4個字節(jié)的存儲空間。因此,在定義VARCHAR類型或TEXT類型的長度時,應(yīng)該考慮字符集的影響,以免存儲空間不足的情況發(fā)生。