MySQL中Text與Blob字段類型的區別

本篇文章主要簡單地介紹一下MySQL中Text與Blob字段類型的區別

在MySQL中Text與Blob字段這兩個字段很容易讓人感覺混淆,特別是我們平時用數據庫工具建表字段時,到底是選Text還是選Blob好呢?

在講二者區別前,先簡單給大家簡單總結下,在數據庫中一些常見的數據類型:

MySQL支持多種類型,大致可以分爲三類:數值、日期/時間和字符串(字符)類型。

Mysql中的字符串類型一般指:CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET

主要區別:

Blob有4種類型:tinyblob、Blob、mediumBlob和longBlob。它們只是可容納值的最大長度不同。

Text也有4種類型:tinyText、Text、mediumText和longText。這些類型同Blob類型一樣,有相同的最大長度和存儲需求。

  • Blob系列沒有字符集,並且排序和比較基於列值字節的數值值。Text系列有一個字符集,並且根據字符集的校對規則對值進行排序和比較

  • 在Text或Blob系列的存儲或檢索過程中,不存在大小寫轉換,都一樣!

  • 運行在非嚴格模式時,如果你爲Blob或Text系列分配一個超過該系列類型的最大長度的值時,值被截取以保證適合。如果截掉的字符不是空格,將會產生一條警告。使用嚴格SQL模式,會產生錯誤,並且值將被拒絕而不是截取並給出警告。

  • 當保存或檢索Blob和Text系列的值時,不刪除尾部空格。
  • 對於Blob和Text系列的索引,必須指定索引前綴的長度。
  • Blob和Text系列不能有默認值。
  • 當排序時只使用該列的前max_sort_length個字節。max_sort_length的 默認值是1024。
  • 當你想要使超過max_sort_length的字節有意義,對含長值的BLOB或TEXT列使用GROUP BY或ORDER BY的另一種方式是將列值轉換爲固定長度的對象。標準方法是使用SUBSTRING函數。
  • Blob和Text對象的最大  大小由其類型確定,但在客戶端和服務器之間實際可以傳遞的最大值由可用內存數量和通信緩存區大小確定。你可以通過更改max_allowed_packet變量的值更改消息緩存區的大小,但必須同時修改服務器和客戶端程序。

總結:


以上就是Text和Blob兩個字段類型的一些區別,這兩個字段雖然範圍是一致的,但是Blob是用來保存二進制數據類型,而Text則是用來保存字符數據類型。就比方說我們目前的博客,目前幾乎所有博客裏的內容,並不全是以二進制的方式存儲在數據庫中的,而是先把圖片上傳到服務器然後正文裏使用<img>標籤引用,這裏博客就可以使用的是Text類型來存儲;最後在再把圖片換算成二進制保存到數據庫中這裏就採用Blob的數據類型來進行存儲。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章