您好我想知道何时应该使用不同的数据类型。在我的表中,我如何决定使用哪个:nvarchar,nchar,varchar,varbinary等。
示例:
我会用什么......专栏:
Phone number,
Address,
First Name, Last Name,
Email,
ID number,
etc.
感谢您的帮助!
答案 0 :(得分:5)
作为一般规则,如果我不打算对它进行算术运算,我就不会将任何东西定义为“数字”字段,即使数据本身是数字的。
您的“电话”字段就是一个例子。我将其定义为varchar。
答案 1 :(得分:2)
Varchar,Integer和Bit覆盖了我日常使用的99%。
答案 2 :(得分:2)
问题实际上取决于您的要求。我知道这不是一个特别令人满意的答案,但这是真的。
n..char数据类型用于Unicode数据,因此如果您需要在数据中使用unicode字符集,则应使用这些类型而不是“非n”类似物。 nchar和char类型是固定长度,nvarchar和varchar类型可以有一个可变长度,这将影响磁盘和内存中列的大小。通常我会说使用最少磁盘空间但适合您需要的类型。
This page包含指向SQL Server 2005的这些数据类型的Microsoft描述的链接,其中许多描述了何时使用哪种类型。您可能对this page对char和varchar类型特别感兴趣。
答案 3 :(得分:1)
以n开头的数据类型表示它可以用于unicode字符...例如nVarchar。
选择整数也很有趣。
我使用的最常见的数据类型是varchar ....
答案 4 :(得分:1)
N *数据类型(NVARCHAR,NCHAR,NTEXT)用于Unicode字符串。它们占用了“普通”吊坠(VARCHAR,CHAR,TEXT)所需空间的两倍,但它们可以存储Unicode而无需转换,也可能失去保真度。
TEXT数据类型可以存储几乎无限量的数据,但它们的性能不如CHAR数据类型,因为它们存储在记录之外。
VARCHAR数据类型的长度可变。它们最后不会用空格填充,但它们的CHAR吊坠会(CHAR(20)总是20个字符长,即使只包含5个字母。剩下的15个将是空格)。
二进制数据类型用于二进制数据,无论您需要存储在哪里(图像都是主要示例)。
答案 5 :(得分:0)
其他人已经给出了很好的一般性答案,但我要补充一点:当使用VARCHAR()
时(我会推荐用于那些类型的字段),请确保使用足够大的长度任何合理的价值。例如,我通常会声明VARCHAR(100)
表示姓名,电子邮件地址,域名,城市名称等,并VARCHAR(200)
表示网址或街道地址。
这比你经常需要的还要多。事实上,几乎所有这些值都有30个字符就足够了(除了全名,但是一个好的数据库应该总是分别存储名字和姓氏),但它比在未来某天更改数据类型更好。为VARCHAR
指定高于必要长度的成本非常低,但请注意VARCHAR(MAX)
和TEXT
确实需要大量开销,因此仅在必要时使用它们。
以下是一篇文章,其中指出了一个时间长于VARCHAR
会影响效果的案例:Importance of varchar length in MySQL table。去表明所有都有成本,但总的来说我仍然喜欢长VARCHAR
。