mysql中的字符串類型
字符串類型 |
字節 |
描述及存儲需求 |
| CHAR(M) | M | M為0~255之間的整數 |
| VARCHAR(M) | M為0~65536之間的整數 | |
| TINYBLOB | 允許長度0~255字節 | |
| BLOB | 允許長度0~65535字節 | |
| MEDUIMBLOB | 允許長度0~167772150字節 | |
| LONGBLOB | 允許長度0~4294967295 | |
| TINYTEXT | 允許長度0~255字節 | |
| TEXT | 允許長度0~65535字節 | |
| MEDIUMTEXT | 允許長度0~167772150字節 | |
| LONGTEXT | 允許長度0~4294967295字節 | |
| VARBINARY(M) | M | 允許長度0~M個字節的邊長字節字符集 |
| BINARY(M) | M | 允許長度0~M個字節的定長字節字符集 |
CHAR於VARCHAR類型
CHAR和VARCHAR很類似,都是用來保存Mysql中較短的字符串,主要區別在於:CHAR列的長度固定為創建表時聲明的長度,長度可以為從0~255的任何值,而VARCHAR的值可以是變長字符串,長度可以指定0~65535之間的值,在檢索的時候,CHAR列會刪除尾部的空格而VARCHAR則保留了這些空格。

這樣看的更清楚

CHAR列最后的空格在做操作的時候都被刪除,而VARCHAR依然保留這些空格
ENUM類型
枚舉類型,它的值范圍需要在創建表時通過枚舉方式顯示指定,對1~255個成員的枚舉需要1個字節存儲,對於255~65535個成員,需要2個字節存儲,最多允許65535個成員。

可以看出來ENUM類型是忽略大小寫的,還可以看出對於插入不在ENUM指定范圍內的值時,並有警告,而是成功插入,並且是enum('M','F')的第一個值M,而且只允許從值集合中選取單個值,不能一次取多個值。
SET類型
SET和enum非常相似,里面可以包含0~64個成員,根據成員的不用,存儲上也有不同。
1~8成員的集合,占1個字節
9~16成員的集合,占2個字節
17~24成員的集合,占3個字節
25~32成員的集合,占4個字節
33~64成員的集合,占8個字節
set類型一次可以選取多個成員,而ENUM則只能選一個,就相當於ENUM是單選,而set是復選。

可以看出set類型可以從允許值的集合中選擇任意1個或多個元素進行組合,所以對於輸入的值只要是在允許值的組合范圍內,都可以正確的寫入到set類型中,對於超過的允許值范圍如('a,d,f')是不能寫入到上面的例子中的,而對於(‘a,d,a’)這樣包含的重復成員將只取一次,寫入后的結果為'a,d'。
