嗨,我想知道何时应该使用不同的数据类型。例如,在我的表中,我如何决定使用哪种类型:nvarchar、nchar、varchar、varbinary等。
举例:
对于一个...列,我该使用什么...
Phone number,
Address,
First Name, Last Name,
Email,
ID number,
etc.
感谢您的帮助!
Varchar(可变字符),Integer(整数)和Bit(比特)占据了我日常使用的99%。
以 n 开头的数据类型表示它可以用于 Unicode 字符,例如 nVarchar。
选择整数也是非常有趣的。
我最常用的数据类型是varchar....
N* 数据类型(NVARCHAR、NCHAR、NTEXT)用于 Unicode 字符串。它们占用的空间是其“普通”对应项(VARCHAR、CHAR、TEXT)的两倍,但它们可以存储 Unicode 而无需转换和可能的信息损失。
TEXT 数据类型可以存储几乎无限量的数据,但它们的性能不如 CHAR 数据类型,因为它们存储在记录之外。
VARCHAR 数据类型是可变长度的。它们不会在末尾填充空格,但它们的 CHAR 对应项会(一个 CHAR(20) 总是二十个字符长,即使它只包含 5 个字母。剩下的 15 个字符将是空格)。
二进制数据类型用于二进制数据,您可以将任何内容存储到其中(图像是主要示例)。
其他人已经给出了很好的一般性答案,但我想补充一个重要的点:当使用 VARCHAR()
(我建议使用这种类型的字段)时,请确保使用足够大的长度来容纳任何合理的值。例如,对于姓名、电子邮件地址、域名、城市名称等,我通常声明 VARCHAR(100)
,对于 URL 或街道地址,我会声明 VARCHAR(200)
。
这比你通常需要的要多。实际上,对于这些值,30 个字符就足够了(除了全名,但是一个好的数据库应该始终将名字和姓氏分开存储),但这比在以后某个时候更改数据类型要好。指定比必需长度更高的 VARCHAR
的成本非常低,但请注意,VARCHAR(MAX)
和 TEXT
需要额外的开销,因此只有在必要时才使用它们。
VARCHAR
可能会影响性能: 在MySQL表中VARCHAR长度的重要性。这表明,所有事物都有一个代价,尽管通常我仍然更喜欢长的 VARCHAR
。