資料庫欄位型態 VARCHAR, TEXT 與 CHAR 的差別是什麼
在新增 SQL 的 TABLE 欄位的時候,會遇到 TEXT 、 VARCHAR 以及 CHAR 的選擇,是個讓人困擾的問題。
首先來比較 VARCHAR 以及 CHAR。CHAR 以及 VARCHAR 都可以設定一個 length 的參數,不過兩者對於 length 的解釋稍有不同。對於 CHAR 來說,length 代表每筆資料都固定是 legth 的長度;對於 VARCHAR 來說,length 代表每筆資料不能超過 length 的長度,所以說,VARCHAR 可以解釋成 length-variable CHAR (長度可變的 CHAR)。
再來看看 TEXT,text 沒辦法設定 length,所以它的彈性最大。
TEXT 、 VARCHAR 以及 CHAR 還有不同的地方 - 最大儲存空間,底下來比較一下 (XAMPP version 8.0.7)。
1.CHAR:A fixed length string (0 - 255)
2.VARCHAR:A variable-length string (0 - 65535)
3.TEXT:A TEXT column with a maximum length of 65,535 (2^16 - 1) characters, stored with a two-byte prefix indicating the length of the value in bytes
string 代表的是 byte (8 bits),而不同的編碼需要花費不同數目的 bytes 去存取一個 character,所以 TEXT 很明顯的擁有最大的存取長度。
最後來看看他們的使用時機。
- 長度常常變化的用 varchar
- 知道固定長度的用 char
- 太長的字串只能用 varchar 或者 text
- 能用 varchar 的地方不用 text
為甚麼長度常常變化的地方要用 varchar 呢? 因為在 VARCHAR 的設定上我們只是給它一個最大值,然后系統會根據實際數據量來分配適合的空間。所以相比 CHAR 而言,可以占用更少的儲存空間。