SQL何时使用哪种数据类型

6

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

举例:

对于一个...列,我该使用什么...

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

感谢您的帮助!
6个回答

5
作为一条通用规则,即使数据本身是数值型的,如果我不打算对它进行算术操作,我也不会将任何内容定义为“数字”字段。
您的“电话”字段就是一个例子。我会将其定义为 varchar 类型。

2

Varchar(可变字符),Integer(整数)和Bit(比特)占据了我日常使用的99%。


2
问题实际上取决于您的要求。我知道这不是一个特别令人满意的答案,但这是真的。
nchar数据类型用于Unicode数据,因此,如果您需要在数据中使用Unicode字符集,则应该使用这些类型,而不是它们的“非n”类比。nchar和char类型是固定长度的,而nvarchar和varchar类型可以具有可变长度,这将影响磁盘和内存中列的大小。通常,我会建议使用使用最少磁盘空间但适合您需求的类型。 此页面链接到SQL Server 2005的Microsoft描述这些数据类型的页面,其中许多页面为何时使用哪种类型提供了指针。您可能对此页面关于char和varchar类型特别感兴趣。

1

1

N* 数据类型(NVARCHAR、NCHAR、NTEXT)用于 Unicode 字符串。它们占用的空间是其“普通”对应项(VARCHAR、CHAR、TEXT)的两倍,但它们可以存储 Unicode 而无需转换和可能的信息损失。

TEXT 数据类型可以存储几乎无限量的数据,但它们的性能不如 CHAR 数据类型,因为它们存储在记录之外。

VARCHAR 数据类型是可变长度的。它们不会在末尾填充空格,但它们的 CHAR 对应项会(一个 CHAR(20) 总是二十个字符长,即使它只包含 5 个字母。剩下的 15 个字符将是空格)。

二进制数据类型用于二进制数据,您可以将任何内容存储到其中(图像是主要示例)。


0

其他人已经给出了很好的一般性答案,但我想补充一个重要的点:当使用 VARCHAR()(我建议使用这种类型的字段)时,请确保使用足够大的长度来容纳任何合理的值。例如,对于姓名、电子邮件地址、域名、城市名称等,我通常声明 VARCHAR(100),对于 URL 或街道地址,我会声明 VARCHAR(200)

这比你通常需要的要多。实际上,对于这些值,30 个字符就足够了(除了全名,但是一个好的数据库应该始终将名字和姓氏分开存储),但这比在以后某个时候更改数据类型要好。指定比必需长度更高的 VARCHAR 的成本非常低,但请注意,VARCHAR(MAX)TEXT 需要额外的开销,因此只有在必要时才使用它们。

这是一篇关于编程的文章,指出了一种情况,即过长的 VARCHAR 可能会影响性能: 在MySQL表中VARCHAR长度的重要性。这表明,所有事物都有一个代价,尽管通常我仍然更喜欢长的 VARCHAR

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接