2010-08-17 88 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是入门的实际大小

相关问题