SQL何时使用哪种数据类型

时间:2009-02-27 16:29:58

标签: sql types

您好我想知道何时应该使用不同的数据类型。在我的表中,我如何决定使用哪个:nvarchar,nchar,varchar,varbinary等。

示例:

我会用什么......专栏:

Phone number,
Address,
First Name, Last Name,
Email,
ID number,
etc. 

感谢您的帮助!

6 个答案:

答案 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。

选择整数也很有趣。

http://www.databasejournal.com/features/mssql/article.phpr/2212141/Choosing-SQL-Server-2000-Data-Types.htm

我使用的最常见的数据类型是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