MySQL和MSSQL下,text、ntext、image、blob的比較

珠海_jadeluo發表於2016-05-17
MySQL和MSSQL下,text 、ntext、 image、blob的比較2009-12-30 13:371、MySQL存在text和blob: 

(1)相同 

在TEXT或BLOB列的儲存或檢索過程中,不存在大小寫轉換,當未執行在嚴格模式時,如果你為BLOB或TEXT列分配一個超過該列型別的最大長度的值值,值被擷取以保證適合。如果截掉的字元不是空格,將會產生一條警告。使用嚴格SQL模式,會產生錯誤,並且值將被拒絕而不是擷取並給出警告. 
BLOB和TEXT列不能有 預設值. 
當儲存或檢索BLOB和TEXT列的值時不刪除尾部空格。(這與VARBINARY和VARCHAR列相同). 
對於BLOB和TEXT列的索引,必須指定索引字首的長度。對於CHAR和VARCHAR,字首長度是可選的. 
(2)相異 

text : 

TEXT值是大小寫不敏感的 
Text被視為非二進位制字串 
TEXT列有一個字符集,並且根據字符集的 校對規則對值進行排序和比較 
可以將TEXT列視為VARCHAR列 
MySQL連線程式/ODBC將TEXT值定義為LONGVARCHAR 
BLOB 可以儲存圖片,TEXT不行,TEXT只能儲存純文字檔案。4個TEXT型別TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT對應於4個BLOB型別,並且有同樣的最大長度和儲存需求。 
blob: 

BLOB值的排序和比較以大小寫敏感方式執行; 
BLOB被視為二進位制字串; 
BLOB列沒有字符集,並且排序和比較基於列值位元組的數值值。 

在大多數方面,可以將BLOB列視為能夠足夠大的VARBINARY列 

MySQL連線程式/ODBC將BLOB值定義為LONGVARBINARY 
一個BLOB是一個能儲存可變數量的資料的二進位制的大物件。4個BLOB型別TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB僅僅在他們能儲存值的最大長度方面有所不同。 
(3)其他: 

VARCHAR,BLOB和TEXT型別是變長型別,對於其儲存需求取決於列值的實際長度(在前面的表格中用L表示),而不是取決於型別的最大可能尺寸。例如,一個VARCHAR(10)列能儲存最大長度為10個字元的一個字串,實際的儲存需要是字串的長度 ,加上1個位元組以記錄字串的長度。對於字串`abcd`,L是4而儲存要求是5個位元組。 
    BLOB和TEXT型別需要1,2,3或4個位元組來記錄列值的長度,這取決於型別的最大可能長度。VARCHAR需要定義大小,有255的最大限制;TEXT則不需要。如果你把一個超過列型別最大長度的值賦給一個BLOB或TEXT列,值被截斷以適合它。 

CHAR(n) 固定長度,最多 255 個字元 
VARCHAR(n) 可變長度,MySQL 4.1 及以前最大 255 字元,MySQL 5 之後最大 65535 位元組 
TINYTEXT 可變長度,最多 255 個字元 
TEXT 可變長度,最多 65535 個字元 
MEDIUMTEXT 可變長度,最多 16777215(2^24 – 1)個字元 
LONGTEXT 可變長度,最多 4294967295(2^32 – 1)(4G)個字元 


2、MSSQL存在text、ntext和image: 


ntext: 

可變長度 Unicode 資料的最大長度為 230 – 1 (1,073,741,823) 個字元。儲存大小是所輸入字元個數的兩倍(以位元組為單位)。ntext 在 SQL-92 中的同義詞是 national text。 


text: 

伺服器內碼表中的可變長度非 Unicode 資料的最大長度為 231-1 (2,147,483,647) 個字元。當伺服器內碼表使用雙位元組字元時,儲存量仍是 2,147,483,647 位元組。儲存大小可能小於 2,147,483,647 位元組(取決於字串)。 


image: 

在 Image 資料型別中儲存的資料是以位字串儲存的,不是由 SQL Server 解釋的,必須由應用程式來解釋。例如,應用程式可以使用 BMP、TIEF、GIF 和 JPEG 格式把資料儲存在 Image 資料型別中。 


本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/sm_crystal/archive/2008/12/02/3428757.aspx 

相關文章