【问题标题】:SQL When to use Which Data TypeSQL 何时使用哪种数据类型
【发布时间】:2010-10-10 09:03:22
【问题描述】:

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

例子:

我会为 ... 列使用什么:

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

感谢您的帮助!

【问题讨论】:

    标签: sql types


    【解决方案1】:

    作为一般规则,如果我不打算对其进行算术运算,我不会将任何内容定义为“数字”字段,即使数据本身是数字。

    您的“电话”字段就是一个例子。我将其定义为 varchar。

    【讨论】:

      【解决方案2】:

      Varchar、Integer 和 Bit 覆盖了我 99% 的日常使用。

      【讨论】:

        【解决方案3】:

        这个问题真的取决于你的要求。我知道这不是一个特别令人满意的答案,但确实如此。

        n..char 数据类型用于 Unicode 数据,因此如果您需要在数据中使用 unicode 字符集,您应该使用这些类型,而不是使用它们的“非 n”类似物。 nchar 和 char 类型是固定长度的,而 nvarchar 和 varchar 类型可以有可变长度,这将影响磁盘和内存中列的大小。一般来说,我会说使用磁盘空间最少但适合您需要的类型。

        This page 具有指向 Microsoft 对 SQL Server 2005 的这些数据类型的描述的链接,其中许多提供了何时使用哪种类型的指针。您可能对 this page 对 char 和 varchar 类型特别感兴趣。

        【讨论】:

          【解决方案4】:

          以 n 开头的数据类型意味着它可以用于 unicode 字符...例如 nVarchar。

          整数的选择也很有趣。

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

          我最常用的数据类型是 varchar....

          【讨论】:

            【解决方案5】:

            N* 数据类型(NVARCHAR、NCHAR、NTEXT)用于 Unicode 字符串。它们占用的空间是其“普通”挂件(VARCHAR、CHAR、TEXT)所需空间的两倍,但它们可以存储 Unicode 而无需转换并且可能会丢失保真度。

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

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

            二进制数据类型适用于二进制数据,无论您想在其中存储什么(图像是主要示例)。

            【讨论】:

              【解决方案6】:

              其他人给出了很好的一般性答案,但我要补充一点:在使用 VARCHAR()s 时(我会推荐用于这些类型的字段),请务必使用足够大的长度以进行任何合理的操作价值。例如,我通常声明 VARCHAR(100) 代表姓名、电子邮件地址、域名、城市名称等,而 VARCHAR(200) 代表 URL 或街道地址。

              这超出了您通常的需要。事实上,对于几乎所有这些值,30 个字符就足够了(除了全名,但一个好的数据库应该总是分开存储名字和姓氏),但总比将来必须更改数据类型要好。为VARCHAR 指定一个高于必要的长度几乎没有成本,但请注意VARCHAR(MAX)TEXT 确实需要大量开销,因此仅在必要时使用它们。

              这里有一篇文章指出了一个超过必要的VARCHAR可能损害性能的情况:Importance of varchar length in MySQL table。这表明一切都是有代价的,但总的来说,我仍然倾向于长期VARCHARs。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2011-05-27
                • 1970-01-01
                • 2018-04-30
                • 2020-12-06
                • 2011-12-17
                • 1970-01-01
                • 2012-11-29
                • 2023-01-28
                相关资源
                最近更新 更多