MySQL資料型別 BLOB和TEXT

2021-07-23 01:09:56 字數 2156 閱讀 8232

blob(binary large object)是用來儲存二進位製大資料型別的。根據儲存長度的不同,text型別和blob型別都可細分為4種型別:

tinyblob

最大長度為255(2^8–1)

位元組的blob列。

tinytext

最大長度為255(2^8–1)

字元的text列。

blob[(m)]

最大長度為65,535(2^16–1)

位元組的blob列。

可以給出該型別的可選長度m。如果給出,則mysql將列建立為最小的但足以容納m位元組長的值的blob型別。

text[(m)]

最大長度為65,535(2^16–1)

字元的text列。

可以給出可選長度m。則mysql將列建立為最小的但足以容納m字元長的值的text型別。

mediumblob

最大長度為16,777,215(2^24–1)

位元組的blob列。

mediumtext

最大長度為16,777,215(2^24–1)

字元的text列。

longblob

最大長度為4,294,967,295或4gb(2^32–1)

位元組的blob列。

longblob列的最大有效(允許的)長度取決於客戶端/伺服器協議中配置最大包大小和可用的記憶體。

longtext

最大長度為4,294,967,295或4gb(2^32–1)

字元的text列。

longtext列的最大有效(允許的)長度取決於客戶端/伺服器協議中配置最大包大小和可用的記憶體。

在大多數情況下,可以將blob型別的列視為足夠大的varbinary型別的列。同樣,也可以將text型別的列視為足夠大的varchar型別的列。然而,blob和text在以下幾個方面又不同於varbinary和varchar:

在blob和text型別的列上建立索引時,必須制定索引字首的長度。而varchar和varbinary的字首長度是可選的。

blob和text型別的列不能有預設值。

在排序時只使用列的前max_sort_length個位元組。

max_sort_length預設值為1024,該引數是動態引數,任何客戶端都可以在mysql資料庫執行時更改該引數的值,例如:

mysql> set global max_sort_length=2048;

query ok, 0 rows affected (0.00 sec)

mysql> select @@global.max_sort_length\g;

*************************** 1. row ***************************

@@global.max_sort_length: 2048

1 row in set (0.00 sec)

mysql> set max_sort_length=1536; 

query ok, 0 rows affected (0.00 sec)

mysql> select @@max_sort_length\g;

*************************** 1. row ***************************

@@max_sort_length: 1536

1 row in set (0.00 sec)

在資料庫中,最小的儲存單元是頁(也可以稱為塊)。為了有效儲存列型別為blob或text的大資料型別,一般將列的值存放在行溢位頁,而資料頁儲存的行資料只包含blob或text型別資料列前一部分資料。

圖2-2顯示了innodb儲存引擎對於blob型別列的儲存方式,資料頁由許多的行資料組成,每行資料由列組成,

對於列型別為blob的資料,innodb儲存引擎只儲存前20位元組,而該列的完整資料則存放在blob的行溢位頁中。在這種方式下,資料頁中能存放大量的行資料,從而

提高了資料的查詢效率。

此外,在有些儲存引擎內部,比如innodb儲存引擎,會將大varchar型別字串(如varchar(65530))自動轉化為text或blob型別,這在筆者的另一本書《mysql技術內幕:innodb儲存引擎》中已經有了非常詳細的介紹,這裡不再贅述。

blob資料型別 mysql資料型別

mysql資料型別,資料型別介紹 資料型別設定 列屬性 資料型別的字符集用法 選擇適當的資料型別2 資料型別介紹 四種主要類別 數值型別 字元型別 時間型別 二進位制型別 資料型別的 abc 要素 brief 簡潔 complete 完整 例 1 列宣告 create table people id...

mysql資料型別 TEXT和Blob

text是 以文字方式儲存的,如果儲存英文的話區分大小寫 blob是以二進位制方式儲存的,不區分大小寫。blob儲存的資料只能整體讀出 有4種text型別 tinytext text mediumtext和longtext。這些對應4種blob型別,有相同的最大長度和儲存需求。blob 列被視為二進...

定義blob型別 MySQL 資料型別

mysql 支援的資料型別很多,選用正確的資料型別至關重要。下面介紹常用的資料型別以及相應的優缺點。以上資料型別有可選的unsigned 屬性,表示不允許出現負值,但可以使上限提高一倍.例如 smallint unsigned 可儲存範圍為 0 65535 而 smallint 為 32768 32...