char & varchar
區別:
- char 是一種長度固定的型別;varchar 是一種長度可變的型別
- 從 char 列檢索出來的值,其尾部空格會被移除。對於 char(m)列,如果其值的長度小於 m 個字元,那麼在存入時會用空格將長度補齊。如果啟用 sql 的pad_char_to_full_length模式,那麼在檢索char 列值時就可以保留尾部空格。
- 對於varchar列,其尾部空格在儲存和檢索時都會被保留。
注意:char(0) 是合法的,僅乙個二進位制位。兩種取值:null或空串。
如何選擇?以下兩條通用原則:
- 如果所有值的長度固定,選用char。因為varchar需要用額外的位元組來記錄值的長度。反之長度不固定,則選用varchar節省空格占用的空間,因為 char 會用空格補齊。
- 如果使用的是myisam表,並且各個值的長度差別不大,那麼選用cahr更好些。因為myisam 儲存引擎對固定長度行的處理效率高。
binary & varbinary
這兩種型別與 char 和 varchar 相似,但有以下區別:
-char和varchar都是用於儲存字元的非二進位制型別,並且都有字符集和排序規則。
- binary 和 varbinary 都是用於儲存位元組的二進位制型別,它們沒有字符集和排序規則。
對於binary(m),固定長度m,會用0x00位元組進行補齊,檢索時,不會去除任何內容。
對於varbinary,在儲存值時,不會補齊,檢索時,也不會去除任何內容。
blob & text
blob:二進位製大物件,乙個能夠存放任何內容的容器,多達 4g。儲存的是二進位制串,比如:壓縮資料、加密資料、影象和聲音。
text:與 blob 有很多相似之處,但其儲存的是非二進位制串,如字元。
blob 和 text 列能否被索引,具體取決於所使用的儲存引擎。
- 儲存引擎innodb和myisam都支援對 blob 和 text 列進行索引,但必須指定乙個字首長度。除了fulltext 索引不會使用那個字首長度。
- memory 引擎不支援 blob 和 text 列。
使用注意:
- 由於兩者在長度方面的差異很大,因此在多次刪除和修改之後,表裡容易產生大量碎片。如果使用myisam 表來儲存 blob 和 text 值,那麼定期執行optimize table 命令可以減少碎片和改善系統效能。
- max_sort_length 系統變數,有必要時,可以調大。
enum & set
它們只能從乙個固定的字串列表裡取值。
主要區別:enum列值必須包含且只能包含乙個值列表成員(可以為空);而set列值則允許包含任意多個值列表成員。
-enum是單選字串資料型別,適用於儲存單選值,而set是多選字串資料型別,適用於儲存多選值
- mysql從 1 開始依次對enum列定義的成員進行順序編號;而set成員並沒有按順序編號,而被儲存為二進位制位值。
如何字串資料型別?
資料型別 字串
一字串 定義 它是乙個有序的字元的集合,用於儲存和表示基本的文字資訊 或 中間包含的內容稱之為字串 特性 1只能存放乙個值 2不可變 3按照從左到右的順序定義字元集合,下表從0開始順序訪問,有序 字串的常用操作 移除空白 strip 首字母大寫.capitalize 所有大寫 upper 統計字元長...
Python資料型別 字串型別
變數名 str 變數值 msg hello world print msg 0 print msg 1 msg hello n print len msg msg hello world print ello in msg print lo w not in msg res print hello ...
資料型別 字串型別 string
1 字串 數字,都會轉為字串來儲存 2 以二進位制的方式儲存在記憶體中 必須掌握的命令 1.設定乙個key value set key value 2.獲取key的值 get key 3.key不存在時再進行設定 nx set key value nx 4.設定過期時間 ex 過了日期就自動銷毀ex...