2010-08-17 149 views
7

我有以下困惑 -
1.哪些數據類型用於數據存儲的金額較大的
2.當我們指定VARCHA(100),所以這100代表100 characters100 bits or bytesTEXT和VARCHAR數據字段之間的區別是什麼?

+0

當你從答案看,這在很大程度上取決於其數據庫服務器您正在使用 - 例如mySQL的VARCHAR與MSSQL的varchar差別很大 – Piskvor 2010-08-17 11:33:32

回答

2

文本將存儲多達64K - MySQL的(對於例如)也提供了變體:TINYTEXT(256字節),MEDIUMTEXT(16MB)和LONGTEXT(4GB)。

VARCHAR(100)列最多可容納100個字符的文本。對於二進制數據,您可以使用VARBINARY,在這種情況下,VARBINARY(100)字段最多可容納100個字節。

4

在SQL服務器

VARCHAR(100)= 100個ASCII字符和102字節

爲nvarchar(100)= 100的unicode/ASCII字符和202個字節的存儲

文本和ntext上去到2GB但不推薦使用(來自sql server 2005),您應該使用varchar(max)和nvarchar(max),兩者的值也都高達2 GB

+0

「VARCHAR(100)」的存儲要求不是100個字節,而是102個字節:http://msdn.microsoft.com/en-us/library/ms176089.aspx。 'NVARCHAR'也一樣。 – 2010-08-17 11:48:56

+0

是的我知道2個字節用來表示開始和結束位置,這也是爲什麼你使用char(2)而不是varchar(2)。謝謝,更新了答案 – SQLMenace 2010-08-17 12:53:25

+0

其實不是,2個字節用於存儲'VARCHAR'數組的大小,而不是作爲起始位置。如果列的大小差別很大,則不要使用'CHAR'而不要使用'VARCHAR',因爲與'VARCHAR'相比,這將浪費空間。 – 2010-08-22 06:02:56

2

如果使用MySQL的差異主要與storage requirements

  • VARCHARL + 1字節如果列值需要0-255字節,L + 2字節如果值可能需要超過255字節

  • TEXTL + 2字節,其中L < 2^16

其中L是入門的實際大小

相關問題